MySQL-外键

发表于 MySQL 分类,标签: MySQL
CREATE TABLE dept
(
 id INT PRIMARY KEY AUTO_INCREMENT,
 ren_name VARCHAR(50) NOT NULL,
 description VARCHAR(100)
);


CREATE TABLE emp
(
 id INT PRIMARY KEY AUTO_INCREMENT,
 ren_name VARCHAR(50) NOT NULL,
 gender CHAR(2) NOT NULL,
 salary FLOAT(10,2),
 age INT(2),
 gmr INT,
 dept_id INT
);

-- 添加外键语法:
[CONSTRAINT symbol] FOREIGN KEY [id](index_col_name,...) 
REFERENCES tbl_name(index_col_name,...)
[ON DELETE {RESTRICT|CASCADE|SET NULL|NO ACTION}]
[ON UPDATE {RESTRICT|CASCADE|SET NULL|NO ACTION}]

-- 外键的使用需要满足下列的条件
-- 1.两张表必须都是InnoDB表,并且它们没有临时表。
-- 2.建立外键关系的对应列必须具有相似的InnoDB内部数据类型。
-- 1.建立外键关系的对应列必须建立了索引。
-- 1.加入显式的给出了CONSTRAINT symbol,那symbol在数据库中必须是唯一的。加入没有显式的给出,InnoDB会自动的创建。



-- 外键是必须创建在从表上面的。
ALTER TABLE emp ADD FOREIGN KEY(dept_id) REFERENCES dept(id);
SHOW CREATE TABLE emp;      -- 通过查看表的定义找出外键的名称
ALTER TABLE emp DROP FOREIGN KEY dept_id;  -- 根据外键名称删除外键
DESC emp;
DELETE FROM dept WHERE id=1;


0 篇评论

发表我的评论