主鍵:一張從表中某個字段引用主表中的主鍵,維護多表之間的關係
從表:使用別人資料的表,被主表約束
級聯兩個表,乙個表的關鍵字段進行修改,另乙個表也會隨之修改
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 後面支援多種運算子,進行條件處理 ...