sql的排序检索与数据过滤
sql的排序检索与数据过滤
排序检索数据
EX1:对prod_name列以字母顺序排序数据
SELECT prod_name
FROM Products
ORDER BY prod_name;
EX2:对多列进行排序,按照sql语句的关键字先后来进行排序,当前一个关键字相同时,再按后面的关键字来排序:
SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY prod_price, prod_name;
或
SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY 2, 3;
output:
prod_id prod_price prod_name
| prod_id |prod_price|prod_name
|----------------|-------------------------------|-----------------------------|
BNBG02 3.4900 Bird bean bag toy
BNBG01 3.4900 Fish bean bag toy
BNBG03 3.4900 Rabbit bean bag toy
RGAN01 4.9900 Raggedy Ann
BR01 5.9900 8 inch teddy bear
BR02 8.9900 12 inch teddy bear
RYL01 9.4900 King doll
RYL02 9.4900 Queen doll
BR03 11.9900 18 inch teddy bear
tip:给出的第二个例子是表的列相对位置来进行排列
指定方向
EX3:数字降序索引
SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY prod_price DESC;
(多列版本):
SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY prod_price DESC, prod_name;
tips:
1.假如想在多列上进行降序,每一列都需要制定DESC关键字;
2.如果不采用DESC,默认ASC(升序);
3.遇到大小写字母的文本,一般不分先后;
过滤数字
EX4:索引结果必须是prod_price值为3.49的行。
SELECT prod_name, prod_price FROM Products WHERE prod_price = 3.49;
- 注意:同时使用ORDER BY和WHERE,必须使ORDER BY在WHERE之后。
WHERE子句操作符
对WHERE子句的操作符有如下:
- 注意:!=和<>基本一致。但ACCESS支持<>但不支持!=
下给出一些表述以及对应的子句操作符例子:
要求 | 操作 |
---|---|
5到10之间 | BETWEEN 5 AND 10 |
不包含值时 | WHERE XXX IS NULL |
更高级的数据过滤
- AND关键字和OR关键字,跟在WHERE后面,字如其意
- 为了避免操作符优先级产生的问题,可以用"()"对操作符进行分组消除歧义
要求 | WHERE子句 |
---|---|
v_id = 'a’同时prod_price小于等于4 | WHERE v_id = ‘a’ AND prod_price <= 4 |
v_id = 'a’或者prod_price小于等于4 | WHERE v_id = ‘a’ OR prod_price <= 4 |
v_id为DLL01或BRS01,且price大于等于10 | WHERE (v_id = ‘DLL01’ OR v_id = ‘BRS01’) AND prod_price >= 10; |
关于NOT关键字
EX5:选取vend_id 不是 'DLL01’的prod_name
SELECT prod_name
FROM Products
WHERE NOT vend_id = ‘DLL01’
ORDER BY prod_name;
tip:同样的逻辑,使用<>也可以办到