代码拉取完成,页面将自动刷新
同步操作将从 panglijing/DBA 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
RDBMS1_DAY02_知识点回顾
上午:
1 基础查询中的 筛选条件剩下的内容
is null
is not null
()
or ||
and &&
not !
regexp '^$|.*[]'
as concat(name,"-",uid) distinct
2 select 命令 通常是对表的数据做查询使用,也可以单独使用
select "hello" ;
select now();
select 2+3 ;
~~~~RDBMS1_DAY02
1 基础查询进阶
1.1 mysql常用函数的使用
字符函数 数值函数 日期时间函数 聚集函数 if() ifnull() case
+ - * / %
综合练习
1.2 查询结果处理
select 表头名 from 库.表 where 筛选条件 order by | group by |
having | limit ;
过滤 having 条件
在select命令查找到的数据里 再找符合条件的数据
select 表头名 from 库.表 where 筛选条件 having 筛选条件 ;
查询部门人数少于10人的部门名称及人数
1 先统计每个部门的总人数
2 再 找 部门人数少于10人的部门名称及人数
练习3 分钟
分页 limit
限制 select 显示的行数 默认显示查询结果的所有行
select 表头名 from 库.表 where 筛选条件 limit 数字; 仅输出查询结果的前几行 比如
limit 1 仅输出查询结果的第1行
limint 2 仅输出查询结果的前 2行
limint 10 仅输出查询结果的前10行
仅显示指定范围的行
select 表头名 from 库.表 where 筛选条件 limit 数字1 , 数字2;
数字1 表示显示的起始行 第1行用数字零表示
数字2 表示显示的总行数
例如
limit 0 , 3 从查询结果的第1行开始显示共显示3行
练习 :查看uid 号最大的用户名和UID
2 内连接查询
1 为什么要学习内连接查询
工作不是把所有数据都存放在一张表里 , 数据是存储在不同的表里的。
比如
部门表 存放部门信息 departments dept_id dept_name
部门编号 部门名称
员工表 存放员工信息 employees
工资表 存放工资信息 salary
2 内连接查询介绍
3 语法格式
SELECT 表头名列表 FROM 表1 INNER JOIN 表2 ON 连接条件
[WHERE 筛选条件] | [GROUP BY 分组] | [HAVING 分组后筛选]|[ORDER BY 排序列表] ;
内连接等值连接 查询例子
1) 查询每个员工所在的部门名
use tarnea;
select departments.dept_name , employees.name from employees inner join departments on departments.dept_id = employees.dept_id ;
2)查询员工编号8 的 员工所在部门的部门名称;
select departments.dept_name , employees.employee_id , employees.name from employees inner join departments on departments.dept_id = employees.dept_id
where employees.employee_id=8 ;
3)查询每个员工所有信息及所在的部门名称
给表名定义别名 ,定义别名后必须使用别名表示表名
4)查询每个员工姓名、部门编号、部门名称
select name , e.dept_id , dept_name from employees as e
inner join
departments as d
on
d.dept_id = e.dept_id ;
综合练习
1)查询11号员工的名字及2018年每个月总工资
select name , employees.employee_id , date ,basic+bonus from employees inner join salary on
employees.employee_id = salary.employee_id
where salary.employee_id=11 and year(date)=2018 ;
2) 查询每个员工2018年的总工资
select employees.employee_id, sum(basic+bonus) from employees inner join salary
on employees.employee_id=salary.employee_id
where year(date)=2018 group by employees.employee_id;
3)查询每个员工2018年的总工资,按总工资升序排列
select employees.employee_id, sum(basic+bonus) as total from employees inner join salary
on employees.employee_id=salary.employee_id
where year(date)=2018 group by employees.employee_id
order by total ;
4)查询2018年总工资大于30万的员工,按2018年总工资降序排列
mysql> select employees.employee_id, sum(basic+bonus) as total from employees inner join salary on employees.employee_id=salary.employee_id where year(date)=2018 group by employees.employee_id
having total > 300000
order by total desc ;
5) 输出2018年年薪大于30万 的 工资的最大值
select employees.employee_id, sum(basic+bonus) as total from employees inner join salary on employees.employee_id=salary.employee_id where year(date)=2018 group by employees.employee_id having total > 300000 order by total desc limit 1 ;
SELECT 表头名列表 FROM 表1 INNER JOIN 表2 ON 连接条件;
SELECT 表头名列表 FROM 表1 INNER JOIN 表2 ON 连接条件
[WHERE 筛选条件] | [GROUP BY 分组] | [HAVING 分组后筛选]|[ORDER BY 排序列表] | [ limit ]
内连接 非等值连接 练习
工资等级表
wage_grade
行号 等级 最低 最大值
id grade low high
1 A 5000 10000
2 B 10001 20000
1)查询2018年12月员工基本工资级别
2)查询2018年12月员工各基本工资级别的人数
3)查询2018年12月员工基本工资级别,员工需要显示姓名
select name , date , basic , grade
from
employees as e inner join salary as s
on
e.employee_id=s.employee_id inner join wage_grade as g
on
s.basic between g.low and g.high
where
year(date)=2018 and month(date)=12;
内连接之自连接
查询自己连接自己
通过定义别名的方式 把1张表当2张表使用
1) 输出员工的生日月份与入职月份相同的
自连接查询
select e.name,e.employee_id , em.employee_id , e.hire_date, em.birth_date
from employees as e inner join employees as em
on e.employee_id=em.employee_id
where
month(e.hire_date) = month(em.birth_date);
where 条件 查询
select name , birth_date , hire_date from employees
where month(birth_date) = month(hire_date) ;
3 外连接查询
左连接查询
右连接查询
全连接查询
(select查询命令) union (select查询命令) union (select查询命令 )
RDBMS1_DAY03
一、 子查询
也叫嵌套查询
查询命令select 里包含select命令 包含的命令 放在 ()
有点像 俄罗斯套娃
select 表头名 from 库 . 表名 where 筛选条件 having 过滤条件 ;
包含的select命令 可以出现在
where命令之后
1)查询运维部所有员工信息
select * from employees where dept_id = (select dept_id from departments where dept_name="运维部") ;
2)查询人事部2018年12月所有员工工资
先查 人事部的 员工编号
select employee_id from employees where dept_id =
(select dept_id from departments where dept_name="人事部") ;
把他作为 工资表的查询条件
select employee_id , basic , bonus from salary
where year(date)=2018 and month(date)=12
and employee_id in (
select employee_id from employees where dept_id =
(select dept_id from departments where dept_name="人事部") );
18:00 下课
having 命令之后
from命令之后
select 命令之后
二、 库管理
三、 表管理
四、 数据类型
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。