MySQL<多表操作>

來源:互聯網
上載者:User

標籤:嵌套   存在   sts   指定   拒絕   之間   表數   mysq   運算   

多表操作 外鍵

  什麼是外鍵

    外鍵是指引用另一個表中的一列或多列,被引用的列應該具有主鍵約束或唯一性限制式。

    外鍵用於建立和加強兩個表資料之間的連結。

  為表添加外鍵約束

    想要真正串連兩個表的資料,就需要為表添加外鍵約束。

    alter table 表名 add constraint FK_ID foreign key(外鍵欄位名) references外表表名(主鍵欄位名);

    (1)建立外鍵的表必須是InnoDB型不能是暫存資料表。因為MySQL中只有InnoDB型的表才支援外鍵。

    (2)定義外鍵名時,不能加引號。如:constraint ‘FK_ID‘ 或 constraint " FK_ID "都是錯誤的。

    建立外鍵是為了保證資料的完整和統一性,即主表和從表中對應的資料保持統一,可以在建立外鍵時添加ON DELETE或ON UPDATE子句。

      alter table 表名 add constraint FK_ID foreign key(外鍵欄位名) REFERENCES 外表表名(主鍵欄位名);

      [ON DELETE {CASCADE | SET NULL | NO ACTION | RESTRICT}]

      [ON UPDATE {CASCADE | SET NULL | NO ACTION | RESTRICT}]

 

      CASCADE:刪除包含於已刪除索引值有參照關係的所有記錄

      SET NULL:修改包含與已刪除索引值有參照關係的所有記錄,使用NULL值替換

      NO ACTION:不進行任何操作

      RESTRICT:拒絕主鍵刪除或修改外部索引鍵關聯列。

 

  刪除外鍵約束

    解除兩個表之間的關聯關係時,就需要刪除外鍵約束

    alter table 表名 drop foreign key 外鍵名;

多表建立原則

  一對多:

    在多的一方建立一個欄位作為外鍵指向一的一方的主鍵.

  多對多:

    建立一個中間表,中間表中至少兩個欄位,分別作為外鍵指向多對多雙方各自的主鍵

  一對一:

    唯一外鍵對應,主鍵對應

操作關係表

  關聯關係

    一對多(部門與員工) 、多對多(老師與學生)、 一對一(身份證)

  添加資料

  刪除資料

串連查詢

  交叉串連

    交叉串連返回的結果是被串連的兩個表中所有資料行的笛卡爾積即行數的乘積。

    SELECT * from 表1 CROSS JOIN 表2;

    在實際開發中這種業務需求是很少見,一般不會使用交叉串連,而是使用具體的條件對資料進行有目的的查詢。

  內串連

    內串連(INNER JOIN)又稱簡單串連或自然串連,內串連使用比較子對兩個表中的資料進行比較,列出與串連條件匹配的資料行,組合成新的記錄。

    是將多個表連成一個表的查詢。只有那些滿足查詢條件的列才會出現在最後的表中

SELECT 查詢欄位 FROM 表1 [INNER] JOIN 表2 ON 表1.關係欄位 = 表2.關係欄位

  隱氏內串連

    select * from A,B where 條件

  顯示內串連

    select * from A inner join B on 條件

  外串連

      左串連的結果包括LEFT JOIN子句中指定的左表的所有記錄,和所有滿足串連條件的記錄。如果左表的某條記錄在右表中不存在,則在右表中顯示為空白。

      右串連與左串連正好相反,返回右表中所有指定的記錄和所有滿足串連條件的記錄。如果右表的某條記錄在左表中沒有匹配,則左表將返回空值。

    SELECT 所查欄位 FROM 表1 LEFT|RIGHT [OUTER] JOIN 表2

    ON 表1.關係欄位 = 表2.關係欄位 WHERE 條件

  左外串連

    select * from A left outer join B on 條件

  右外串連

    select * from A right outer join B on 條件

  自串連

    就是一個表與其自己進行串連

  複合條件串連查詢(巢狀查詢)

    巢狀查詢可以包括帶有IN謂詞的子查詢、帶有比較子的子查詢、帶有ANY或ALL謂詞的子查詢和帶有EXISTS謂詞的子查詢。

    在串連查詢的過程中,通過添加過濾條件來限制查詢結果,使查詢結果更加精確。

子查詢

  帶IN關鍵字的子查詢

  帶EXISTS關鍵字的子查詢

  帶ANY關鍵字的子查詢

  帶ALL關鍵字的子查詢

  帶比較子的子查詢

sql執行順序

  1.from 表名

  2.where 條件

  3.group by

  4.having

  5.select

  6.order by

MySQL<多表操作>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.