黑马程序员技术交流社区
标题:
mysql第2天主外键约束事务
[打印本页]
作者:
849618121
时间:
2018-12-10 17:25
标题:
mysql第2天主外键约束事务
01添加外键没约束代码
CREATE TABLE class(
cid INT PRIMARY KEY AUTO_INCREMENT,-- 给id添加主键约束(PRIMARY KEY) 自动增长(AUTO_INCREMENT)
cname VARCHAR(32)
);-- 创建表&&创建列
-- 创建部门表id,dep_name,dep_location
-- 一方 ,主表
CREATE TABLE department(
id INT PRIMARY KEY AUTO_INCREMENT,-- 给主表的主键 id 添加约束和自动增长
dep_name VARCHAR(20),
dep_location VARCHAR(20)
);
-- 创建员工表id,name,age,dep_id
-- 多方 从表
CREATE TABLE employee(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(20),
age INT,
dep_id INT -- 外键对应主表的主键
);
-- 添加2个部门
INSERT INTO department VALUES(NULL, '研发部','广州') , (NULL, '销售部', '深圳');
SELECT * FROM department;
-- 添加员工,dep_id表示员工所在的部门
INSERT INTO employee(NAME,age,dep_id)VALUES('张三',20,1);
INSERT INTO employee(NAME,age,dep_id)VALUES('李四',20,2);
INSERT INTO employee(NAME,age,dep_id)VALUES('王五',22,2);
SELECT * FROM employee;
02外键添加约束的分析
外键的约束是在从表建立的时候就添加了 放在外键后面的行
CONSTRAINT emp_depy_fk FOREIGN KEY (dep_id) REFERENCES department (id)
语法:
CREATE TABLE 表名(
....
外键列
CONSTRAINT 创建外键名称 FOREIGN KEY (从表的外键列名称) REFERENCES 主表名称(主表列名称)
);
CONSTRAINT 约束的意思*康森特
emp_depy_fk 新命名的外键名称 emp表和depy表的外键
FOREIGN KEY 让表与表之间发生关系的*for瑞 k
(dep_id) 员工表(从表)的外键名
REFERENCES 关联的意思*r粉丝
department 关联部门表(主表)
(id) 关联部门表(主表)的列名
3——给外键设置级联更新和级联删除
UPDATE employee SET dep_id = NULL WHERE dep_id = 1;-- 当员工外键值等于1 则修改为null 可以为null但是不能为不存在的外键
-- 添加外键,设置级联更新和级联删除
ALTER TABLE employee ADD CONSTRAINT emp_depy_fk FOREIGN KEY (dep_id) REFERENCES department (id) ON UPDATA CASCADE ON DELETE CASCADE;级联更新和级联删除
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2