MySQL其他知識補充
阿新 • • 發佈:2022-02-23
多表查詢思路
# 資料準備
#建表
create table dep(
id int primary key auto_increment,
name varchar(20)
);
create table emp(
id int primary key auto_increment,
name varchar(20),
sex enum('male','female') not null default 'male',
age int,
dep_id int
);
#插入資料
insert into dep values
(200,'技術'),
(201,'人力資源'),
(202,'銷售'),
(203,'運營'),
(205,'保潔')
;
insert into emp(name,sex,age,dep_id) values
('jason','male',18,200),
('egon','female',48,201),
('kevin','male',18,201),
('nick','male',28,202),
('owen','male',18,203),
('jerry','female',18,204);
# 1.查詢jason所在的部門名稱
涉及到SQL查詢題目 一定要先明確到底需要幾張表
1.先查詢jason所在的部門編號
select dep_id from emp where name='jason';
2.根據部門編號查詢部門名稱
select name from dep where id=(select dep_id from emp where name='jason');
"""一條SQL語句的查詢結果既可以看成是一張表也可以看成是查詢條件"""
"""
多表查詢的思路
1.子查詢
將SQL語句查詢的結果括號括起來當做另外一條SQL語句的條件
大白話:就是我們日常生活中解決問題的方式>>>:分步操作
2.連表操作(重要)
先將需要使用到的表拼接成一張大表 之後基於單表查詢完成
inner join 內連線
left join 左連線
right join 右連線
union 全連線
"""
# 涉及到多表查詢的時候 欄位名稱容易衝突 需要使用表名點欄位的方式區分
# inner join:只拼接兩張表中共有的部分
select * from emp inner join dep on emp.dep_id = dep.id;
# left join:以左表為基準展示所有的內容 沒有的NULL填充
select * from emp left join dep on emp.dep_id = dep.id;
# right join:以右表為基準展示所有的內容 沒有的NULL填充
select