MySQL系列 六 之多表查詢

2021-10-19 10:27:38 字數 2028 閱讀 8271

#建表

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 ...