SQL必知必会(5)高级过滤数据
操作符(operator):用来连接或改变WHERE子句中的子句的关键字,也称为逻辑操作符(logical operator)。
AND操作符:要通过不止一个列进行过滤。
1 | SELECT prod_id, prod_price, prod_name |
prod_id | prod_price | prod_name |
---|---|---|
BNBG01 | 3.49 | Fish bean bag toy |
BNBG02 | 3.49 | Bird bean bag toy |
BNBG03 | 3.49 | Rabbit bean bag toy |
OR操作符:多个条件,满足任意一个即可。
1 | SELECT prod_name, prod_price |
prod_name | prod_price |
---|---|
8 inch teddy bear | 5.99 |
12 inch teddy bear | 8.99 |
18 inch teddy bear | 11.99 |
Fish bean bag toy | 3.49 |
Bird bean bag toy | 3.49 |
Rabbit bean bag toy | 3.49 |
Raggedy Ann | 4.99 |
求值顺序:
目标:想要列出价格为10美元及以上,且由DLL01或BRS01制造的所有产品。
1 | /*------------错误示例------------*/ |
prod_name | prod_price |
---|---|
18 inch teddy bear | 11.99 |
Fish bean bag toy | 3.49 |
Bird bean bag toy | 3.49 |
Rabbit bean bag toy | 3.49 |
Raggedy Ann | 4.99 |
SQL在处理OR操作符之前,优先处理AND操作符。
1 | /*------------正确示例------------*/ |
prod_name | prod_price |
---|---|
18 inch teddy bear | 11.99 |
圆括号比AND或OR具有更高的优先级,任何时候使用具有AND、OR的WHERE子句,都可以使用圆括号消除歧义。
IN操作符:用来指定条件范围,范围中的每个条件都可以进行匹配。
1 | SELECT prod_name, prod_price |
prod_name | prod_price |
---|---|
12 inch teddy bear | 8.99 |
18 inch teddy bear | 11.99 |
8 inch teddy bear | 5.99 |
Bird bean bag toy | 3.49 |
Fish bean bag toy | 3.49 |
Rabbit bean bag toy | 3.49 |
Raggedy Ann | 4.99 |
IN操作符与OR具有相同功能。
使用IN操作符的优点:
- 在有很多合法选项时,IN更加清楚直观;
- 在于其他AND、OR组合使用IN时,求值顺序易管理;
- IN比一组OR执行更快;
- IN可以包含其他SELECT语句,能够更动态的建立WHERE子句。
NOT操作符:WHERE子句中用来否定其后条件的关键字。
1 | SELECT prod_name |
prod_name |
---|
12 inch teddy bear |
18 inch teddy bear |
8 inch teddy bear |
King doll |
Queen doll |
+——————–+
上面的例子,也可以用
<>
来完成。