Mysql学习 Part2.单表查询和分组查询

2.1 单表查询语句


SELECT 属性列表

       FROM 表名和视图列表

       [WHERE 条件表达式1]

       [GROUP BY属性名1[HAVING 条件表达式2]]

       [ORDER BY 属性名2[ASC|DESC]]


-- DESC表示降序,ASC表示升序,是默认参数,可以不写。

-- 如果有GROUP BY子句,就按照“属性名1”指定的字段进行分组;如果GROUP BY子句后带着HAVING关键字,那么只有满足“条件表达式2”中指定的条件的才能够输出。GROUP BY子句通常和COUNT()、SUM()等聚合函数一起使用。


-- WHERE子句常用的查询条件的很多种

查询条件

符合或关键字

比较

=、<、<=、>、>=、!=、<>、!>、!<

指定范围

BETWEEN AND、NOT BETWEEN AND

指定集合

IN、NOT IN

匹配字符

LIKE、NOT LIKE

是否为空值

IS NULL、IS NOT NULL

多个查询条件

AND、OR

例子:

1.使用IN关键字进行查询。SELECT语句的代码如下:

SELECT * FROM student WHERE stuid IN(2,3,4);

 

2. 使用BETWEEN AND关键字进行查询,查询条件是出生日期字段的取值从“1995-07-13~1995-07-15”。SELECT语句的代码如下:

SELECT * FROM student WHERE birthday BETWEEN ‘1995-07-13’ AND ‘1995-07-15’;

 

3. 使用BETWEEN AND关键字进行查询,查询条件是出生日期字段的取值从“1995-07-13~1995-07-15”。SELECT语句的代码如下:

SELECT * FROM student WHERE birthday BETWEEN ‘1995-07-13’ AND ‘1995-07-15’;

 

4. 查询电话号码为空的学生信息

SELECT * FROM student  WHERE phone IS NULL

 

5.排序 SELECT * FROM TABLE_NAME

[WHERE 条件]         

ORDER BY 字段1  [ASC/DESC] [,字段2  [ASC/DESC]…]  


2.2 分组查询

-- 常用聚合函数有:                                                              

SUM 求和 ,  AVG 求平均值 ,MAX和MIN 求最大值/最小值  , COUNT 计数

SELECT SUM(COLUMN)FROM TABLE_NAME [WHERE…]

SELECT AVG(COLUMN) FROM TABLE_NAME [WHERE…]

SELECT AVG(COLUMN) FROM TABLE_NAME [WHERE…]


SELECT COUNT(COLUMN/*)FROM TABLE_NAME [WHERE…]

COUNT函数的参数,除了可使用列名,还可以直接使用*通配符。


-- DISTINCT语句对重要数据进行过滤,去掉重复的数据

如 SELECT DISTINCT subid FROM score

经过DISTINCT语句对重复项进行过滤后,在得到的结果中数据完全相同的数据记录已补合并为一条。但DISTINCT有较大的限制,只能对多条完全相同的数据进行合并。除合并的指定列之外,无法获取到其它列数据

分组统计是使用GROUP BY关键字将查询结果按照某个字段或多个字段进行分组。分组时,指定字段中值相等的被认为是一组,在查询结果中的体现是指定字段相等的情况下,只保留一条记录。其语法结构如下:

SELECT   <字段列表>   [聚合函数]

FROM  表                                                 

[WHERE]  条件

GROUP BY  <字段列表>

分组统计可根据GROUP BY所指定的字段进行合并,全并时指定字段完全相同的记录被合并为一条。

例子:获取各个科目的平均成绩

SELECT *,AVG(score) FROM score GROUP BY subid

按照科目的编号分组后,每一个科目是一组,每组的平均的成绩


-- 使用HAVING对分组过滤

SELECT   <字段列表>   [聚合函数]

FROM  表

[WHERE]  条件

GROUP BY  <字段列表>

HAVING 条件        

总结一:HAVING 与 WHERE区别

相同点:HAVING和WHERE语句都是对查询结果进行筛选,其后都可跟条件判断。

不同点:1)HAVING只能用于GROUP BY后,WHERE不可用于GROUP BY后。

              2)HAVING 后可使用聚合函数,WHERE不可以

              3)作用时机不同,WHERE对表数据进行筛选,HAVING对分组后的数据进行筛选。

总结二:查询语句执行顺序:WHERE -> GROUP BY-> 聚合-> HAVING -> ORDER BY -> LIMIT



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猪突猛进!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值