国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

怎么寫mysql外鍵約束

2024-07-24 12:36:16
字體:
來源:轉載
供稿:網友
  今天就跟大家聊聊有關怎么寫mysql外鍵約束,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
 
  mysql外鍵約束的寫法:【[CONSTRAINT <外鍵名>] FOREIGN KEY 字段名 REFERENCES <主表名> 主鍵列1】。外鍵約束是表的一個特殊字段,經常與主鍵約束一起使用。
  在 CREATE TABLE 語句中,通過 FOREIGN KEY 關鍵字來指定外鍵。
 
  具體的語法格式如下:
 
  [CONSTRAINT <外鍵名>] FOREIGN KEY 字段名 [,字段名2,…]
  REFERENCES <主表名> 主鍵列1 [,主鍵列2,…]
  MySQL 外鍵約束(FOREIGN KEY)是表的一個特殊字段,經常與主鍵約束一起使用。
 
  對于兩個具有關聯關系的表而言,相關聯字段中主鍵所在的表就是主表(父表),外鍵所在的表就是從表(子表)。
 
  定義外鍵時,需要遵守下列規則:
 
  主表必須已經存在于數據庫中,或者是當前正在創建的表。如果是后一種情況,則主表與從表是同一個表,這樣的表稱為自參照表,這種結構稱為自參照完整性。必須為主表定義主鍵。
  主鍵不能包含空值,但允許在外鍵中出現空值。也就是說,只要外鍵的每個非空值出現在指定的主鍵中,這個外鍵的內容就是正確的。
  在主表的表名后面指定列名或列名的組合。這個列或列的組合必須是主表的主鍵或候選鍵。
  外鍵中列的數目必須和主表的主鍵中列的數目相同。
  外鍵中列的數據類型必須和主表主鍵中對應列的數據類型相同。
  舉例:
 
  為了展現表與表之間的外鍵關系,本例在 test_db 數據庫中創建一個部門表 tb_dept1,表結構如下表所示。
 
  怎么寫mysql外鍵約束
 
  創建 tb_dept1 的 SQL 語句和運行結果如下所示。
 
  mysql> CREATE TABLE tb_dept1
      -> (
      -> id INT(11) PRIMARY KEY,
      -> name VARCHAR(22) NOT NULL,
      -> location VARCHAR(50)
      -> );
  Query OK, 0 rows affected (0.37 sec)
  創建數據表 tb_emp6,并在表 tb_emp6 上創建外鍵約束,讓它的鍵 deptId 作為外鍵關聯到表 tb_dept1 的主鍵 id,SQL 語句和運行結果如下所示。
 
  mysql> CREATE TABLE tb_emp6
      -> (
      -> id INT(11) PRIMARY KEY,
      -> name VARCHAR(25),
      -> deptId INT(11),
      -> salary FLOAT,
      -> CONSTRAINT fk_emp_dept1
      -> FOREIGN KEY(deptId) REFERENCES tb_dept1(id)
      -> );
  Query OK, 0 rows affected (0.37 sec)
 
  mysql> DESC tb_emp6;
  +--------+-------------+------+-----+---------+-------+
  | Field  | Type        | Null | Key | Default | Extra |
  +--------+-------------+------+-----+---------+-------+
  | id     | int(11)     | NO   | PRI | NULL    |       |
  | name   | varchar(25) | YES  |     | NULL    |       |
  | deptId | int(11)     | YES  | MUL | NULL    |       |
  | salary | float       | YES  |     | NULL    |       |
  +--------+-------------+------+-----+---------+-------+
  4 rows in set (1.33 sec)
  以上語句執行成功之后,在表 tb_emp6 上添加了名稱為 fk_emp_dept1 的外鍵約束,外鍵名稱為 deptId,其依賴于表 tb_dept1 的主鍵 id。
 
  注意:從表的外鍵關聯的必須是主表的主鍵,且主鍵和外鍵的數據類型必須一致。例如,兩者都是 INT 類型,或者都是 CHAR 類型。如果不滿足這樣的要求,在創建從表時,就會出現“ERROR 1005(HY000): Can't create table”錯誤。

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 镇坪县| 长治市| 新乡县| 延津县| 东平县| 洮南市| 云霄县| 南靖县| 彰化县| 阜南县| 平昌县| 达日县| 会宁县| 贵港市| 吉隆县| 隆回县| 巩义市| 宜春市| 镇江市| 池州市| 大庆市| 彭水| 晋江市| 马公市| 延津县| 华安县| 正宁县| 宁津县| 囊谦县| 大理市| 绿春县| 德令哈市| 平乡县| 长治县| 岑巩县| 平山县| 平邑县| 内江市| 德惠市| 黄大仙区| 桃源县|