数据库Mysql_约束

将失败当作自己的老师,即使他会使自己难堪

                                                                                                                                   ----------陳長生.


1.什么是数据库约束

        数据库约束是在数据库中对表中的内容设定条件或者规则,设置了这些规则能使得数据更具体有准确性,可靠性。

2.约束类型

NOT NULL设置列不能为空
UNIQUE设置列只能是该表中唯一的值
PRIMARY KEYnut null与unique的结合,既不能为空并且是唯一值
FOREIGN KEY将主表内容与从表内容相关联
DEFAULT给设置列一个默认的值
CHECK给设置列限制一个输入的数据

3.NOT NULL 非空约束

定义列中不想为空时,可以为该列添加一个非空约束

create table if not exists student(
  id bigint not null,
  name varchar(20) not null
); 

设置一个非空约束后,name列就不会添加一个非空的值进来了

可以看到,当我们插入null值时,系统就会报错,证明了我们当前的非空约束成功设置了。

4.UNIQUE 唯一约束

        在很多场景下,我们需要一个唯一不重复的值,例如在学校中,两个人的名字可能会重复,但是他们的学号不会,如果学号也相同,那些后续的一些信息填入就会出现一些问腿,所以不重复的学号便是用来区分两个相同名字的同学,那么mysql中就给我们提供了这么一个约束。

create table if not exists student1(
  id bigint unique
  name varchar(20) not null
);

但我们将id列添加一个唯一约束时,id中的值就不会重复了

我们可以成功插入两个不同的id列的值,但是插入一个重复的”002“id的值就报错,证明了该唯一约束设置成功。

5.PRIMARY KEY 主键约束

  • 主键必须是唯一并且不为空的值
  • 每个表中只有一个主键值,可以由单列或多列组成        

create table if not exists student2(
  id bigint primary key,
  name varchar(20) not null
);

我们使用desc查看该表结构表

id的Key列中由PRI,说明主键 ”Primary key “生效

6.FOREIGN KEY 外键约束

  • 外键约束用来定义主表与从表的关系
  • 外键约束定义在从表上,主表关联的列必须是主键或者是唯一约束

主表(专业课表):

create table if not exists class(
  id bigint primary key,
  name varchar(20)
);

从表(学生表):

create table if not exists student3(
  id bigint primary key,
  name varchar(20),
  class_id bigint,
  foreign key (class_id) references class(id)
);

先声明外键约束哪从表中的哪一个列,然后再连接(references)主表中对应的主键值

关于删除:

        建立连接的两个表不可以随意删除,若想删除,须先删除从表中的数据,再删除主表中的数据,否则删除会失败。

-- 正确删除顺序
delete from student3;
delete from class; 

运行结果为成功~

7.DEFAULT 默认约束

        默认约束就是在创建列时,给一个默认值,后续如果不给该列赋值,那么会按默认值输出。

        

create table if not exists student4(
  id bigint primary key,
  name varchar(20) not null,
  age int default 18   —>设置该默认值为18
);

8.CHECK 限制约束

用于限制列中可以接受的值,确保数据的准确性与完整性

create table if not exists student5(
  id bigint,
  name varchar(20),
  age int,
  check(age>=16)  -->限制age列中的数字必须大于16
);

当我们试图插入age为14的数据时,系统提示我们违反"chl_1"的规则,证明当前的check约束创建成功。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值