字段约束
目的:保证数据的:有效性、完整性、正确性。
分类:
- not null: 非空约束 此列不为null 必须提供
- unique: 唯一约束 此列的值不能重复
- primary key: 主键约束 唯一标一条数据
- foreign key: 外键约束 建立不同表之间的关系
非空约束&唯一约束
not null: 非空约束 此列不为null 必须提供
例如下面带有not null或者带有unique的字段:
CREATE TABLE students(
-> stu_num char(8) not null unique,
-> stu_name varchar(20) not null,
-> stu_age int not null,
-> stu_tel char(11) not null unique,
-> stu_qq varchar(11) unique
-> );
主键约束
一张数据表只能有一个主键,不过一个主键可以有多个列组成(联合主键),另外,主键一定非空且唯一,所以设置主键之后,该字段就没必要加非空和唯一约束了,比如:
写法一:
CREATE TABLE students(
-> stu_num char(8) not null primary key,
-> stu_name varchar(20) not null,
-> stu_age int not null,
-> stu_tel char(11) not null unique,
-> stu_qq varchar(11) unique
-> );
写法二:
CREATE TABLE students(
-> stu_num char(8) not null,
-> stu_name varchar(20) not null,
-> stu_age int not null,
-> stu_tel char(11) not null unique,
-> stu_qq varchar(11) unique,
-> primary key(stu_num)
-> );
创建表之后添加主键约束
用modify
ALTER table stus modify stu_num char(4) primary key
主键自动增长
CREATE tabletypes(
type_id int primary key auto_increment,
type_name varchar(20) not null,
)
注意:自动增长从1开始, 每天夹一条记录,计数器+1,删除某条记录后,计数器不会更新,所以自增只保证唯一性,不保证连续性。
联合主键(使用频率低)
将数据表中的多个字段组合在一起
CREATE table grades(
stunum char(8),
course_id int,
score int,
primary key(str_num, course_id
)
外键约束
后面多表关联再展开
参考:bilibili