測試基礎 MySQL多表查詢篇 2

2022-06-20 07:24:11 字數 1707 閱讀 3019

mysql 多表查詢

主鍵:唯一標識記錄的字段或組合,不與業務邏輯發生關係,只作為唯一標識

外來鍵:在主表與從表中,從表中與主表主鍵相連的字段就是外來鍵,作用為 與主鍵構成主外來鍵關係,使主從表相連。

規則:刪除主表時,必須先刪除從表

1. 建立主表主鍵

create table 表名(欄位名 字元型別 primary key)charset utf8;

2. 建立從表外來鍵

create table 表名(欄位名 字元型別, froeign key 外來鍵欄位名 references 主表表名(主表主鍵欄位名))charset utf8;

3. 刪除外來鍵

alter table 表名 drop foveign key 從表外來鍵名稱;

4. 檢視從表外來鍵名稱/檢視從表所有資訊

show create table 從表名稱; constraint後面的就是外來鍵名稱,如「student_idfk_1」

5. 刪除主鍵

alter table 主表表名 drop primary key;

6. 新增主鍵

alter table 表名 add primary key (欄位名);

7. 新增外來鍵

alter table 表名 add foreign key (欄位名) references 主表表名(主表主鍵欄位名);

8. 關聯表查詢(左外連線)

select * from 主表 left join 從表 on 主表.主鍵 = 從表.外來鍵;

ps:on 等同於 where,顯示左表全部資訊,右表只顯示可對應上的資訊,對應不上的字段顯示null

9. 關聯表查詢(右外連線)

select * from 主表 reght join 從表 on 主表.主鍵 = 從表.外來鍵;

ps:顯示右表全部資訊,左表顯示可以對應的資訊,其餘不顯示

10. 關聯表查詢(內連線)

select * from 主表 inner join 從表 where 主表.主鍵 = 從表.外來鍵;

11. 常用關聯查詢(查詢對應資訊)

這種查詢方式,先找到相同資料,如有其它條件用 and 連線

select * from 表1,表2 where 表1.欄位名 = 表2.欄位名;

巢狀查詢的方式,兩個表中的某個字段值相同,可用 = 或 in 連線

select * from 主表 where 主表.主鍵 = (select 從表中外鍵 from 從表 where 條件);

select * from 主表 where 主表.主鍵 in (select 從表中外鍵 from 從表 where 條件);

三表查詢:表1欄位名 與 表2欄位名 有相同資料, 表2欄位名 與 表3欄位名 有相同資料

select * from 表1 where 表1.欄位名 = (select 表2欄位名 from 表2 where 條件 in (select 表3欄位名 from 表3 where 條件));

12. 主鍵自增

create table 表名(欄位名 字段型別 primary key auto_increment)charset utf8;

ps:auto_increment 的用法依賴於主鍵,只能用於主鍵

例:主鍵設定自增後,新增資料時該字段可不用填寫: insert into 表名(欄位名1,欄位名2,......,欄位n) values (null,'張三',......,'一班')

MySQL基礎篇 09 多表查詢之聯合查詢

select 語句1 union union選項 select 語句2 查詢同一張表但是需求不同 如查詢學生資訊,男生生高公升序,女生公升高降序 create table student id int primary key auto increment,number varchar 20 not ...

MySQL 多表查詢基礎

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

mysql多表 MySQL 多表查詢

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