一、条件连接符
1) AND:a AND b,选取要a和b都为真的数据子集
2) OR:a OR b,选取要a或b都为真的数据子集
3) ():当条件为3个或以上时,常常需要用到,比如 a AND (b OR c)
4) NOT:NOT a,选区非a的数据子集,NOT 对开发者来说,增加了对条件评估的难度,一般尽量避免使用:
如:WHERE end_date IS NULL
AND NOT (title = "Teller" OR start_date < "2007-01-01")
可转换为:WHERE end_date IS NULL
AND title != "Teller" AND start_date > "2007-01-01"
二、条件类型
1) 相等条件,操作符 =,!=,<>
2) 范围条件,操作符 >,<, between,例如:
SELECT emp_id, fname, lname, start_date
FROM employee
WHERE start_date < "2007-01-01";
WHERE start_date BETWEEN "2005-01-01" AND "2007-01-01";
使用BETWEEN是,跟这BETWEEN后的一定要是范围的下限,AND后接范围上限,否则会是空集,这是因为BETWEEN a AND b等价于a<=x<=b
3) 成员条件,操作符 IN, NOT IN, 例如:
SELECT account_id, product_cd, cust_id, avail_balance
FROM account
WHERE product_cd IN ("CHK","SAV","CD","MM");
IN 后面也可以接子查询,如:
SELECT account_id, product_cd, cust_id, avail_balance
FROM account
WHERE product_cd IN (SELECT product_cd FROM product
WHERE product_type_cd = "ACCOUNT");
4) 匹配条件,通配符:"_"表示一个字符通配符,"%"表示任意个字符通配符,关键词LIKE
SELECT lname
FROM employee
WHERE lname LIKE "_a%e%"; #第二个字符为a,且后面有e字符
SELECT emp_id, fname, lname
FROM employee
WHERE lname LIKE "F%" OR lname LIKE "G%"; # 查找姓氏以F和G开头的员工姓名
三、NULL条件
注意:表达式为"IS NULL",不能写出"=NULL",两个NULL只也不能判断相等,如:
如果改成 = NULL, 则查询结果是空集但不会报错(不熟悉SQL常犯错误):
如果值中包括NULL, 则在使用"!="时要考虑到NULL值的数据,因为"!="只对有值的情况进行判断:
例如:查找上级ID不是6(Helen Fleming)的所有员工
SELECT emp_id, fname, lname, superior_emp_id
FROM employee
WHERE superior_emp_id != 6;
结果不包含superior_emp_id列为NULL的Michael Smith
SELECT emp_id, fname, lname, superior_emp_id
FROM employee
WHERE superior_emp_id != 6 OR superior_emp_id IS NULL;
End.
作者:毛飞龙
本文为转载分享,如果涉及作品、版权和其他问题,请联系我们第一时间删除(微信号:lovedata0520)
更多文章前往首页浏览http://www.itongji.cn/
- 我的微信公众号
- 微信扫一扫
- 我的微信公众号
- 微信扫一扫
评论