MySQL中的数据库约束

目录

导读:

约束类型

1、not null(不能为空)

2、unique(唯一)

3、default(默认值约束)

4、primary key(唯一)与unique

相同点

不同点:

auto_increment

5、foreign key(外键)

语法形式:

功能:

6、check——了解即可


导读:

在使用数据库的时候,为了避免插入数据出错,一般会对插入的数据进行约束(限制)

比如插入学生信息(包含学生名字):

如果不对插入的数据进行约束,那么这种情况,也会插入成功:

在逻辑上这显然是不成立的,因为学生的名字不能是null。

为此,MySQL中提供了约束类型,用来实现对插入数据的管控。


约束类型

一共有这几种:

not null - 指示某列不能存储 NULL 值。

unique - 保证某列的每行必须有唯一的值。

default - 规定没有给列赋值时的默认值。

primary key - not nullunique 的结合。确保某列(或两个列多个列的结合)有唯一标 识,有助于更容易更快速地找到表中的一个特定的记录。

foreign key - 保证一个表中的数据匹配另一个表中的值的参照完整性。

check - 保证列中的值符合指定的条件。对于MySQL数据库,对CHECK子句进行分析,但是忽略 check子句。

接下来,妖妖介绍:

1、not null(不能为空)

语法形式:

 create table 表名(id int ,name varchar(20) not null,score int);

举例,创建一个表,名字这一列不能填NULL

此时还想插入一个名字为null的学生就不可能了:

注意事项:

1、name的默认值不能是NULL了:

2、不能将名字修改成NULL:

2、unique(唯一)

语法形式:

 create table 表名(id int unique,name varchar(20),score int);

举例,创建一个表,id不能重复

注意:

unique允许有多个NULL值,而不报错。

3、default(默认值约束)

语法形式:

create table 表名(id int ,name varchar(20) default '自定义的默认值',score int);

举例,创建一个表,id的默认值是-1,名字的默认值是‘无姓名’:

4、primary key(唯一)与unique

primary key(一般叫主键)unique很像,被约束的列,都不能出现重复的值,但他们也有很多不同点。

相同点:

1.唯一性:primary keyunique都确保了被修饰的列的值是唯一的。

2.索引:MySQL 会自动为 PRIMARY KEY 和 UNIQUE 创建索引,以加快查询速度。(索引如果没学过,不用管,不要紧)

不同点:

1.unique允许插入相同的NULL值,因为MySQL认为NULL无法比较,因此不相等

但primary key不允许插入相同的NULL值。

2.数量 primary key在一个表中,只能约束一列数据:

但unique在一个表中可以约束多列数据:

像这种约束,用的还是比较多的,比如说游戏的ID

五月份LOL的改名活动,不知道大家有没有白嫖:

像这种可以取重复ID的账户系统,底层使用的就是primary key这类约束,既对id这一列进行唯一约束,但是不对name这一列进行唯一约束。


auto_increment:

auto_increment是一个关键字,通常与primary key一起使用去约束整数类型的数据,

MySQL 中用于自动生成唯一标识符的属性

语法:

插入数据:

 结果:

也就是说,id默认从1,开始,然后顺序增加。

注意:

如果图中插入了一个id为100的数据:

在使用auto_increment:

那么id将会从101开始递增:


 

5、foreign key(外键)

语法形式:

create table 表名(id int ,foreign key(id) references 另一个表的表名(表中一个字段)

看不懂没关系,等一下有栗子吃。

外键相对于前四个,功能就有意思了,语法形式也和上面有所不同。

功能:

有这样两个表,一个存储班级:

一共只有三个班级,请记住。

接下来一个表,用来存储学生:

此时,父表(class)和子表(student)就建立了联系。

子表,在插入数据的时候,受到父表的约束,班级号码不能1、2、3以外的数字,否则报错:

同时,父表也可能会被子表约束:

子表先插入一个非法数据:

然后删除父表对应的行数据,将会报错:

6、check——了解即可

语法:

实际上也是对插入数据进行约束。

例如,上图插入数据的price必须是正数才行,不然会报错。

但是,MySQL并不支持check关键字的使用,即使它可以用代码执行,但是实际运行时,会自动忽略。

  • 74
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值