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 语句注意事项

  1. 就算你要查询的列不是你要排序的列,也是可以的,例如 : 查询prod_name 列,并按prod_price降序排列.
SELECT prod_name
FROM products 
ORDER BY prod_price DESC;
  1. 在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 ,但使用它有如下好处:

  1. 在使用长的合法的选项清单时,IN操作符的语法更清楚且更直观;
  2. 在使用IN操作符时,计算的次序更容易管理(因为使用的操作符更少);
  3. IN操作符一般比OR操作符清单执行更快;
  4. 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操作符取反.

全部评论

相关推荐

不愿透露姓名的神秘牛友
11-24 20:55
阿里国际 Java工程师 2.7k*16.0
程序员猪皮:没有超过3k的,不太好选。春招再看看
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务