mysql必知必会第五~七章笔记
这里写自定义目录标题
第五章:排序
ORDER BY子句
order by 子句的意思是对某列进行排序.
例1
SELECT prod_name
FROM products ORDER BY prod_name;
上面这条指令是按prod_name列升序排列,如果不指定排序方式,默认按升序排列.升序排列的关键字是ASC , 所以上面的查询语句也可以这样写:
SELECT prod_name
FROM products
ORDER BY prod_name ASC;
以上两种查询语句是等效的,都是在products表中查询prod_name列,并按prod_name升序排列.有升序,也得有降序,DESC就是降序排列的关键字,如下:
SELECT prod_name
FROM products
ORDER BY prod_name DESC;
上面的查询语句就是对prod_name列降序排列.ORDER BY 子句不光可以只对一个列进行排序,如果你要这样的需求:在products表中查询返回prod_name,prod_price列,并先按prod_name升序排序,再按prod_price降序排列,那么可以这样写SQL语句:
SELECT prod_name, prod_price
FROM products
ORDER BY prod_name, prod_price DESC;
OYDER BY 语句注意事项
- 就算你要查询的列不是你要排序的列,也是可以的,例如 : 查询prod_name 列,并按prod_price降序排列.
SELECT prod_name
FROM products
ORDER BY prod_price DESC;
- 在mysql中,数值,字符串,日期都可以进行排序
第六章:WHERE 过滤
WHERE子句
有时候,在对一张表做查询的时候,可能并不需要表的全部数据,而只想要查询出符合某些条件的数据,那么就可以使用WHERE 子句对表进行过滤.例如:
SELECT prod_name
FROM products
WHERE prod_price = 2.50;
以上查询语句的作用是在products表中查询prod_name列,只返回prod_price等于2.50的行.
过滤条件
过滤条件主要有:
符号 | 含以 |
---|---|
= | 等于 |
<> | 不等于 |
!= | 不等于 |
< | 小于 |
<= | 小于等于 |
> | 大于 |
>= | 大于等于 |
BETWEEN ... AND... | 在...到...之间 |
NULL值检查
表中的列有的可能为NULL值,如果要找出这些行,不能用: =NULL来过滤,而应该用: IS NULL来过滤.
这样是不对的:
SELECT prod_name
FROM products
WHERE prod_price = NULL;
正确的应该是这样:
SELECT prod_name
FROM products
WHERE prod_price IS NULL;
同样,不为NULL的不能用: != NULL 或 <> NULL 来过滤,要用: IS NOT NULL 来过滤.
注意
当WHERE 子句和ORDER BY 子句一起使用时,WHERE 子句在前面.
第七章 AND OR IN NOT
AND OR
在查询时,如果过滤的条件再强一些,就要使用到 AND 和 OR 了.例如:
查询products表中满足prod_price超过10的或者prod_price等于5的prod_name.
SELECT prod_name
FROM products
WHERE prod_price > 10 OR prod_price = 5;
符号 | 含义 |
---|---|
AND | 并且 |
OR | 或者 |
注意:
AND 的优先级要高于 OR 所以在必要的时候可以用"()"来改变优先级.
IN
SELECT prod_name
FROM products
WHERE prod_price IN (20,30,50);
上面语句的意思就是查询prod_price 是 20,30,50的prod_name.作用类似于OR ,但使用它有如下好处:
- 在使用长的合法的选项清单时,IN操作符的语法更清楚且更直观;
- 在使用IN操作符时,计算的次序更容易管理(因为使用的操作符更少);
- IN操作符一般比OR操作符清单执行更快;
- IN操作符最大的优点是可以包含SELECT 子句,可以更加动态的建立WHERE子句
NOT
WHERE子句中的NOT操作符只有一个作用,就是否定它后面跟的条件.例如:
SELECT prod_name
FROM products
WHERE prod_price NOT IN (20,30,50);
上面语句的意思就是查询prod_price 不是 20,30,50的prod_name
NOT 操作符支持对 IN,BETWEEN...AND...,EXISIS操作符取反.