1 Star 0 Fork 120

苏俊杰/DBA

forked from panglijing/DBA 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
RDBNS1_DAY03.txt 7.39 KB
一键复制 编辑 原始数据 按行查看 历史
panglijing 提交于 2023-02-22 10:03 . 333
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 命令之后
二、 库管理
三、 表管理
四、 数据类型
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/junjie-su/dba.git
git@gitee.com:junjie-su/dba.git
junjie-su
dba
DBA
master

搜索帮助