数据库的查询笔记
1、 在字符查询语句中:WHERE 语句中的筛选条件应该用LIKE,NOT LIKE 来表达是否匹配。如下所示;
SELECT
S.*
FROM
tb_Major AS S
WHERE
S.ShortName LIKE '公共事业管理% ';
一定不能表示成
SELECT
S.*
FROM
tb_Major AS S
WHERE
S.ShortName = '公共事业管理% ';
2、 用户查询的字符串本身就含有通配符%或者-时,需要使用ESCAPE’<换码字符>’短语对通配符进行转义。
如下代码例子所示:
SELECT
Cno,Ccredit
FROM
Course
WHERE Cname LIKE ‘DB\_Design’ ESCAPE’’;
3、为了进一步方便用户,SQL 语言提供了许多的聚集函数,主要有COUNT(*)、SUM、AVG、MAX、MIN 。在使用这些聚集函数时经常会出现以下情况
正确表达如下:
SELECT
S.*
,MIN(S.BirthDate)
FROM
vw_Student AS S
GROUP BY
S.BirthDate
4、在SQL 语言中WHERE子句是不能用聚集函数作为条件表达式的,聚集函数只能作用于SELECT子句和GROUP BY 的HAVING 语句。
例:错误表达方式
正确表达如下
5、ISNULL 函数,判断是否为空值
例:
语句执行后,若先修课程为空值,则输出结果‘无‘的数据类型与PreCourseNo 数据类型一致。
故因此可能会出现输出结果数据被截断或者出现空格情况,因此该函数在使用时常常连同着转变函数CONVERT 函数一起使用来转变输出结果的数据类型。
6、字符串拼接时若拼接的某一部分的取值为NULL,则拼接后的输出结果只会是NULL
拼接的前部分将被覆盖丢失。
例、C.No+C.Name+C.PrecourseNo
当C.PrecourseNo 取NULL时,拼接的最后输出结果为NULL。
修改后:C.No+C.Name+ RTRIM (ISNULL(C.PrecourseNo ,’’) 则避免了上述问题
7、SQL语言中IF不能用于语句内部,因为它控制的是整个流程,即该段语句是否执行。不能用来表达对语句中某一列的各种取值情况问题。
例
错误语句段:
SELECT
S.Name
,S.No
,IF….
正确语句段
SELECT
S.Name
,S.No
,CASE
8、查询数据库中所有表的各有多少条记录的代码片段如下所示:(以查询数据库EduBase中所有表各有多少条记录为例)
执行结果如下: