#建表
create
table dep(
id int
, name varchar(20
));create
table emp(
id int
primary
keyauto_increment
, name varchar(20
),*** enum
('male'
,'female'
)not
null
default
'male'
, age int
, dep_id int);
#插入資料
insert
into dep values
(200
,'技術'),
(201
,'人力資源'),
(202
,'銷售'),
(203
,'運營');
insert
into emp(name,***,age,dep_id)
values
('steven'
,'male',18
,200),
('sammi'
,'female',48
,201),
('kevin'
,'male',18
,201),
('nick'
,'male',28
,202),
('owen'
,'male',18
,203),
('jerry'
,'female',18
,204
);
# inner join 內連線
# 只拼接兩張表中公有的資料部分
select
*from emp inner
join dep on emp.dep_id = dep.id;
# where 寫法默寫是內聯接(等同於inner join)
select
*from emp,dep where emp.dep_id = dep.id;
# left join 左連線
# 左表所有的資料都展示出來 沒有對應的項就用null
select
*from emp left
join dep on emp.dep_id = dep.id;
# right join 右連線
# 右表所有的資料都展示出來 沒有對應的項就用null
select
*from emp right
join dep on emp.dep_id = dep.id;
# union 全連線 左右兩表所有的資料都展示出來
select
*from emp left
join dep on emp.dep_id = dep.id
union
select
*from emp right
join dep on emp.dep_id = dep.id;
將乙個查詢語句的結果當做另外乙個查詢語句的條件去用
# 查詢部門是技術或者人力資源的員工資訊
1 先獲取部門的id號
select id from dep where name=
'技術'
or name =
'人力資源'
;2 再去員工表裡面篩選出對應的員工
select name from emp where dep_id in
(200
,201);
3 最終結果
select
*from emp where dep_id in
(select id from dep where name=
'技術'
or name =
'人力資源'
);
MySql之多表查詢
select e.empname,d.deptname from emp e,dept d where e.deptno d.deptno select e.empname d.deptname from emp e inner join dept d on e.deptno d.deptno se...
MySQL之多表查詢
1合併結果集,使用關鍵字union和union all,其區別是union會去掉合併中重複的部分而union all不會去掉重複的列。使用這個關鍵字的要求結果姐的列和型別必須相同。定義兩個表如下所示 a和b,兩個表分別有乙個整型的id和乙個字串的name。1.1使用union all 1.2使用un...
MySQL之多表查詢
準備資料 user info表 create table user info id int 2 primary key,user name varchar 12 unique,password varchar 15 not null,real name varchar 8 not null,age ...