数据库SQL语句学习笔记(4)-过滤数据
1.数据库检索要求满足特定搜索条件的行会被检索出来,搜索条件也被称作是过滤条件。
在SELECT语句中,数据更具WHERE子句进行搜索条件过滤,在FROM子句之后给出
SELECT prod_name,prod_price FROM Products WHERE prod_price=3.49;
输出:
分析:满足prod_price为3.49的值都会显示出来。
同时使用ORDER BY和WHERE子句时,ORDER BY位于WHERE之后
2.WHERE子句操作符
操作符 | = | <> | != | < | > | <= | >= | ! | !> | BETWEEN | IS NULL |
说明 | 等于 | 不等于 | 不等于 | 小于 | 大于 | 小于等于 | 大于等于 | 不小于 | 不大于 | 在指定值之间 | 为NULL |
BETWEEN 5 AND 10 在5和10之间
SELECT prod_name,prod_price FROM Products WHERE prod_price IS NULL;
这个语句返回所以没有价格的行,不是0,也不是空格
3.操作符:用来联结或改变WHERE子句中的子句的关键字,也称为逻辑操作符。
- AND操作符:
SELECT prod_id,prod_price,prod_name FROM Products WHERE vend_id='DLL01' AND prod_price <=4;
输出:
此SQL语句检索供应商DLLO1制造的且价格小于等于4美元的所以商品的编号,价格和名称。WHERE的两条子句由AND联结在一起,同时满足AND两边的条件的行会被检索出来。这条语句只有两个过滤条件,多个的话也用AND联结。
- OR操作符:
SELECT prod_id,prod_price,prod_name FROM Products WHERE vend_id='DLL01' OR prod_price <=4;
OR操作符表明两端检索条件只要有一个满足就会被检索出来。
AND和OR也可以一起使用,但是AND优先级比较高,为了是含义更加清楚,可以给条件加上园括号,例如:
SELECT prod_id,prod_price,prod_name FROM Products WHERE (vend_id='DLL01' OR vend_id='BRS01') AND prod_price >=10;
- IN操作符:用来指定条件范围,范围中的每个条件都可以进行匹配。IN取一组由逗号分开,括在圆括号中的合法值。
SELECT prod_id,prod_price,prod_name FROM Products WHERE vend_id IN ('DLL01','BRS01');
输出: - NOT操作符:否定其后所有的条件
SELECT prod_name FROM Products WHERE NOT vend_id='DLL01';
所有vend_id不是DLL01的行都被检索出来
4.通配符
如果不知道你要搜索的特定值,只知道一部分信息,就需要构造通配符搜索模式。
通配符:用来匹配值的一部分的特殊字符
搜索模式:由字面值、通配符或两者结合构成的搜索条件。
通配符本身实际上是SQL的WHERE子句中的特殊含义的字符,SQL支持几种通配符,使用LIKE操作符。只能用于文本字段,非文本字段不能使用通配符搜索。
- %通配符:表示任意字符出现任意次数,可以使0次,1次或多次,不能匹配NULL。例如为了找出所有以词Fish开头的产品,可以用
SELECT prod_id,prod_name FROM Products WHERE prod_name LIKE 'Fish%';
- _下划线通配符:匹配任意单个字符
- []方括号通配符:指定一个字符集,它必须匹配指定位置的一个字符。[JM]匹配J或者M,[^JM]匹配不是J和M的字符。