本系列(MySQL学习笔记)是我基于B站上很是受欢迎的MySQL 基础+高级篇- 数据库 -sql -尚硅谷视频所作的笔记,方便你们学习和掌握MySQL。mysql
1.这个系列基本包含了视频中老师讲课的全部内容,包括知识点、案例、部分测试题。
2.所需的配套资料(来自B站评论区)web
@黎曼的猜测:
配套资料下载–>公众号公众号 DragonWell 回复:mysql 注意:是公众号!!是公众号!!是公众号,点那个 搜一搜 搜索!!!
不是私人号,是公众号!!! (能够直接在 搜一搜 搜索 dragonwell) 名称是:DragonWell公众号sql
3.SQLyog的安装(来自B站评论区)数据库
@江左萌粽猪 连接:https://pan.baidu.com/s/18PDjbqEeDSAjQM0VQye6og 提取码:qjuzide
MySQL学习笔记1:select查询(一) 基本用法
MySQL学习笔记2:select查询(二) 条件查询
MySQL学习笔记3:select查询(三) 排序查询
MySQL学习笔记4:常见函数(一) 单行函数
MySQL学习笔记5:常见函数(二) 分组函数
MySQL学习笔记6:group by 分组查询
MySQL学习笔记7:join链接查询(SQL 92标准)svg
group by子句将表中的数据分红若干组 语法 select 分组函数,列(要求出如今group by的后面) from 表名 【where 筛选条件】 group by 分组列表 【order by 子句】 注意 : 查询列表比较特殊,要求是分组函数和group by 后出现的字段 特色: 1,分组查询中的筛选条件能够分为两类 数据源 关键字 位置 分组前筛选 原始表 where group by 前面 分组后筛选 分组后的结果 having group by 后面 ①分组函数作条件确定放在having子句中 ②能用分组前筛选的,优先考虑分组前筛选 2.group by子句支持单个字段分组,多个字段分组(,隔开,无顺序要求),表达式函数 3.能够添加排序(排序放在整个分组查询的最后)
查询每一个部门的平均工资 SELECT AVG(salary),department_id FROM employees GROUP BY department_id;
查询每一个工种的最高工资 SELECT MAX(salary), job_id FROM employees GROUP BY job_id;
查询每一个位置上的部门个数 SELECT COUNT(*),location_id FROM departments GROUP BY location_id;
查询邮箱中包含a字符的,每一个部门的平均工资 SELECT AVG(salary),department_id FROM employees WHERE email LIKE '%a%' GROUP BY department_id ;
查询有奖金的每一个领导手下员工的最高工资` SELECT MAX(salary),manager_id FROM employees WHERE commission_pct IS NOT NULL GROUP BY manager_id;
查询哪一个部门的员工个数大于2 # ①查询每一个部门的员工个数 # ②根据1的结果筛选,查询 SELECT COUNT(*) ,department_id FROM employees GROUP BY department_id HAVING COUNT(*) > 2; # ②分组后的筛选,这个结果在原始表里没有的,用having
查询【每一个工种】【有奖金的员工】的【最高工资>12000】的【工种编号】和【最高工资】 # 【有奖金的员工】是员工表(原始表)里就有的,用where # 【每一个工种的最高工资>12000】是员工表(原始表)里没有的,用having SELECT MAX(salary),job_id FROM employees WHERE commission_pct IS NOT NULL GROUP BY job_id HAVING MAX(salary) > 12000;
查询【领导编号大于102】的【每一个领导】手下的【最低工资大于5000】的【领导编号】是哪一个,以及【其最低工资】 # 【领导编号大于102】 where # 【最低工资大于5000】 having SELECT MIN(salary),manager_id FROM employees WHERE manager_id>102 GROUP BY manager_id HAVING MIN(salary)>5000;
按【员工姓名长度】分组,查询【每一组员工个数】,筛选【员工个数大于5】 的有哪些 SELECT COUNT(*),LENGTH(last_name) FROM employees GROUP BY LENGTH(last_name) HAVING COUNT(*)>5; # 能够用别名
查询每一个部门每一个工种的员工平均工资 SELECT AVG(salary),department_id,job_id FROM employees GROUP BY department_id,job_id ;# 能够颠倒
查询每一个部门每一个工种的员工平均工资,按平均工资高低排序 SELECT AVG(salary),department_id,job_id FROM employees GROUP BY department_id,job_id ORDER BY AVG(salary) DESC;
查询各job_id 员工工资的最大值最小值平均值总和,并按job_id 升序 SELECT MAX(salary),MIN(salary),AVG(salary),SUM(salary),job_id FROM employees GROUP BY job_id ORDER BY job_id;
查询员工最高工资和最低工资的差距 SELECT MAX(salary)-MIN(salary) FROM employees;
查询全部部门的编号,员工数量和工资平均值,并按平均工资降序 SELECT department_id,COUNT(*),AVG(salary) FROM employees GROUP BY department_id ORDER BY AVG(salary) DESC;
选择具备各个job_id的员工人数 SELECT COUNT(*) ,job_id FROM employees GROUP BY job_id;