1、对于空值的判断
由于开发语言的习惯,很容易在写数据库的查询语言,判断空值时写成“列名=null”,而事实上,在数据库对空值进行判断用的是 “列名 is null” 或者 “列名 is not null”;
在SQL数据库中,NULL的含义是unknown,属于第三种逻辑值,它表示的意思是丢失或不想关的值。所以,它在与任何值进行逻辑运算时,最后的结果都是unknown,这样的话,它参与逻辑运算是没有意义的,所以,在数据库中不采用逻辑运算的方法对它进行判断,而是通过 “列名 is null” 或者 “列名 is not null”
2、在T-SQL语句中子查询返回的结果必须是集合,而不是经过排序后的数据
3、在执行T-SQL语句时,group by后的所有步骤所引用的列都必须是包含在其后子句中的列,或者以聚合函数的形式出现
4、Between…and…:在...到...之间
5、聚合函数一般会配合分组使用,但是不统计空值
6、in(A,B,C)表示A或B或C
7、EXISTS:其输入是一个子查询,通常会关联到外部查询;它根据子查询是否返回行,而决定返回的是TRUE或FALSE
--exists 筛选出来自spain且发生过订单的消费者
SELECT c.CustomerID,c.CompanyName
FROM Customers AS c
WHERE c.Country = N'Spain'
AND EXISTS (
SELECT *
FROM Orders AS o
WHERE o.CustomerID = c.CustomerID
)
--当EXISTS返回的是true时,便将数据插入这一步所构成的虚拟表中;返回的是false时,就将此条数据过滤掉