非空约束

如果某字段设置了非空约束,则不能向该字段插入NULL值。当向表中插入数据时,没有为该字段指定值,则会提示报错。

非空约束的语法如下:

字段名 字段数据类型 not null

示例:

create table student
(
    id int,
    name varchar(50) not null
);

默认值约束

为某字段设置默认值。当向表中插入数据时,没有为该字段指定值,则会自动为该字段赋默认值。

默认值约束的语法如下:

字段名 字段数据类型 default 默认值

示例:

create table student
(
    id int,
    name varchar(50),
    gender varchar(10) default '男'
);

主键约束

主键(Primary Key):可唯一确定表中一行记录的一列或多列的组合。可以通过主键约束来指定主键包含的列。主键列的值不允许为NULL值。

单字段主键约束的语法如下:

字段名 字段数据类型 primary key

示例:

create table student
(
    id int primary key,
    name varchar(50)
);

多字段主键约束的语法如下:

[constraint 约束名] primary key (字段1,字段2,...)

示例:

create table student_score
(
    student_id int,
    course_id int,
    score decimal(5,2),
    constraint pk primary key (student_id,course_id)
);

外键约束

一张表(从表)的外键对应于另一张表(主表)的主键。外键字段取值可以为空,但当不为空时,它的值必须存在于另一张表(主表)的主键中。

外键主要用来保证数据引用的一致性。

外键约束的语法如下:

[constraint 外键约束名] foreign key (从表字段1,从表字段2,...)
references 主表名 (主表字段1,主表字段2,...)

示例:

create table student
(
    id int primary key,
    name varchar(50)
);
create table student_score
(
    student_id int,
    course_id int,
    score decimal(5,2),
    constraint fk foreign key (student_id) references student(id)
);

注意:外键字段的数据类型、字符集要与主表字段保持一致,否则可能会报不兼容的错误。

唯一性约束

唯一性约束要求设置的一列或多列的值不出现重复。

单字段唯一性约束的语法如下:

字段名 字段数据类型 unique

示例:

create table student
(
    id int primary key,
    name varchar(50) unique
);

多字段唯一性约束的语法如下:

[constraint 约束名] unique (从表字段1,从表字段2,...)

示例:

create table student_score
(
    student_id int,
    course_id int,
    score decimal(5,2),
    constraint u_student_course unique (student_id,course_id)
);

一张表中只能有一个primary key约束,但可以有多个unique约束;

primary key约束的字段值不可以为NULL,但unique约束的字段值可以为NULL;

自增长约束

如果表中的某个字段在插入数据时,自动赋整数值,且该整数值从1开始递增,那么可以在该字段上设置自增长约束。

自增长约束的语法如下:

字段名 字段数据类型 auto_increment

示例:

create table student
(
    id int auto_increment primary key,
    name varchar(50) 
);

自增长字段的数据类型必须为整数类型,比如tinyint、smallint、int、bigint等;

一个表只能有一个自增长字段;

自增长字段必须为表的主键的一部分;

零填充约束

当字段的值的长度小于定义的长度时,会在值前补充0。

零填充约束的语法如下:

字段名 字段数据类型 zerofill

示例:

create table student
(
    id int zerofill,
    name varchar(50) 
);

zerofill默认字段数据类型为int(10);

zerofill约束默认会为字段添加unsigned属性;

在使用zerofill约束时,数据库会提示zerofill约束已经被弃用,后续版本中可能会不再支持;

picture loss