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)刪除