IT培训网 - IT职场人学IT技术上IT培训网
外键约束是什么 解读外键约束特性及作用
时间:2018-09-14 14:15:32 来源:电脑培训网 作者:IT培训网 已有:名学员访问该课程
外键约束是什么?外键约束的作用是什么?对于学java的并不陌生,外键约束这一概念让java程序员解决了很多的关键性问题,在此,IT培训网再次给大家解读何为外键约束,外键约束的相关作用是什么?
外键约束是什么?
外键是构成表与表关联的唯一途径。一个表的外键引用另一个表或自身表的主键,外键所在的表称为从表,外键引用的表称为主表。
创建外键有以下两个途径:
在创建表的时候指定某个列为外键列;
在修改表的时候添加某个列为外键列。
外键有以下特性:
外键必须是另一表或自身表的主键的值;
外键可以重复;
外键可以为空;
一张表中可以有多个外键。
1.创建表时指定外键列
(1)外键的关键词是FOREIGN KEY,创建一个数据库exam,然后在该数据库中先创建一个部门表dept,然后再创建一个员工表emp,如图1-1所示:
图1-1 创建数据库与表
图1-1中,建立外键的语句如下:
CONSTRAINT 约束名称 FOREIGN KEY(外键列名) REFERENCES 关联表(关联表的主键)
创建emp表的sql语句如下:
CREATE TABLE emp(
empno INT PRIMARY KEY AUTO_INCREMENT,
ename VARCHAR(50),
deptno INT ,
CONSTRAINT fk_emp_dept FOREIGN KEY(deptno) REFERENCES dept(deptno)
语句中,外键列名deptno是指emp表中外键的名称,关联表是dept,关联表的主键名为deptno,与外键名称相同,也可以不同。需要注意的是emp表中引用了dept表的主键,因此创建表时要先创建dept表,再创建emp表,否则会出错。
(2)向dept表中插入记录,如图1-2所示:
图1-2 dept表记录
(3)emp表的主键是自增长的,因此向emp表中插入记录时可以不用指定主键值,如图1-3所示:
图1-3 向emp表中插入记录
图1-3中,插入的记录没有提供外键的值,外键的值为null,表明了外键可以为null。
(4)向emp表中插入外键值相同的两条记录,如图1-4所示:
图1-4 插入外键值相同的记录
图1-4中,张三和李四的部门号相同,表明了外键是可以重复的。
(5)向emp表中插入一条记录,该记录的部门号在部门表中并不存在,如图1-5所示:
图1-5 插入不存在的外键值
图1-5中,当插入的记录的外键值没有引用dept表中的主键时,插入失败,因此,外键值如果不为空,那么一定要是主表的主键中的任意一个。
2.修改表是指定外键列
修改表时添加外键列的语句如下:
ALERT TABLE 表名
ADD CONSTRAINT 约束名称 FOREIGN KEY(外键列名) REFERENCES 关联表(关联表的主键);
(1)将emp表删除,重新创建一个emp表,如图1-6所示:
图1-6 创建无外键的emp表
(2)为emp表添加外键,如图1-7所示:
图1-7 为表添加外键约束
(3)向emp表中添加一条记录,如图1-8所示:
图1-8 插入记录
图1-8中,插入一条记录,该记录的外键值为50,而dept表的主键值不存在这个值,因此违反了外键约束,所以插入失败,表明修改表时添加外键约束成功。
每期开班座位有限.0元试听抢座开始!
温馨提示 : 请保持手机畅通,咨询老师为您
提供专属一对一报名服务。