1.任务:给表添加外码。
2.相关知识
需要掌握:
(1)什么是外码; (2)怎么给表添加外码。
(1)什么是外码
外部关键字
外码是另一张表中的主码。**外码的主要作用是保持数据的一致性,完整性。
如图有两张表,classId
是T_Student
的外码,是T_class
表的主键, 如果我们要删除T_class
表中classId
为1
的字段,会报错的,因为t_student
表中有数据和classId
为1
的字段关联,是不能删除的,这样就保证了数据的一致性和完整性。 **需要先删除T__student
表中classId
为1
的两个字段。
(2)如何给表添加外码
在MySQL
中给表中字段添加外键约束的语法规则如下:
CONSTRAINT 外键名 FOREIGN KEY (字段名) REFERENCES 主表名(主键名)
例如:
创建两张表如下,给t_student表添加外键约束,外键为classId,外键名称为fk_stu_class1。
表t_class
字段名称 数据类型 备注
id INT 班级Id,主键
name VARCHAR(22) 班级名称
表t_student
字段名称 数据类型 备注
id INT 学号,主键
name VARCHAR(22) 学生姓名
classId INT 班级ID,外键
在创建表之前你需要先创建数据库:MyDb,并且将两张表创建在MyDb数据库中。
mysql -uroot -p123123 -h127.0.0.1
create database MyDb;
use MyDb;
create table t_class(
id int primary key,
name varchar(22)
);
create table t_student(
id int primary key,
name varchar(22),
classId int,
constraint fk_stu_class1 foreign key(classId) references t_class(id)
);
educoder:
编程要求
创建两张表如下,给t_student
表添加外码约束,外键为dptno
,外键名称为fk_stu_depart
。 表t_depart
字段名称 | 数据类型 | 备注 |
---|---|---|
dptno | INT | 专业号,主码 |
dptname | VARCHAR(22) | 专业名称 |
表t_student
字段名称 | 数据类型 | 备注 |
---|---|---|
stid | varchar(12) | 学号,主码 |
name | VARCHAR(22) | 学生姓名 |
dptno | INT | 所在专业,外码 |
在创建表之前你需要先创建数据库:TestDb
,并且将两张表创建在TestDb
数据库中。
完成创建后,可以使用前面关卡使用过的命令查看表、表结构等,点测评通过即通过闯关。