MySQL 多表關聯查詢

2021-08-28 12:17:27 字數 1238 閱讀 3771

對多張具有一定關係的表中的資料進行查詢。

直接查詢

select * from emp, dept;

關聯查詢 查詢多張表中都有的資料

select * from emp, dept where emp.dept_id = dept.id;

子查詢子查詢通俗來講,就是查詢中有查詢。

1)單行子查詢 查詢結果為單個

select * from emp

where dept_id = (select id from dept where dname = '常委');

2)多行子查詢 查詢結果為多個

select * from emp

where dept_id in

(select id from dept where dname in ("班委","常委");

連線查詢

1)內連線查詢[擴充套件]

inner join與一般的連表查詢一致,即使用逗號隔開的查詢方式。

inner join(相等聯接或內聯接)

sql語句如下: 

select * from  a inner join  b on a.aid =b.bid

等同於以下sql句:

select *  from a,b where a.aid = b.bid

2)外連線查詢

特點:外連線有一主一次。

外聯接可以是左向外聯接、右向外聯接或完整外部聯接。

a) 左外連線查詢(left outer join -> left join)

左外連線左表為主,那麼左表中所有的記錄無論滿足不滿足條件,都列印出來。不滿足條件的值用null填補。

select * from dept d left join emp e on d.id = e.dept_id;

b) 右外連線查詢(right outer join -> right join) 

右外連線右表為主,那麼右表中所有的記錄無論滿足不滿足條件,都列印出來。不滿足條件的值用null填補。

select * from dept d right join emp e on d.id = e.dept_id;

3)全連線查詢[擴充套件]

所謂全連線其實就是左右連線的並集,即內連線的結果,加上左表和右表中不滿足條件的所有行。其實mysql並不認識全連線語法。此概念在其他資料庫中有的存在。

from 表1 full [outer] join 表2 on 連線條件;

4)擴充套件:hash查詢

多表關聯查詢

表別名 多個表之間存在同名的列,則必須使用表明來限制列的引用 內連線 自連線 內連線就是關聯的兩張或多張表中,根據關聯條件,顯示所有匹配的記錄,匹配不上的,不顯示 自連線,就是把一張表取兩個別名,當做兩張表來使用,自己和自己關聯。select columns list from table name...

MySQL 多表設計 關聯查詢

關聯查詢 外連線右外連線 交叉連線 q 為什麼需要多表關聯?a 資料冗餘 拆分 其中 還可以拆分 學號姓名 性別 100tom 男拆分為不可分解的原子值後 學號姓名 性別手機號 郵箱100 tom男 13619126257 163.com 訂單編號 數量商品編號 商品名稱 單價金額 1000 220...

JPA多表關聯查詢

作用 就是實現使用乙個實體類物件操作或者查詢多個表的資料。回顧 配置多表聯絡查詢必須有兩個步驟 1.在實體類裡面建立表與表之間的關係。2.配置關聯關係,jpa使用註解配置 需求 指定oid查詢客戶的資訊 公司資訊 同時也查詢關聯的聯絡人資訊 配置步驟 通過客戶找聯絡人,所以再customer實體類配...