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的外键约束。

  

  

  

 

posted @ 2020-06-08 20:52  猎人7号  阅读(2534)  评论(0编辑  收藏  举报