非空约束
如果某字段设置了非空约束,则不能向该字段插入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约束已经被弃用,后续版本中可能会不再支持;
本站所有内容均为原创,本站保留所有权利。仅允许非商业用途的转载,但必须注明来源网站、作者、来源链接!否则,由此造成的一切后果,由转载方承担!
干货分享、技术提升、面试笔试、学习交流,欢迎关注公众号:xuesql。QQ学习交流群:209942678。