MySQL 约束类型篇

Posted cheneyboon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL 约束类型篇相关的知识,希望对你有一定的参考价值。

目录

约束类型 非空约束 唯一约束 默认约束 自增约束 外键约束 主键约束 检查约束
关键字 not null unique default auto_increment foregin key primary key check

 

 

1.1、非空约束

  定义:用来定义该键不能为空的约束,在后续插入数据中该值不能为空值

create table roo
(
    id int not null,
    name char(10) not null
);

 

create table roo
(
    id int null,
    name char(10) null
);

//这里和not null相反,这两个列都可以为空,切记null不等于任何值,包括null本身。

 

  这里我创建了一个名为roo的表,里面有两个列都加上了非空属性的约束,插入数据时,如果为空则会提示错误

1.2、唯一约束

  唯一约束是指定table的列或列组合不能重复,保证数据的唯一性。虽然唯一约束不允许出现重复的值,但是可以为多个null,同一个表可以有多个唯一约束,多个列组合的约束。在创建唯一约束的时候,如果不给唯一约束名称,就默认和列名相同。 mysql会给唯一约束的列上默认创建一个唯一索引;

  

create table root
(
    id int unique,
    name char(10) unique
);

  这里的id和name的值都是唯一属性,值时不能相同的。

1.3、默认约束

  定义:默认约束的值在插入数据时如果不给数据则默认为默认约束值

create table  root
(
    id int default 1,
    name char(10) default "wuyu"
);

  这里我设置的默认值为id为1,name的默认值为无语

1.4、自增约束

  定义:定义了自增约束,如果不初始化值,则自动从1开始递增

create table mm
(
    id int not null auto_increment,
    name char(10) null,
    primary key(id)
);

  这里的自增约束auto_increment必须设为主键。

1.5、外键约束

  外键约束是保证一个或两个表之间的参照完整性,外键是构建于一个表的两个字段或是两个表的两个字段之间的参照关系。 也就是说从表的外键值必须在主表中能找到或者为空。 当主表的记录被从表参照时,主表的记录将不允许删除,如果要删除数据,需要先删除从表中依赖该记录的数据, 然后才可以删除主表的数据。还有一种就是级联删除子表数据。保持数据的一致性和整体性是他的目的
注意:外键约束的参照列,在主表中引用的只能是主键或唯一键约束的列,假定引用的主表列不是唯一的记录, 那么从表引用的数据就不确定记录的位置。同一个表可以有多个外键约束。

create table student
(
    sno int,
    sname char(10) not null,
    sex char(5) not null,
    primary key(sno)
);

//这里创建了一个学生表,用来和另一张表进行连接

create  table  course
(
    sno int,
    cno int not null,
    score varchar(10) not null,
    foreign key(sno) references student(sno)
);

//课程表中的id是student表的外键

alter table course drop foreign key sno;

//删除表中的外键

alter table course add foreign key(sno) references student(sno);

//添加新的外键

1.6、主键约束

  主键约束相当于唯一约束+非空约束的组合,主键约束列不允许重复,也不允许出现空值;如果的多列组合的主键约束, 那么这些列都不允许为空值,并且组合的值不允许重复。 每个表最多只允许一个主键,建立主键约束可以在列级别创建,也可以在表级别上创建。MySQL的主键名总是PRIMARY, 当创建主键约束时,系统默认会在所在的列和列组合上建立对应的唯一索引。 

create table ant
(
    id int not null,
    name char(10) not null,
    sex char(10) default "nan",
    score varchar(10),
    primary key(id)
);

create table ant
(
    id int not null,
    name char(10) not null,
    sex char(10) default "nan",
    score varchar(10),
    primary key(id,name)
);

//你可以使用一列作为主键,也可以使用两列作为主键,称之为符合主键,必须通过两个列的数据才能进行整体定位的表可以使用。

 1.7、检查约束

  MySQL可以使用check约束,但check约束对数据验证没有任何作用。 也就是说不符合的数据也可以成功被插入

create table student
(
    id int primary key,
    name char(10) not null,
    age int not null,
    check(age>20)
);

//这里虽然加了check约束要求年龄必须大于20,但实际小于20也可以插入。

        转载于:https://blog.csdn.net/kqygww/article/details/8882990

以上是关于MySQL 约束类型篇的主要内容,如果未能解决你的问题,请参考以下文章

mysql学习第5篇:数据库之完整性约束

MySQL数据库学习第五篇完整性约束

MySQL 数据库基础知识(系统化一篇入门)

MySQL零基础从入门到精通,看完这篇直接毕业!(图文并茂,实战教学)

MySQL数据库篇之完整性约束和表关系

基础篇 - SQL 的约束