主键和外键是在我们创建数据库的时候保证数据的完整性。
当有很多表的时候,表之间都是有关联的 。
数据库主键
根据上面两个表的关系。分析业务:
- 学生表中的学号 唯一的,不能重复。
建表的时候,学生表的中的学号 设置为主键
create table student(
sno varchar(255) not null,
sname varchar(255) not null,
sex varchar(10) not null,
primary key(sno) -- 设置主键
);
表中添加数据
insert into student (sno,sname,sex) values("A001","王凶獒","男");
insert into student (sno,sname,sex) values("A001","王水水","女"); -- 会报错, 学号重复。
主键的作用:
字段 | 说明 | 备注 |
---|---|---|
sno | 学生号 | 来源于学生表 |
cno | 课程号 | 来源于课程表 |
score | 成绩 |
成绩表
sno | cno | score |
---|---|---|
A001 | yuwen | 90 |
A001 | shuxue | 100 |
A002 | yuewen | 99 |
A002 | shuxue | 100 |
成绩表中因为存放的是所有的成绩
学号可以出现多次, 学号不能设置为主键
但是学号来源于学生表,
注意:
成绩表的中 sno 设置为外键
设置外键
在成绩表上 右键—【设计表】
选择 外键
创建外键
一个表中可以创建多个外键。比如 成绩表中 sno 来源于 student 表
同时 cno 来源 course 表中 cno;
所以可以再 在score 成绩表中创建 cno的外键;
验证外键
外键主要的作用就是保证数据的完整性
先看下student 表中 和 course 中的数据
往score表中添加的数据的时候
外键的主要作用:
确保数据的有效性,防止插入数据出现无效数据这样的场景,能够保证整个数据完整。
一个表中以创建多个主键,
也可以创建多个外键。 具体情况根据具体的业务来添加即可。