SQL外键
外键:外键是用来再两个表的数据之间建立连接,他可以是一列也可以是多列。一个表中可以有一个或多个外键。
一个表的外键可以是空值,若不为空值,则每一个外键值必须等于另外一个表中的主键的某个值。
外键是一个表中的字段,他可以不是本表中的主键,但对应另外一个表的主键,外键的作用是保证数据引用的完整性。
定义完外键后,不允许删除在另一表中具有关联的行。列如:部门表tb_dept的主键是id,在员工表tb_emp5中有一个键deptId跟这个id关联。
主表(父表):对于两个有关联的表而言,相关字段中主键所在的那个表为主表。
从表(子表):对于两个有关联的表而言,相关字段中的外键所在的那个表为从表。
外键名:定义外键约束的名称,一个表中不能有相同名称的外键。
字段名:表示从表需要添加外键约束的字段列。
主表名:即被从表外键所依赖的表的名称
主键列:表示主表中定义的主键字段,或者字段组合。
ON DELETE 和 ON UPDATE :指定在发生删除或更改的表中。
例子:
创建一个部门表tb_dept1,表结构SQL语句如下:
CREATE TABLE tb_dept1 ( id INT PRIMARY KEY, name VARCHAR(22) NOT NULL, location VARCHAR(50) NULL );
定义数据表tb_emp6,让它的键deptId作为外键关联到tb_dept1的主键id,SQL语句如下:
CREATE TABLE tb_emp6 ( id INT PRIMARY KEY, name VARCHAR(25), deptId INT, salary FLOAT, CONSTRAINT fk 员工部门编号 FOREIGN KEY(deptId) REFERENCES tb_dept1(id) );
在未设外键表中添加外键 可以使用ALTER语句将FOREIGN KEY约束添加到该表中,添加主键的ALTER语句语法格式如下
CREATE TABLE tb_emp6 ( id INT PRIMARY KEY, name VARCHAR(25), deptId INT, salary FLOAT )--创建表但未添加外键 后期添加外键SQL语法如下: GO ALTER TABLE tb_emp6 ADD CANSTRAINT fk 员工不猛编号 FOREIGN KEY(deptId) REFERENCES tb_dept1(id)
删除外键约束
删除tb_emp6表中创建的 “fk_员工部门编号”外键约束,输入语句如下: ALTER TABLE tb_emp6 DROP CONSTRAINT fk_员工部门编号; 执行完成后将删除tb_emp6的外键约束。