5.1 外鍵 比如說有兩個數據表,分別是學生信息表student和年級表grade。在student表中有存儲學生年級的欄位gid(外鍵),在grade表也有存儲學生年級的欄位id(主鍵),student表和grade表之間通過學生年級建立關聯,兩者是主從關係。在這種關聯關係中: ①學生表stude ...
5.1 外鍵
比如說有兩個數據表,分別是學生信息表student和年級表grade。在student表中有存儲學生年級的欄位gid(外鍵),在grade表也有存儲學生年級的欄位id(主鍵),student表和grade表之間通過學生年級建立關聯,兩者是主從關係。在這種關聯關係中:
①學生表student是引用表;------------------------------------------------->引用表是從表
②年級表grade是被引用表;------------------------------------------------->被引用表是主表
③引用表中引用欄位gid要引入grade表中id欄位,所以是外鍵;
④被引用表中的欄位id,是grade中的主鍵或者對其設置唯一性約束;
⑤引入外鍵後,外鍵列只能插入參照列存在的值,參照列被參照的值不能被刪除。這就保證了數據的參照完整性;
為表添加外鍵約束
alter table 引用表名 add constraint 外鍵名 foreign key (外鍵欄位名) references 被引用表名(主鍵欄位名)
刪除外鍵約束
alter table 引用表名 drop foreign key 外鍵名
註意:
①建立外鍵的表必須是InnoDB型,不能是臨時表。因為在MySQL中只有InnoDB類型的表才支持外鍵。
②定義外鍵名時,不能加引號。
5.2 連接查詢
①內連接查詢
select 表1.欄位1,表2.欄位2,...,表1.欄位n from 表1 [inner] join 表2 on 表1和表2的約束條件 [where條件];
②內連接的類似方法查詢
select 表1.欄位1,表2.欄位2,...,表1.欄位n from 表1,表2 where條件;
註意:使用where子句的查詢結果與使用inner join的查詢結果是一致的,但是inner join是內連接語句,where是條件判斷語句,在where語句後可以直接添加其他條件,而inner join語句不可以。
③左連接查詢
select 表1.欄位1,表2.欄位2,...,表1.欄位n from 表1 left join 表2 on 表1和表2的約束條件 [where條件];
④右連接查詢
select 表1.欄位1,表2.欄位2,...,表1.欄位n from 表1 right join 表2 on 表1和表2的約束條件 [where條件];
註意:
1、左連接的結果包括left join 子句中指定的左表的所有記錄,以及所有滿足連接條件的記錄。如果左表的某條記錄在右表中不存在,則在右表中顯示為空;
2、同理,右連接的結果包括right join 子句中指定的右表的所有記錄,以及所有滿足連接條件的記錄。如果右表的某條記錄在左表中不存在,則在左表中顯示為空;
5.3 子查詢
子查詢就是一個查詢的結果作為另外一個查詢的條件使用。外層的查詢稱為父查詢,作為條件的查詢稱為子查詢(subquery),在查詢語句執行時,首先會執行子查詢中的語句,然後將返回結果作為外層查詢的過濾條件。
①帶IN關鍵字的子查詢
select * from 數據表 where 欄位名 in (select 欄位名 from 數據表 [where條件]);
②帶exists關鍵字的子查詢
select * from 數據表 where exists (select 欄位名 from 數據表 [where條件]);
註意:exists關鍵字後面的參數可以是任意一個子查詢,這個子查詢的作用相當於測試,不產生任何數據,只返回true或者false,當返回值為true時,外層查詢才會執行。
③帶any關鍵字的查詢
select * from 數據表 where 欄位名 > | < | >= | <= | != any(select 欄位名 from 數據表 [where條件]);
註意:any關鍵字標識滿足其中任意一個條件,它允許創建一個表達式對子查詢的返回值列表進行比較,只要滿足內層子查詢中的任意一個比較條件,就返回一個結果作為外層查詢條件。
④帶all關鍵字的查詢
select * from 數據表 where 欄位名 > | < | >= | <= | !=all (select 欄位名 from 數據表 [where條件]);
註意:all關鍵字與any有點類似,只不過帶all關鍵字的子查詢返回的結果需要同時滿足所有內層查詢條件。