SELECT语句(二)

本人花费半年的时间总结的《Java面试指南》已拿腾讯等大厂offer,已开源在github ,欢迎star!

转载声明:转载请注明出处,本技术博客是本人原创文章

本文GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了6个月总结的一线大厂Java面试总结,本人已拿大厂offer,欢迎star

原文链接:blog.ouyangsihai.cn >> SELECT语句(二)

点击蓝字“程序员考拉”欢迎关注!

SELECT语句(二)

一.SELECT子句和聚合函数

1.选取所有列


SELECT * FROM TABELNAME

 当一个FROM子句包含两个表或多个表,需要在*符号前使用一个表指定:


SELECT PENALITIES.* FROM PENALITIES INNER JOIN TEAMS ON PENALITIES.PLAYERNO=TEAMS.PLAYERNO

 

2.SELECT子句除了包含列名之外,也可以接受一个直接量,计算或一个标量函数的形式:

 

SELECT语句(二)

 

3.使用DISTINCT移除重复的行

SELECT DISTINCT 列名 FROM TABLENAME

 

SELECT语句(二)

 

DISTINCT 是针对整个行,而不是仅仅针对在语句中紧跟在DISTINCT后面的表达式。

SELECT语句(二)

 

聚合函数:

聚合函数会对当前所在表当做一个组进行统计,和分组一起使用,常用的聚合函数有以下几种。

 

COUNT()函数

SELECT语句(二)

 

在TOWN列中,有多少个不同的城市名:


SELECT COUNT(DISTINCT TOWN) FROM PLAYERS

 

获取从球员的姓氏的不同开头字母的个数:


SELECT COUNT(DISTINCT SUBSTR(NAME,1,1)) FROM PLAYERS

 

MAX和MIN函数:可以分别确定一列中的最大值和最小值。

 

SUM函数:计算的是一个特定列中的所有值的总和。

 

AVG函数:计算的是一个特定列中的值的算术平均值。

 

VARIANCE函数:计算特定的一列值的方差。

 

STDDEV函数:计算特定的一列值的标准差。

二.GROUP BY子句

1.对一列分组

将列按城市名分组:

 

SELECT语句(二)

 

对于每个城市,统计它在表cities中出现的次数:

SELECT语句(二)

 

2.对两个列或更多列进行分组

一个GROUP BY子句可以包含两个或更多列。

SELECT语句(二)

 3.带有排序的分组

结果按升序排列:ASC

结果按降序排列:DESC

 

SELECT语句(二)

 

4.GROUP_CONCAT函数

这个函数的值等于属于一个组的指定列的所有值。

SELECT语句(二)

 

一个GROUP_CONCAT函数的字符值的长度有限,默认值是1024,可通过“SET @@GROUP_CONCAT_MAX_LEN=数值”来设定。

 

5.使用ROLLUP的分组

使用于在GROUP BY子句中进行两次以上的分组。

 

有下面这样一张表:

SELECT语句(二)

 

可以按照部门和职位进行分组,计算相关部门相关职位的薪资的平均值:

SELECT语句(二)

 

如果希望再显示部门(dep)的员工薪资的平均值,就要用到带有WITH ROLLUP的GROUP BY子句:

SELECT语句(二) SELECT语句(二) SELECT语句(二)
本人花费半年的时间总结的《Java面试指南》已拿腾讯等大厂offer,已开源在github ,欢迎star!

转载声明:转载请注明出处,本技术博客是本人原创文章

本文GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了6个月总结的一线大厂Java面试总结,本人已拿大厂offer,欢迎star

原文链接:blog.ouyangsihai.cn >> SELECT语句(二)


  转载请注明: 好好学java SELECT语句(二)

 上一篇
MySQL查询和更新数据(二) MySQL查询和更新数据(二)
点击蓝字“程序员考拉”欢迎关注! 一.更新表 1.插入新的一行。 2.使用另一个表中的行来填充一个表(从一个表中向另一个表中复制数据)。     3.更新行中的值。     4.替代已有的行 使用
下一篇 
SELECT语句(三) SELECT语句(三)
点击蓝字“程序员考拉”欢迎关注! 一.HAVING子句 一个选择语句块的HAVING子句和WHERE子句的目的相同,WHERE子句用来在FROM子句处理之后选择一行,而HAVING子句用来在GROUP BY子句处理之后选择一行。一