2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > MySQL数据库select语句6大子句(from where group by having order by limit

MySQL数据库select语句6大子句(from where group by having order by limit

时间:2024-03-06 10:00:08

相关推荐

MySQL数据库select语句6大子句(from where group by having order by  limit

MySQL中的select语句,有说5大子句,有说6大子句的,两者都没有问题,只不过把from接表名算上一个子句,where是条件查询,group by是分组查询,having是筛选,order by是排序,limit是分页,下面对这五个子句进行了详细的总结,结合一些栗子,方便快速上手。

这6个子句在我们进行查询操作时不一定同时出现,如果同时应用到了这6大子句,就一定要注意它们的先后顺序,不能随意调换,即编写顺序from->where ->group by->having ->order by ->limit。

简要介绍

测试表1: t_employee(员工表)

mysql> select * from t_employee;

±----±---------±-------±--------±-----------±-----------±-----±-------------±-----+

| eid | ename | gender | salary | birthday | hiredate | mid | native_place | did |

±----±---------±-------±--------±-----------±-----------±-----±-------------±-----+

| 1 | 林大侠 | 男 | 8000.46 | 1980-10-08 | -07-28 | 7 | 浙江 | 1 |

| 2 | 刘猪猪 | 男 | 7000.67 | 1984-08-03 | -07-03 | 7 | 河北 | 1 |

| 3 | 猪猪侠 | 男 | 8000 | 1985-04-09 | -07-01 | 7 | 陕西 | 1 |

| 4 | 李大象 | 男 | 9456 | 1986-09-07 | -08-08 | 22 | 黑龙江 | 3 |

| 5 | 周泡泡 | 男 | 8567 | 1978-08-02 | -01-01 | 7 | 吉林 | 1 |

| 6 | 斯瓦辛格 | 男 | 12000 | 1985-04-03 | -02-02 | 7 | 内蒙古 | 1 |

| 7 | 乐乐 | 男 | 15700 | 1982-08-02 | -03-03 | 7 | 新疆 | 1 |

| 8 | 周大龙 | 男 | 9000 | 1983-03-02 | -01-06 | 7 | 西藏 | 1 |

| 9 | 李峰 | 男 | 7897 | 1984-09-01 | -04-01 | 7 | 天津 | 1 |

| 10 | 韩噶 | 男 | 8789 | 1989-04-02 | -09-03 | 7 | 江苏 | 1 |

| 11 | 黄大大 | 男 | 15678 | 1983-05-07 | -04-04 | 7 | 安徽 | 1 |

| 12 | 范冰 | 女 | 8909 | 1986-04-02 | -02-08 | 7 | 贵州 | 1 |

| 13 | 李冰 | 女 | 18760 | 1987-04-09 | -06-07 | 7 | 四川 | 1 |

| 14 | 邻娜 | 女 | 18978 | 1990-01-01 | -09-05 | 14 | 成都 | 2 |

| 15 | 董号 | 女 | 8978 | 1987-05-05 | -08-04 | 14 | 云南 | 2 |

| 16 | 汤唯俄 | 女 | 9878 | 1988-03-06 | -03-06 | 14 | 宁夏 | 2 |

| 17 | 李诗圣 | 女 | 9000 | 1990-08-09 | -06-09 | 14 | 河南 | 2 |

| 18 | 凯记卡 | 女 | 16788 | 1978-09-04 | -04-05 | 18 | 福建 | 4 |

| 19 | 周积极 | 女 | 7876 | 1988-06-13 | -04-07 | 18 | 广西 | 4 |

| 20 | 张章子 | 女 | 15099 | 1989-12-11 | -08-04 | 20 | 广东 | 5 |

| 21 | 白百客 | 女 | 9787 | 1989-09-04 | -06-05 | 20 | 海南 | 5 |

| 22 | 刘化环 | 男 | 130990 | 1990-11-09 | -08-09 | 22 | 北京 | 3 |

| 23 | 陈龙 | 男 | 130990 | 1990-02-04 | -05-09 | 2 | 上海 | 1 |

| 24 | 迪丽热 | 女 | 10289 | 1990-04-01 | -02-06 | 18 | 北京 | 5 |

| 25 | 姚杰杰 | 女 | 9087 | 1989-08-01 | -09-01 | 18 | 北京 | 5 |

-----±---------±-------±--------±-----------±-----------±-----±-------------±-----+

25 rows in set (0.00 sec)

测试表2: t_department(部门表)

mysql> select * from t_department;

±----±-------±-----------------+

| did | dname | description |

±----±-------±-----------------+

| 1 | 开发部 | 负责后台开发工作 |

| 2 | 前端部 | 负责前端开发工作 |

| 3 | 运维部 | 负责服务运营工作 |

| 4 | 客户部 | 负责需求服务工作 |

| 5 | 测试部 | 负责测试工作 |

±----±-------±-----------------+

5 rows in set (0.00 sec)

1.group by分组查询

语法格式:

group by 字段名

group by 字段列表

(1)查询每一个部门的人数

mysql> SELECT did AS "did",COUNT(*) AS "count(*)"-> FROM t_employee GROUP BY did;+------+----------+| did | count(*) |+------+----------+| 1 | 13 || 2 | 4 || 3 | 2 || 4 | 2 || 5 | 4 |+------+----------+5 rows in set (0.00 sec)

(2)查询每一个部门的男女人数

mysql> SELECT did,gender,COUNT(*)-> FROM t_employee GROUP BY did,gender;+------+--------+----------+| did | gender | COUNT(*) |+------+--------+----------+| 1 | 女| 2 || 1 | 男 | 11 || 2 | 女| 4 || 3 | 男 | 2 || 4 | 女| 2 || 5 | 女| 4 |+------+--------+----------+6 rows in set (0.00 sec)

(3)统计每个部门,薪资高于13000的男员工的人数

mysql> SELECT did,COUNT(*) FROM t_employee-> WHERE salary >13000 AND gender ='男' GROUP BY did;+------+----------+| did | COUNT(*) |+------+----------+| 1 | 3 || 3 | 1 |+------+----------+2 rows in set (0.00 sec)

(4)统计每个部门,薪资高于13000的男员工的人数,并且显示部门名称

mysql> SELECT t_employee.did,dname,COUNT(*)-> FROM t_employee INNER JOIN t_department-> ON t_employee.did = t_department.`did`-> WHERE salary >13000 AND gender ='男'-> GROUP BY did;+------+--------+----------+| did | dname | COUNT(*) |+------+--------+----------+| 1 | 开发部 | 3 || 3 | 运维部| 1 |+------+--------+----------+2 rows in set (0.00 sec)

2.having筛选

having与where的区别;

①where后面不能跟分组函数(count()、avg()、sum()、min()、max()),但可以有单行函数,where的条件表示对数据库表的记录中进行筛选

②having后面可以跟分组函数,having的条件是在统计的结果中再次筛选

(1)查询每一个部门的人数,并且只显示部门人数大于3个

-- 报错:错误的使用分组函数mysql> select did,count(*) from t_employee-> where count(*)>3-> group by did;ERROR 1111 (HY000): Invalid use of group function

mysql> select did,count(*) from T_employee-> group by did-> having count(*)>3;+------+----------+| did | count(*) |+------+----------+| 1 | 13 || 2 | 4 || 5 | 4 |+------+----------+3 rows in set (0.00 sec)

(2)查询每个部门的女员工的人数,并且只显示女员工人数大于3个

mysql> select did,count(*) from t_employee-> where gender = '女'-> group by did-> having count(*)>3;+------+----------+| did | count(*) |+------+----------+| 2 | 4 || 5 | 4 |+------+----------+2 rows in set (0.00 sec)

(3)查询每个部门的女员工的人数,并且只显示女员工人数大于3个,并且显示部门名称

mysql> select t_employee.did,dname,count(*)-> from t_employee inner join t_department-> on t_employee.did = t_department.did-> where gender = '女'-> group by did-> having count(*)>3;+------+--------+----------+| did | dname | count(*) |+------+--------+----------+| 2 | 前端部| 4 || 5 | 测试部| 4 |+------+--------+----------+2 rows in set (0.00 sec)

(4)查询每个部门的男女员工的工资,并且只显示平均工资低于15000

mysql> select did,gender,avg(salary)-> from t_employee-> group by did,gender-> having avg(salary)<15000;+------+--------+-------------+| did | gender | avg(salary) |+------+--------+-------------+| 1 | 女|13834.5 || 2 | 女|11708.5 || 4 | 女| 12332 || 5 | 女|11065.5 |+------+--------+-------------+4 rows in set (0.00 sec)

(5)查询男女员工的最高工资,并且显示最高工资高于15000

mysql> select gender,max(salary)-> from t_employee-> group by gender-> having max(salary)>15000;+--------+-------------+| gender | max(salary) |+--------+-------------+| 女| 18978 || 男 |130990 |+--------+-------------+2 rows in set (0.00 sec)

(6)查询年龄大于35岁的男女员工的最低工资,并显示最低工资低于15000

mysql> select gender,min(salary)-> from t_employee-> where YEAR(CURRENT_DATE())-YEAR(birthday) >35-> having min(salary)<15000;+--------+-------------+| gender | min(salary) |+--------+-------------+| 男 |8000.46 |+--------+-------------+1 row in set (0.00 sec)

3.order by排序

order by 语法结构:

order by 字段名/表达式

无非就是两种:

①升序->从低到高(asc)【默认的排序方式】–可以写也可以不写

②降序->从高到低(desc)

(1)查询员工信息,按照薪水从高到低

mysql> select * from t_employee-> order by salary desc;

mysql> select * from t_employee

-> order by salary desc;

±----±---------±-------±--------±-----------±-----------±-----±-------------±-----+

| eid | ename | gender | salary | birthday | hiredate | mid | native_place | did |

±----±---------±-------±--------±-----------±-----------±-----±-------------±-----+

| 23 | 陈龙 | 男 | 130990 | 1990-02-04 | -05-09 | 2 | 上海 | 1 |

| 22 | 刘化环 | 男 | 130990 | 1990-11-09 | -08-09 | 22 | 北京 | 3 |

| 14 | 邻娜 | 女 | 18978 | 1990-01-01 | -09-05 | 14 | 成都 | 2 |

| 13 | 李冰 | 女 | 18760 | 1987-04-09 | -06-07 | 7 | 四川 | 1 |

| 18 | 凯记卡 | 女 | 16788 | 1978-09-04 | -04-05 | 18 | 福建 | 4 |

| 7 | 乐乐 | 男 | 15700 | 1982-08-02 | -03-03 | 7 | 新疆 | 1 |

| 11 | 黄大大 | 男 | 15678 | 1983-05-07 | -04-04 | 7 | 安徽 | 1 |

| 20 | 张章子 | 女 | 15099 | 1989-12-11 | -08-04 | 20 | 广东 | 5 |

| 6 | 斯瓦辛格 | 男 | 12000 | 1985-04-03 | -02-02 | 7 | 内蒙古 | 1 |

| 24 | 迪丽热 | 女 | 10289 | 1990-04-01 | -02-06 | 18 | 北京 | 5 |

| 16 | 汤唯俄 | 女 | 9878 | 1988-03-06 | -03-06 | 14 | 宁夏 | 2 |

| 21 | 白百客 | 女 | 9787 | 1989-09-04 | -06-05 | 20 | 海南 | 5 |

| 4 | 李大象 | 男 | 9456 | 1986-09-07 | -08-08 | 22 | 黑龙江 | 3 |

| 25 | 姚杰杰 | 女 | 9087 | 1989-08-01 | -09-01 | 18 | 北京 | 5 |

| 17 | 李诗圣 | 女 | 9000 | 1990-08-09 | -06-09 | 14 | 河南 | 2 |

| 8 | 周大龙 | 男 | 9000 | 1983-03-02 | -01-06 | 7 | 西藏 | 1 |

| 15 | 董号 | 女 | 8978 | 1987-05-05 | -08-04 | 14 | 云南 | 2 |

| 12 | 范冰 | 女 | 8909 | 1986-04-02 | -02-08 | 7 | 贵州 | 1 |

| 10 | 韩噶 | 男 | 8789 | 1989-04-02 | -09-03 | 7 | 江苏 | 1 |

| 5 | 周泡泡 | 男 | 8567 | 1978-08-02 | -01-01 | 7 | 吉林 | 1 |

| 1 | 林大侠 | 男 | 8000.46 | 1980-10-08 | -07-28 | 7 | 浙江 | 1 |

| 3 | 猪猪侠 | 男 | 8000 | 1985-04-09 | -07-01 | 7 | 陕西 | 1 |

| 9 | 李峰 | 男 | 7897 | 1984-09-01 | -04-01 | 7 | 天津 | 1 |

| 19 | 周积极 | 女 | 7876 | 1988-06-13 | -04-07 | 18 | 广西 | 4 |

| 2 | 刘猪猪 | 男 | 7000.67 | 1984-08-03 | -07-03 | 7 | 河北 | 1 |

±----±---------±-------±--------±-----------±-----------±-----±-------------±-----+

25 rows in set (0.00 sec)

(2)查询员工信息,按照薪水从高到低,如果薪水相同,按照编号从低到高

mysql> select * from t_employee order by salary desc,eid asc;

±----±---------±-------±--------±-----------±-----------±-----±-------------±-----+

| eid | ename | gender | salary | birthday | hiredate | mid | native_place | did |

±----±---------±-------±--------±-----------±-----------±-----±-------------±-----+

| 22 | 刘化环 | 男 | 130990 | 1990-11-09 | -08-09 | 22 | 北京 | 3 |

| 23 | 陈龙 | 男 | 130990 | 1990-02-04 | -05-09 | 2 | 上海 | 1 |

| 14 | 邻娜 | 女 | 18978 | 1990-01-01 | -09-05 | 14 | 成都 | 2 |

| 13 | 李冰 | 女 | 18760 | 1987-04-09 | -06-07 | 7 | 四川 | 1 |

| 18 | 凯记卡 | 女 | 16788 | 1978-09-04 | -04-05 | 18 | 福建 | 4 |

| 7 | 乐乐 | 男 | 15700 | 1982-08-02 | -03-03 | 7 | 新疆 | 1 |

| 11 | 黄大大 | 男 | 15678 | 1983-05-07 | -04-04 | 7 | 安徽 | 1 |

| 20 | 张章子 | 女 | 15099 | 1989-12-11 | -08-04 | 20 | 广东 | 5 |

| 6 | 斯瓦辛格 | 男 | 12000 | 1985-04-03 | -02-02 | 7 | 内蒙古 | 1 |

| 24 | 迪丽热 | 女 | 10289 | 1990-04-01 | -02-06 | 18 | 北京 | 5 |

| 16 | 汤唯俄 | 女 | 9878 | 1988-03-06 | -03-06 | 14 | 宁夏 | 2 |

| 21 | 白百客 | 女 | 9787 | 1989-09-04 | -06-05 | 20 | 海南 | 5 |

| 4 | 李大象 | 男 | 9456 | 1986-09-07 | -08-08 | 22 | 黑龙江 | 3 |

| 25 | 姚杰杰 | 女 | 9087 | 1989-08-01 | -09-01 | 18 | 北京 | 5 |

| 8 | 周大龙 | 男 | 9000 | 1983-03-02 | -01-06 | 7 | 西藏 | 1 |

| 17 | 李诗圣 | 女 | 9000 | 1990-08-09 | -06-09 | 14 | 河南 | 2 |

| 15 | 董号 | 女 | 8978 | 1987-05-05 | -08-04 | 14 | 云南 | 2 |

| 12 | 范冰 | 女 | 8909 | 1986-04-02 | -02-08 | 7 | 贵州 | 1 |

| 10 | 韩噶 | 男 | 8789 | 1989-04-02 | -09-03 | 7 | 江苏 | 1 |

| 5 | 周泡泡 | 男 | 8567 | 1978-08-02 | -01-01 | 7 | 吉林 | 1 |

| 1 | 林大侠 | 男 | 8000.46 | 1980-10-08 | -07-28 | 7 | 浙江 | 1 |

| 3 | 猪猪侠 | 男 | 8000 | 1985-04-09 | -07-01 | 7 | 陕西 | 1 |

| 9 | 李峰 | 男 | 7897 | 1984-09-01 | -04-01 | 7 | 天津 | 1 |

| 19 | 周积极 | 女 | 7876 | 1988-06-13 | -04-07 | 18 | 广西 | 4 |

| 2 | 刘猪猪 | 男 | 7000.67 | 1984-08-03 | -07-03 | 7 | 河北 | 1 |

±----±---------±-------±--------±-----------±-----------±-----±-------------±-----+

25 rows in set (0.00 sec)

(3)查询员工信息,按照性别从低到高,如果性别相同,按照薪水从高到低

mysql> select * from t_employee order by gender asc,salary desc;

±----±---------±-------±--------±-----------±-----------±-----±-------------±-----+

| eid | ename | gender | salary | birthday | hiredate | mid | native_place | did |

±----±---------±-------±--------±-----------±-----------±-----±-------------±-----+

| 14 | 邻娜 | 女 | 18978 | 1990-01-01 | -09-05 | 14 | 成都 | 2 |

| 13 | 李冰 | 女 | 18760 | 1987-04-09 | -06-07 | 7 | 四川 | 1 |

| 18 | 凯记卡 | 女 | 16788 | 1978-09-04 | -04-05 | 18 | 福建 | 4 |

| 20 | 张章子 | 女 | 15099 | 1989-12-11 | -08-04 | 20 | 广东 | 5 |

| 24 | 迪丽热 | 女 | 10289 | 1990-04-01 | -02-06 | 18 | 北京 | 5 |

| 16 | 汤唯俄 | 女 | 9878 | 1988-03-06 | -03-06 | 14 | 宁夏 | 2 |

| 21 | 白百客 | 女 | 9787 | 1989-09-04 | -06-05 | 20 | 海南 | 5 |

| 25 | 姚杰杰 | 女 | 9087 | 1989-08-01 | -09-01 | 18 | 北京 | 5 |

| 17 | 李诗圣 | 女 | 9000 | 1990-08-09 | -06-09 | 14 | 河南 | 2 |

| 15 | 董号 | 女 | 8978 | 1987-05-05 | -08-04 | 14 | 云南 | 2 |

| 12 | 范冰 | 女 | 8909 | 1986-04-02 | -02-08 | 7 | 贵州 | 1 |

| 19 | 周积极 | 女 | 7876 | 1988-06-13 | -04-07 | 18 | 广西 | 4 |

| 22 | 刘化环 | 男 | 130990 | 1990-11-09 | -08-09 | 22 | 北京 | 3 |

| 23 | 陈龙 | 男 | 130990 | 1990-02-04 | -05-09 | 2 | 上海 | 1 |

| 7 | 乐乐 | 男 | 15700 | 1982-08-02 | -03-03 | 7 | 新疆 | 1 |

| 11 | 黄大大 | 男 | 15678 | 1983-05-07 | -04-04 | 7 | 安徽 | 1 |

| 6 | 斯瓦辛格 | 男 | 12000 | 1985-04-03 | -02-02 | 7 | 内蒙古 | 1 |

| 4 | 李大象 | 男 | 9456 | 1986-09-07 | -08-08 | 22 | 黑龙江 | 3 |

| 8 | 周大龙 | 男 | 9000 | 1983-03-02 | -01-06 | 7 | 西藏 | 1 |

| 10 | 韩噶 | 男 | 8789 | 1989-04-02 | -09-03 | 7 | 江苏 | 1 |

| 5 | 周泡泡 | 男 | 8567 | 1978-08-02 | -01-01 | 7 | 吉林 | 1 |

| 1 | 林大侠 | 男 | 8000.46 | 1980-10-08 | -07-28 | 7 | 浙江 | 1 |

| 3 | 猪猪侠 | 男 | 8000 | 1985-04-09 | -07-01 | 7 | 陕西 | 1 |

| 9 | 李峰 | 男 | 7897 | 1984-09-01 | -04-01 | 7 | 天津 | 1 |

| 2 | 刘猪猪 | 男 | 7000.67 | 1984-08-03 | -07-03 | 7 | 河北 | 1 |

±----±---------±-------±--------±-----------±-----------±-----±-------------±-----+

25 rows in set (0.00 sec)

(4)查询年龄大于30岁,按照年龄从高到低排序

mysql> select * from t_employee-> where YEAR(CURRENT_DATE())-YEAR(birthday) >30-> order by YEAR(CURRENT_DATE())-YEAR(birthday) desc;

±----±---------±-------±--------±-----------±-----------±-----±-------------±-----+

| eid | ename | gender | salary | birthday | hiredate | mid | native_place | did |

±----±---------±-------±--------±-----------±-----------±-----±-------------±-----+

| 18 | 凯记卡 | 女 | 16788 | 1978-09-04 | -04-05 | 18 | 福建 | 4 |

| 5 | 周泡泡 | 男 | 8567 | 1978-08-02 | -01-01 | 7 | 吉林 | 1 |

| 1 | 林大侠 | 男 | 8000.46 | 1980-10-08 | -07-28 | 7 | 浙江 | 1 |

| 7 | 乐乐 | 男 | 15700 | 1982-08-02 | -03-03 | 7 | 新疆 | 1 |

| 11 | 黄大大 | 男 | 15678 | 1983-05-07 | -04-04 | 7 | 安徽 | 1 |

| 8 | 周大龙 | 男 | 9000 | 1983-03-02 | -01-06 | 7 | 西藏 | 1 |

| 9 | 李峰 | 男 | 7897 | 1984-09-01 | -04-01 | 7 | 天津 | 1 |

| 2 | 刘猪猪 | 男 | 7000.67 | 1984-08-03 | -07-03 | 7 | 河北 | 1 |

| 6 | 斯瓦辛格 | 男 | 12000 | 1985-04-03 | -02-02 | 7 | 内蒙古 | 1 |

| 3 | 猪猪侠 | 男 | 8000 | 1985-04-09 | -07-01 | 7 | 陕西 | 1 |

| 4 | 李大象 | 男 | 9456 | 1986-09-07 | -08-08 | 22 | 黑龙江 | 3 |

| 12 | 范冰 | 女 | 8909 | 1986-04-02 | -02-08 | 7 | 贵州 | 1 |

| 13 | 李冰 | 女 | 18760 | 1987-04-09 | -06-07 | 7 | 四川 | 1 |

| 15 | 董号 | 女 | 8978 | 1987-05-05 | -08-04 | 14 | 云南 | 2 |

| 16 | 汤唯俄 | 女 | 9878 | 1988-03-06 | -03-06 | 14 | 宁夏 | 2 |

| 19 | 周积极 | 女 | 7876 | 1988-06-13 | -04-07 | 18 | 广西 | 4 |

±----±---------±-------±--------±-----------±-----------±-----±-------------±-----+

16 rows in set (0.00 sec)

(5)查询员工编号,姓名,年龄,并且显示年龄大于30岁,按照年龄从高到低排序

mysql> SELECT eid,ename,YEAR(CURRENT_DATE()) - YEAR(birthday) >30 AS "年龄"-> FROM t_employee-> WHERE YEAR(CURRENT_DATE()) - YEAR(birthday) > 30-> ORDER BY 年龄 DESC;

±----±---------±-----+

| eid | ename | 年龄 |

±----±---------±-----+

| 1 | 林大侠 | 1 |

| 18 | 凯记卡 | 1 |

| 16 | 汤唯俄 | 1 |

| 15 | 董号 | 1 |

| 13 | 李冰 | 1 |

| 12 | 范冰 | 1 |

| 11 | 黄大大 | 1 |

| 9 | 李峰 | 1 |

| 8 | 周大龙 | 1 |

| 7 | 乐乐 | 1 |

| 6 | 斯瓦辛格 | 1 |

| 5 | 周泡泡 | 1 |

| 4 | 李大象 | 1 |

| 3 | 猪猪侠 | 1 |

| 2 | 刘猪猪 | 1 |

| 19 | 周积极 | 1 |

±----±---------±-----+

16 rows in set (0.00 sec)

(6)查询部门编号,部门的平均工资,按照部门的平均工资升序排列

mysql> SELECT did,AVG(salary)-> FROM t_employee-> GROUP BY did-> ORDER BY AVG(salary) DESC;

±-----±-------------------+

| did | AVG(salary) |

±-----±-------------------+

| 3 | 70223 |

| 1 | 19945.471538461537 |

| 4 | 12332 |

| 2 | 11708.5 |

| 5 | 11065.5 |

±-----±-------------------+

5 rows in set (0.00 sec)

▲工资小数点TRUNCATE()截取到两位,参考银行家算法,四舍五入round()并不符合需求!

SELECT did,TRUNCATE(AVG(salary),2)FROM t_employeeGROUP BY didORDER BY AVG(salary) DESC;

±-----±------------------------+

| did | TRUNCATE(AVG(salary),2) |

±-----±------------------------+

| 3 | 70223.00 |

| 1 | 19945.47 |

| 4 | 12332.00 |

| 2 | 11708.50 |

| 5 | 11065.50 |

±-----±------------------------+

5 rows in set (0.00 sec)

(7)查询部门编号,部门的男女人数,按照部门编号升序

SELECT did,gender,COUNT(*)FROM t_employeeGROUP BY did,genderORDER BY did;

±-----±-------±---------+

| did | gender | COUNT(*) |

±-----±-------±---------+

| 1 | 女 | 2 |

| 1 | 男 | 11 |

| 2 | 女 | 4 |

| 3 | 男 | 2 |

| 4 | 女 | 2 |

| 5 | 女 | 4 |

±-----±-------±---------+

6 rows in set (0.00 sec)

(8)查询部门的编号,部门的男女人数,按照人数升序

SELECT did,gender,COUNT(*)FROM t_employeeGROUP BY did,genderORDER BY COUNT(*)

±-----±-------±---------+

| did | gender | COUNT(*) |

±-----±-------±---------+

| 3 | 男 | 2 |

| 1 | 女 | 2 |

| 4 | 女 | 2 |

| 2 | 女 | 4 |

| 5 | 女 | 4 |

| 1 | 男 | 11 |

±-----±-------±---------+

6 rows in set (0.00 sec)

(9)查询部门的编号,部门名称,部门的男女人数,按照人数排序

SELECT t_employee.did,dname,gender,COUNT(*)FROM t_employee INNER JOIN t_departmentON t_employee.did = t_department.`did`GROUP BY did,genderORDER BY COUNT(*);

±-----±-------±-------±---------+

| did | dname | gender | COUNT(*) |

±-----±-------±-------±---------+

| 3 | 运维部 | 男 | 2 |

| 4 | 客户部 | 女 | 2 |

| 1 | 开发部 | 女 | 2 |

| 5 | 测试部 | 女 | 4 |

| 2 | 前端部 | 女 | 4 |

| 1 | 开发部 | 男 | 11 |

±-----±-------±-------±---------+

6 rows in set (0.00 sec)

(10)查询部门得编号,部门名称,部门的薪水高于15000的男女人数,按照人数排序

SELECT t_employee.did,dname,gender,COUNT(*)FROM t_employee INNER JOIN t_departmentON t_employee.did = t_department.`did`WHERE salary >15000GROUP BY did,genderORDER BY COUNT(*);

±-----±-------±-------±---------+

| did | dname | gender | COUNT(*) |

±-----±-------±-------±---------+

| 3 | 运维部 | 男 | 1 |

| 4 | 客户部 | 女 | 1 |

| 1 | 开发部 | 女 | 1 |

| 5 | 测试部 | 女 | 1 |

| 2 | 前端部 | 女 | 1 |

| 1 | 开发部 | 男 | 3 |

±-----±-------±-------±---------+

6 rows in set (0.00 sec)

(11)查询每一个部门的编号,部门名称,部门的薪水高于15000的男女人数,按照人数升序,只显示人数高于1个人

SELECT t_employee.did,dname,gender,COUNT(*)FROM t_employee INNER JOIN t_departmentON t_employee.did = t_department.`did`WHERE salary >15000GROUP BY did,genderHAVING COUNT(*)>1ORDER BY COUNT(*);

±-----±-------±-------±---------+

| did | dname | gender | COUNT(*) |

±-----±-------±-------±---------+

| 1 | 开发部 | 男 | 3 |

±-----±-------±-------±---------+

1 row in set (0.00 sec)

4…limit分页

limit m,n

①m:表示从第几行开始显示,*计算公式:m=(第几页-1)m

②n:表示每页表示的数据条数,最多n条(一页最多n条记录,不满n条的也在一页中显示)

(1)查询员工的信息,要求查询前10条的记录

SELECT * FROM t_employee LIMIT 0,10;

±----±---------±-------±--------±-----------±-----------±-----±-------------±-----+

| eid | ename | gender | salary | birthday | hiredate | mid | native_place | did |

±----±---------±-------±--------±-----------±-----------±-----±-------------±-----+

| 1 | 林大侠 | 男 | 8000.46 | 1980-10-08 | -07-28 | 7 | 浙江 | 1 |

| 2 | 刘猪猪 | 男 | 7000.67 | 1984-08-03 | -07-03 | 7 | 河北 | 1 |

| 3 | 猪猪侠 | 男 | 8000 | 1985-04-09 | -07-01 | 7 | 陕西 | 1 |

| 4 | 李大象 | 男 | 9456 | 1986-09-07 | -08-08 | 22 | 黑龙江 | 3 |

| 5 | 周泡泡 | 男 | 8567 | 1978-08-02 | -01-01 | 7 | 吉林 | 1 |

| 6 | 斯瓦辛格 | 男 | 12000 | 1985-04-03 | -02-02 | 7 | 内蒙古 | 1 |

| 7 | 乐乐 | 男 | 15700 | 1982-08-02 | -03-03 | 7 | 新疆 | 1 |

| 8 | 周大龙 | 男 | 9000 | 1983-03-02 | -01-06 | 7 | 西藏 | 1 |

| 9 | 李峰 | 男 | 7897 | 1984-09-01 | -04-01 | 7 | 天津 | 1 |

| 10 | 韩噶 | 男 | 8789 | 1989-04-02 | -09-03 | 7 | 江苏 | 1 |

±----±---------±-------±--------±-----------±-----------±-----±-------------±-----+

10 rows in set (0.00 sec)

(2)查询员工的信息,要求查询第二页,每页显示10条

SELECT * FROM t_employee LIMIT 10,10;

±----±-------±-------±-------±-----------±-----------±-----±-------------±-----+

| eid | ename | gender | salary | birthday | hiredate | mid | native_place | did |

±----±-------±-------±-------±-----------±-----------±-----±-------------±-----+

| 11 | 黄大大 | 男 | 15678 | 1983-05-07 | -04-04 | 7 | 安徽 | 1 |

| 12 | 范冰 | 女 | 8909 | 1986-04-02 | -02-08 | 7 | 贵州 | 1 |

| 13 | 李冰 | 女 | 18760 | 1987-04-09 | -06-07 | 7 | 四川 | 1 |

| 14 | 邻娜 | 女 | 18978 | 1990-01-01 | -09-05 | 14 | 成都 | 2 |

| 15 | 董号 | 女 | 8978 | 1987-05-05 | -08-04 | 14 | 云南 | 2 |

| 16 | 汤唯俄 | 女 | 9878 | 1988-03-06 | -03-06 | 14 | 宁夏 | 2 |

| 17 | 李诗圣 | 女 | 9000 | 1990-08-09 | -06-09 | 14 | 河南 | 2 |

| 18 | 凯记卡 | 女 | 16788 | 1978-09-04 | -04-05 | 18 | 福建 | 4 |

| 19 | 周积极 | 女 | 7876 | 1988-06-13 | -04-07 | 18 | 广西 | 4 |

| 20 | 张章子 | 女 | 15099 | 1989-12-11 | -08-04 | 20 | 广东 | 5 |

±----±-------±-------±-------±-----------±-----------±-----±-------------±-----+

10 rows in set (0.00 sec)

(3)查询员工的信息,薪水高于15000的,显示第2页,每页显示4条

SELECT * FROM t_employee WHERE salary >15000 LIMIT 4,4;

±----±-------±-------±-------±-----------±-----------±-----±-------------±-----+

| eid | ename | gender | salary | birthday | hiredate | mid | native_place | did |

±----±-------±-------±-------±-----------±-----------±-----±-------------±-----+

| 18 | 凯记卡 | 女 | 16788 | 1978-09-04 | -04-05 | 18 | 福建 | 4 |

| 20 | 张章子 | 女 | 15099 | 1989-12-11 | -08-04 | 20 | 广东 | 5 |

| 22 | 刘化环 | 男 | 130990 | 1990-11-09 | -08-09 | 22 | 北京 | 3 |

| 23 | 陈龙 | 男 | 130990 | 1990-02-04 | -05-09 | 2 | 上海 | 1 |

±----±-------±-------±-------±-----------±-----------±-----±-------------±-----+

4 rows in set (0.00 sec)

(4)查询每一个部门的人数信息,显示第1页,每页显示2条

SELECT did,COUNT(*) FROM t_employee GROUP BY did LIMIT 0,2;

±-----±---------+

| did | COUNT(*) |

±-----±---------+

| 1 | 13 |

| 2 | 4 |

±-----±---------+

2 rows in set (0.00 sec)

(5)查询每个部门的女员工的人数信息,显示第1页,每页显示2条

SELECT did,COUNT(*) FROM t_employee WHERE gender='女' GROUP BY did LIMIT 0,2;

±-----±---------+

| did | COUNT(*) |

±-----±---------+

| 1 | 2 |

| 2 | 4 |

±-----±---------+

2 rows in set (0.00 sec)

#轻松一刻:

☝上述分享来源个人总结,如果分享对您有帮忙,希望您积极转载;如果您有不同的见解,希望您积极留言,让我们一起探讨,您的鼓励将是我前进道路上一份助力,非常感谢!我会不定时更新相关技术动态,同时我也会不断完善自己,提升技术,希望与君同成长同进步!

☞本人博客:https://coding0110lin./  欢迎转载,一起技术交流吧!

MySQL数据库select语句6大子句(from where group by having order by limit )#经典员工 部门表案例语句练手!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。