MySQL基礎-002-數據庫多表設計

數據庫多表設計


一、多表設計之外鍵約束
⒈ 約束
⑴ 約束的作用
約束是用來保證數據的完整性。
⑵ 單表約束
主鍵約束、唯一約束、非空約束。
⑶ 多表約束
外鍵約束:用來保證數據完整性(多表之間)。
⒉ 演示外鍵約束作用
⑴ 創建一個部門表

create table dept(
	did int primary key auto_increment,
	dname varchar(20)
);
insert into dept values (null,'市場部');
insert into dept values (null,'人事部');
insert into dept values (null,'教研部');

⑵ 創建一個員工表

create table employee(
	eid int primary key auto_increment,
	ename varchar(20),
	salary double,
	birthday date,
	sex varchar(10),
	dno int
);

insert into employee values (null,'張三',8000,'1988-09-01','男',3);
insert into employee values (null,'李四',9000,'1988-09-01','男',1);
insert into employee values (null,'王五',6000,'1988-09-01','男',2);
insert into employee values (null,'趙六',10000,'1988-09-01','男',3);
insert into employee values (null,'孫七',10000,'1988-09-01','男',1);

⑶ 刪除其中的某個部門(是否可以)
查看數據



向剛纔做的這兩個操作(插入一個沒有部門的員工,刪除一個帶有員工的部門)。這種情況都是不應該發生。這個時候需要在多表之間添加外鍵約束。
⒊ 添加外鍵約束
⑴ 在員工表上添加外鍵


⑵ 設置外鍵爲非空


二、 多表設計之表關係的介紹
⒈  一對多的關係
一對多的例子:一個部門下可以有多個員工,一個員工只能屬於某一個部門。
⒉  多對多的關係
多對多的例子:一個學生可以選擇多門課程,一門課程可以被多個學生選擇。
⒊ 一對一的關係
一對一的例子:一個公司可以有一個註冊地址,一個註冊地址只能對一個公司。


三、多表設計之一對多關係
 一對多關係的建表原則

在多的一方創建外鍵指向一的一方的主鍵


四、多表設計之多對多
⒈ 多對多的關係介紹
一個學生選擇多門課程,一門課程被多個學生所選擇
⒉ 多對多的建表的原則

需要創建中間表,中間表中至少兩個字段,分別作爲外鍵指向多對多雙方的主鍵


五、多表設計之一對一關係
⒈  一對一關係的介紹
一個公司可以對應一個註冊地址,一個註冊地址只能對應一個公司
⒉  一對一關係建表原則


六、多表設計之多表分析及創建
⒈ 多表的分析
需求:完成一個學校的選課系統,在選課系統中包含班級,學生和課程這些實體。
班級和學生之間是有關係存在:一個班級下包含多個學生,一個學生只能屬於某一個班級(一對多的關係)。
學生和課程之間是有關係存在:一個學生可以選擇多門課程,一門課程也可以被多個學生所選擇(多對多的關係)。
⒉ 多表的創建
創建表:


七、多表查詢之多表查詢的概述
多表查詢的分類
⒈ 連接查詢


⒉ 子查詢
子查詢:一個查詢語句條件需要依賴另一個查詢語句的結果。


八、多表查詢之數據準備
⒈ 班級表數據的準備


⒉ 學生表數據的準備


⒊ 課程表數據的準備


⒋ 學生選課表的準備


九、多表查詢之交叉連接
交叉連接
⒈ 使用cross join關鍵字


⒉ 不使用cross join關鍵字


十、多表查詢之內連接
⒈ 顯示內連接


⒉ 隱式內連接


十一、多表查詢之外連接
⒈ 左外連接


⒉ 右外連接


十二、多表查詢之內連接與外連接的區別
內連接和外連接的區別如下圖:


十三、多表查詢之子查詢
⒈ 帶in的子查詢
查詢學生生日在91年之後的班級的信息。


⒉ 帶exists的子查詢
查詢學生生日大於91年1月1日,如果記錄存在,前面的SQL語句就會執行。


⒊ 帶any的子查詢


⒋ 帶all的子查詢


十四、多表查詢之練習

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章