数据库表的主外键

主键

主键(primary key):全称叫做“主键约束”,可以是一列或者多列组合,其值可以唯一标识这条数据。

所以主键唯一性,不可以为空。

创建主键:

创建表的时候创建主键

CREATE  TABLE  food(id INT PRIMARY KEY,name CHAR(32));

在这里插入图片描述
创建主键,并且自增长
(就是插入数据时可不指定主键字段,一般都为id int类型)
缺陷:
如果删除之前的数据,不会自动填充补全数字,如把id=3的数据从表中删除
1
2
4
5
这样的,中间3会没有,空的

CREATE TABLE food(id INT PRIMARY KEY AUTO_INCREMENT,name CHAR(32));

在这里插入图片描述

添加主键:

在已经存在的表当中添加主键(字段是已经存在的字段)

ALTER TABLE food ADD PRIMARY KEY (id);

在这里插入图片描述

ALTER TABLE food ADD PRIMARY KEY AUTO_INCREMENT (id); 由于版本 问题,当前命令不会报错,但是无法将主键设置自增长。导致添加的 数据主键为0

修改为自增长:modify
ALTER TABLE food MODIFY id INT AUTO_INCREMENT PRIMARY EKY;

在这里插入图片描述
添加实际上是将一个已经存在的字段修改为主键

**删除主键:**
ALTER TABLE food DROP PRIMARY KEY ;

在这里插入图片描述

删除主键只是删除了主键类型,并没有删除字段
在这里插入图片描述

如果主键设置自增长,先通过修改语句去掉自增长,然后在删除主键。
ALTER TABLE food MODIFY id INT; 去掉自增长
ALTER TABLE food DROP PRIMARY KEY ; 删除主键

外键

外键:(foreign key):全称叫做“外键约束”,主要用来约束一对多关系, 一对多关系当中,多表当中用外键来关联一表当中的主键字段。

create table parent(id int primary key auto_increment,name char(32));

create table child(
id int primary key auto_increment,
name 	char(32),
p_id int, 
foreign key(p_id) references parent(id)
);

1、必须先有外键字段,再设置外键
2、一表必须先创建出来,最好有主键;
3、外键字段的数据必须一表对应字段(主键)有的数据。

多对多关系中,需在关系表创建时设置多个外键,对应相应表中的主键字段

在这里插入图片描述
在这里插入图片描述

多对多关系中:
专业:
在这里插入图片描述
课程:
在这里插入图片描述
关系:
在这里插入图片描述
创建多对多关系:
创建专业表

create table major(id int primary key auto_increment,name char(32));

创建课程表

create table course(id int primary key auto_increment,name char(32));

创建关系表

create table major_course(
id int primary key auto_increment, 设置主键
major_id int, 设置和专业关联的字段
course_id int, 设置和课程关联的字段
foreign key(major_id) references major(id), 使用major_id和major表的	id字段进行外键关联
foreign key(course_id) references course(id)使用course_id和course表	的id字段进行外键关联
);
posted @ 2019-06-15 19:41  Python及时行乐  阅读(3325)  评论(1编辑  收藏  举报