MySQL筆記 MySQL多表查詢

2021-10-22 17:18:15 字數 2808 閱讀 3330

主鍵:一張從表中某個字段引用主表中的主鍵,維護多表之間的關係

從表:使用別人資料的表,被主表約束

級聯兩個表,乙個表的關鍵字段進行修改,另乙個表也會隨之修改

constraint

[外來鍵約束名]

foreign

key(外來鍵字段)

references 主表名(字段)

--刪除外來鍵

alter

table 表名 drop

foreign

key 外鍵名;

--外來鍵的級聯

--級聯更新

onupdate

cascade

--級聯刪除

ondelete

cascade

--建立公司部門表

create

table dept(

id int

primary

keyauto_increment

,name varchar(20

));insert

into dept(name)

value

('開發部'),

('市場部'),

('財務部'),

('營銷部');

-- 建立員工表

create

table emp(

id int

primary

keyauto_increment

,name varchar(10

),gender varchar(10

),salary double

,

dept_id int

,join_date varchar(60));

(1)交叉連線查詢

特點:左表每條資料和右表每條資料一一匹配顯示出來,資料是無用的

格式: select

[欄位字段][*

]from a,b;

--查詢所有字段

(2)內連線

內連線是基於交叉連線的,顯示出來的內容為兩個表公共部分。內連線分為隱內連線,顯內連線

--隱內連線

select

[列名,列名][*

]from 表1,表2

where

--顯外連線【有inner關鍵字】

-- 例項

-- 隱內連線

select

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

-- 顯內連線

(3)外連線

內連線查詢出來的是公共部分,若要保證某張表全部資料情況下進行查詢,可以使用外連線。外連線分為左外連線和右外連線,左/右外連線是保證左/右表資料完全顯示

-- 左外連線

-- 語法:select [字段] [*] from a left [outer] join b on 條件

select

*from dept left

join emp on dept.id=emp.dept_id;

左外連線圖

右外連線圖

(5)子查詢

子查詢:乙個查詢至少包含兩個select 語句【巢狀】

子查詢的三個結果:

(1)乙個值;

-- 查詢工資最高的惹的資訊

(2)單列多行;

(3)多行多列

-- 查詢2023年入職員工資訊,包括部門名稱

--方式1

select emp.

*,dept.name 部門 from emp right

join dept on emp.dept_id=dept.id where emp.join_date>

'2016-1-1'

;--方式2

mysql得emp表查詢 MySQL 多表查詢

正文查詢的一些概念和操作進行學習。二話不說,直接建立乙個例子 create table dept id int primary key auto increment,name varchar 20 insert into dept values null,法師 null,坦克 劍客 戰士 creat...

mysql多張表join MySQL多表查詢優化

相信這內連線,左連線什麼的大家都比較熟悉了,當然還有左外連線什麼的,基本用不上我就不貼出來了。這圖只是讓大家回憶一下,各種連線查詢。然後要告訴大家的是,需要根據查詢的情況,想好使用哪種連線方式效率更高。在mysql 中,只有一種join 演算法,就是大名鼎鼎的nested loop join,他沒有...

MYSQL多表查詢筆記

1 等值連線查詢 查詢的結果為兩個表匹配到的資料 語法 select from 表1,表2 where 條件 and 條件 例子 select from 表1,表2,表3,where 表1.欄位1 表2.欄位1 and 表2.欄位2 表3.欄位2 ps where 後面支援多種運算子,進行條件處理 ...