主键、唯一键、外键

1.主键

主键用来区分数据,联系各个表,不能为空且在表中数据是唯一的

create table t_8(
    id int(20) primary key,	// 定义主键
    name varchar(30)
    );

 可以添加组合键(复合主键),但扩展性不行,一张表里可以有多个组合键,但是可能在非特殊的情况下实际的意义不大,添加复合主键要先把原主键删除

alter table tablename add primary key (字段,字段...);	// 添加复合主键

2.唯一键

唯一键限定范围是在一张表中,它不会用作来关联其他的数据,它也可以为空,在这张表中一定是唯一的,用来保证在这个表中这个数据不重复。

// 添加唯一键,两种方法,
create table t(
    id int primary key,
    phone varchar(20) unique	// 唯一键
    );
    
alter table tablename add unique (字段,字段...);

主键与唯一键的区别

主键、唯一键、外键_第1张图片

3.外键 

外键是指引用另外一个表中的一列或多列数据,被引用的列应该具有主键约束或者唯一性约束(简单来说外键是另一个表的主键或者唯一约束)。外键可以有重复的, 可以是空值,用来建立和加强两个表数据之间的连接
主键、唯一键、外键_第2张图片

主外键的关系:

左边信息表为主表,右边成绩表为从表

1.当主表中没有对应的记录时,不能将记录添加到子表(学生成绩表中不能出现学生信息表中没有的学号)

2.不能更改主表中的值而导致子表中的记录孤立(学生信息表中的id变化了,学生成绩表中的id也要随着发生改变)

3.子表存在与主表对应的记录,不能从主表中删除该行(不能把部门表中的数据删除)

4.删除主表前,先删子表

你可能感兴趣的:(MySQL,java,数据库,sql)