mysql中的多表查詢基礎

2021-07-25 03:17:29 字數 1577 閱讀 8417

1:多表查詢:

員工表(employee):(deptid:部門號)

idname

deptid1張三

42李四5

3王五44

陳六5部門表(dept):

idname

4軟體開發部

5軟體維護部

6秘書部

需求:員工及其部門

select e.name, d.name  from employee e,dept d    //這樣查出的是錯誤的,這樣會產生笛卡爾乘積每乙個e.name 將對應d.name 中的3個,共有12條;

多表查詢的步驟:

1)確定我們要查詢相關的那些表

2)確定要查詢那些字段

3)確定查詢的鏈結條件

需求:員工及其部門

select e.name,d.name  from employee  e, deptid  d 

where e.deptid=d.id;

select e.name,d.name

from  employee  e

inner join dept  d

on e.deptid=d.id;

需求:查詢部門及其部門的員工:(部門全部都要顯示)

預期效果:

軟體開發部

張三軟體開發部

王五軟體維護部

李四軟體維護部

陳六秘書部

null

select d.name, e.name

from dept  d, employee  e

where d.id=e.deptid;(sql語句的效果圖如下:)

軟體開發部

張三軟體開發部

王五軟體維護部

李四軟體維護部

陳六 但內鏈結只顯示滿足鏈結條件的,秘書部不滿足就沒有顯示

但我們要左表的資料都要顯示(左外鏈結效果)

select d.name,e.name

from dept d

left outer join employee e

on d.id=e.deptid;  // 這才是正確的sql

select  e.name, d.name

from employee e

right outer join dept d

on e.deptid=d.id;

3)還有一種自連線,它的思想是我們去虛構一張表:

員工表(employee):

idname

bossid1張三

null2李四

1 這張表有員工2人,和他們的上司id,比如李四的上司就是員工為1的張三

需求:查出沒個員工及他們的上司

select e.name,b.name

from employee e

inner join employee b

on e.bossid=b.id(效果圖)

李四張三

select e.name, b.name

from employee e

left outer join employee b

on e.bossid =b.id

MySQL 多表查詢基礎

用於關聯兩個表查詢結果集 t01,t02 為兩張表表名 語法 select 欄位1,欄位n from 表1 where 條件 union distinct all select 欄位1,欄位n from 表2 where 條件 將表一結果 按照年齡倒序,表二結果按照年齡正序 limit 後面跟的資料...

Mysql 中多表查詢

即mysql中的交叉查詢 內連線 左連線 右連線 聯合查詢 全連線。交叉查詢 cross join 我們現在以這兩張表為例 剛剛我們是通過兩條語句來查詢的兩張表,現在我們嘗試著用一條語句來查詢這兩張表 上圖中,我們看到我們查詢出來了,語句中並沒有新增別的附加條件,仔細觀察課可以發現,這兩張表中的每一...

mysql多表 MySQL 多表查詢

多表查詢 select listname from tablename1,tablename2 笛卡爾積 多表查詢中,如果沒有連線條件,則會產生笛卡爾積 數學中的定義 假設集合a 集合b 則兩個集合的笛卡爾積為 實際執行環境下,應避免使用笛卡爾積 解決方案 在where加入有效的連線條件 等值連線 ...