外鍵約束

FOREIGN KEY(將要設(shè)置為外鍵的字段) REFERENCES 表名(要依賴的主鍵)

這里是創(chuàng)建一張家族表
CREATE TABLE `family` (
      `name` VARCHAR(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '名字',
      `exp` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '經(jīng)驗(yàn)',
      `notice` VARCHAR(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '公告',
      `board` VARCHAR(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '黑板',
      PRIMARY KEY (`name`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- name:名稱,varchar類型表示,長度限制32位,這里說明一下varchar沒有占位符,
-- char定義是固定長度的,即使不足也會(huì)使用空格填充
-- utf8mb4_unicode_ci是指字符編碼形式,此編碼是基于標(biāo)準(zhǔn)的Unicode來排序和比較,
-- 能夠在各種語言之間精確排序
-- COMMENT是添加說明的關(guān)鍵字
-- INT UNSIGNED是指使用無符號(hào)int類型,不能出現(xiàn)負(fù)數(shù)
-- PRIMARY KEY設(shè)置主鍵,這里可以設(shè)置多個(gè)主鍵,以逗號(hào)分隔

ENGINE=InnoDB這里的這個(gè)代碼意思指使用InnoDB數(shù)據(jù)庫引擎(InnoDB用于事務(wù)處理)

DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci這里的代碼含義指使用默認(rèn)的字符集和默認(rèn)的字符編碼形式

這里是創(chuàng)建一張家族歷史表
CREATE TABLE `familyhistory` (
      `hid` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '歷史id',
      `name` VARCHAR(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '家族名字',
      `msg` VARCHAR(256) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '操作信息',
      PRIMARY KEY (`hid`, `name`),
      CONSTRAINT `familyhistory_ibfk_1` FOREIGN KEY (`name`) REFERENCES `family` (`name`) ON DELETE CASCADE
    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CONSTRAINT:約束關(guān)鍵字
CONSTRAINT `familyhistory_ibfk_1`含義是創(chuàng)建約束名為familyhistory_ibfk_1
FOREIGN KEY (`name`)含義是創(chuàng)建外鍵name
REFERENCES `family` (`name`)意思是參考family表中的主鍵name
ON DELETE CASCADE這條命令是做級(jí)聯(lián)刪除,意思是刪除參考值時(shí),約束值自動(dòng)刪除

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容