约束(Constraint)SQL约束有哪几种?【常用的约束】【有例子】【非空约束】【唯一约束】【主键约束】【外键约束】【检查约束】

常用约束

  • 非空约束(not null):约束的字段不能为NULL;只有列级约束,没有表级约束(也就是说,只能约束某个字段值不为空);
  • 唯一约束(unique):约束的字段不能重复;既有列级约束,也有表级约束
  • 主键约束(primary key):约束的字段既不能为NULL,也不能重复(简称PK);既有列级约束,也有表级约束
  • 外键约束(foreign key):...(简称FK);
  • 检查约束(check):注意Oracle数据库有check约束,但是mysql没有,目前mysql不支持该约束

not null:只有列级约束,没有表级约束(也就是说,只能约束某个字段值不为空)

create table t_student(

student_name         varchar(25) not null,    

)

unique:既有列级约束,也有表级约束

unique约束修饰的字段具有唯一性,不能重复。

但可以是NULL,NULL不是值,所以多个NULL不是重复

列级约束

create table t_user(

id int,

username varchar(255) unique

);

多个字段联合起来添加1个约束unique 【表级约束】

create table t_user(

id int,

usercode varchar(255),

username varchar(255),

unique(usercode,username) 

);

主键约束:primary key:既有列级约束,也有表级约束

主键相关的术语?

  •                 主键约束 : primary key

                主键字段 : id字段添加primary key之后,id叫做主键字段

                主键值 : id字段中的每一个值都是主键值。

主键特点:不能为NULL,也不能重复

一张表的主键约束只能有一个;

有表级约束也有列级约束

表级约束

create table t_user(

id int,

username varchar(255),

primary key(id)                  

);

列级约束

create table t_student()

student_id          int(10)  primary key,    
student_name         varchar(20) not null,

sex                char(2)  default  'm',

birthday        date,

email                varchar(30)  ,

classes_id        int(3)        

)

主键值自增

drop table if exists t_user;

create table t_user(

id int primary key auto_increment, 

username varchar(255)

);

外键约束:foreign key

关于外键约束的相关术语:

  • 外键约束: foreign key
  • 外键字段:添加有外键约束的字段
  • 外键值:外键字段中的每一个值。

外键可以为NULL;

如果表中某个字段为外键字段,则该字段的值必须来源参照表的主键;

外键主要是维护表之间的关系的,主要是为了保证参照完整性,如果表中的某个字段为外键字段,那么该字段的值必须来源于参照的表的主键

顺序要求:

  • 删除数据的时候,先删除子表,再删除父表。
  • 添加数据的时候,先添加父表,在添加子表。
  • 创建表的时候,先创建父表,再创建子表。
  • 删除表的时候,先删除子表,在删除父表。
create table t_class(

cno int,

cname varchar(255),

primary key(cno)

);



create table t_student(

sno int,

sname varchar(255),

classno int,

primary key(sno),

foreign key(classno) references t_class(cno)

);

级联更新与级联删除

  1. 父表中的数据更改,子表中的数据也会跟着变动。
  2. 父表中的数据删除,子表中的数据也会删除。

猜你喜欢

转载自blog.csdn.net/jiayoudangdang/article/details/123944805