外來鍵及連線查詢

2022-10-31 23:24:04 字數 2391 閱讀 1741

一、 外來鍵

外來鍵約束 foreign key

保持資料一致性,完整性

實現一對一,一對多關係

1、 父表(參照列的表)和子表(有外來鍵表)

2、 相同的儲存引擎,且只能為innodb

3、 外來鍵列和參照列必須具有相應的資料型別

4、 外來鍵列和參照列必須建立索引,如果外來鍵不存在索引,mysql將自動建立索引

5、 子表的外來鍵必須為父表的主鍵

6、 插入子表外來鍵列值必須為父表主鍵列中含有的值(空值除外);

7、建立foreign key(子表字段)references 父表(字段)

8、檢視索引語句:show indexes from pro3\g;

9、外建約束的參照操作

cascade:從父表刪除或者更新且自動刪除或更新子表中匹配的行

set null:從父表中刪除或者更新行,並設定子表中的外來鍵列為null,如果使用該選項,必須保證子表列沒有指定not null

restrict:拒絕對父表的刪除或者更新操作

no action:標準sql的關鍵字,在mysql中與restrict相同。

建立foreign key(子表字段)references 父表(字段) on delete/update cascade/set null;

父表:create table pro3(

p_id int auto_increment primary key,

p_name varchar(50)

)engine=innodb default charset=utf8;

子表1:create table user1(

u_id int auto_increment primary key,

u_name varchar(50) not null,

pro_id int,

foreign key(pro_id)references pro3(p_id) on delete cascade

)engine=innodb default charset=utf8;

子表2:create table user3(

u3_id int auto_increment primary key,

u3_name varchar(50) not null,

pro_id int,

foreign key(pro_id)references pro3(p_id) on delete set null

)engine=innodb default charset=utf8;

二、 連線查詢(多表查詢)

連線是把不同表的記錄連線到一起的方法

3.1內連線查詢(內查詢)

內連線是普遍的連線型別,包含自然連線和相等連線,但是要求是構成連線的表每個表都有共同的匹配列進行匹列,將不滿足條件的行進行排除;

最普遍的是相等連線:

查詢方法:where。。。and

inner join。。。on

1、select 欄位名稱 from 表1,表2 where 表1.某欄位=表2.某欄位 and表1.某欄位=表3. 某欄位

2、select 欄位名稱 from 表1 inner join 表2 on 表1.某欄位=表2.某欄位

select

-> from pro3 p,user4 u

-> where

3.2外連線

與內連線不同,外連線是指使用outer join 關鍵字將兩個表連線起來。外連線的生成結果不僅包含符合連線條件的行數,還包含左表或右表中所有的資料行,未匹配的資料預設為空

select 欄位名稱 from 表名1 left/right join 表名2 表名1.欄位=表名2.欄位

左外連線

以左表為基準進行查詢

select 欄位名稱 from 表名1 left join 表名2 表名1.欄位=表名2.欄位

select

-> from pro3 p left join user4 u on

右外連線

以右表為基準進行查詢

select 欄位名稱 from 表名1 right join 表名2 表名1.欄位=表名2.欄位

select

-> from pro3 p right join user4 u on

如何判定左/右表:先輸入的是左表,後輸入的為右表

作業題:建立班級表 id 班級名稱,班主任****

學生資訊表 id 姓名生日****出生地班級id 學號

學生成績表 id 學生姓名學生學號語文成績,數學成績英語成績

要求一:主鍵,外來鍵的設定,進行父表刪除,子表更新的操作

要求二:查詢操作:學生姓名,學生,學號,學生****,老師姓名,老師****,語、數、英成績總分

內查詢,左查詢,右查詢

增加內容:內查詢

資料庫SQL實驗報告 互動式查詢 連線查詢及巢狀查詢

要求 1.報告格式和內容要求 a.內容和格式整齊。大標題採用黑體四號字加粗,小標題採用小四號字加粗。正文採用五號宋體,單倍行距。b.貼圖時請剪裁到適當大小,要保證列印時可以看清,但也不要太大以免 越界 c.不要在報告中寫與實驗無關的話,內容要有條理 完整 並能突出重點,要將遇到的主要問題說明。2.提...

主鍵外來鍵索引的設定參考

一 什麼是主鍵 外來鍵 關係型資料庫中的一條記錄中有若干個屬性,若其中某乙個屬性組 注意是組 能唯一標識一條記錄,該屬性組就可以成為乙個主鍵 比如 學生表 學號,姓名,性別,班級 其中每個學生的學號是唯一的,學號就是乙個主鍵 課程表 課程編號,課程名,學分 其中課程編號是唯一的,課程編號就是乙個主鍵...

電路連線及分析

8 在如左下圖 a 所示的電路中,電流錶a1的示數是1 6a,電流錶a2的示數為0 8a,通過燈泡l3的電流如圖 b 所示。則 1 電流錶a3的示數是多少 2 通過燈泡l1和l2的電流各是多少?9 根據電路圖連線實物圖 1 2 13 用筆畫代替導線完成圖中電路的實物連線 要求 兩燈併聯,開關控制整個...