Skip to the content.

MySQL 表的约束

空属性

通过 desc 命令查看表的结构的时候,会出现一个 Null 字段,该字段默认是 Yes ,也就是默认允许该列值不设置数据的时候为 NULL。

image-20231222182726583

而在实际场景中,数据为空是不好的做法,所以为了限制程序员必须给该列设置数据,就设置该列的 Null 字段为 No。

通过在设置字段的时候加上 not null 即可。

image-20231222182422118

默认值

通过 desc 命令查看表结构的时候,还会出现一个 Default 字段,该字段默认是 NULL,也就是当该列值不设置值时默认值就为 NULL。

通过上面的图也能看到该字段。

在建表设置字段的时候,可以通过 default xxx 指定默认值,示例如下:

image-20231222183423595

列描述

当一张表中的字段很多时,就容易忘记某个字段创建时的含义。所以可以在建表的时候给字段加上描述,通过 comment 'xxx'

通过 SHOW CREATE TABLE table_name\G; 命令查看。

image-20231222184248878

zerofill

设置整数的时候,可以在后面加个括号,填上整数。示例如下:

image-20231222184548584

该数字的作用只有在设置 zerofill 约束的时候才体现,作用就是当查看数据的时候最少显示 6 位,不足 6 位的整数高位补 0 。

可以在建表的时候给字段设置上 zerofill 属性。

image-20231222185152046

只是显示的时候高位补了 0,实际存储的还是 2023,而不是 002023。

主键

主键用来约束某个字段不能为 NULL,不能重复,一张表中最多只能有一个主键,且主键通常是整数。

有以下几种方式设置主键:

复合主键

复合主键和主键作用差不多。

有以下几种方式设置复合主键:

自增长

当设置了自增长的字段未给值时,系统会给该字段设置一个值,该值为当前列已有值的最大值+1。当无值时,默认值为 1。

在建表时字段的后面添加上 auto_increment 即可。

image-20231223202228665

唯一键

一张表中,往往可能需要多个字段都保持唯一性,而主键虽然能保证唯一性,但一张表只允许有一个主键。于是唯一键就诞生了,唯一键允许存在多个,并且唯一键允许字段为空。

在建表时,在字段的后面加上 unique 即可。

image-20231223203033728

外键

一个数据库往往不只有一张表,而是有很多表。有可能几张表之间存在业务关系,那么要保证这几张表的数据的正确性,就有了外键约束。

通过添加 FOREIGN KEY(self_key_name) REFERENCES other_table_name(key_name)来建立外键约束。

示例如下:

建立班级表:

image-20231225165855422

建立学生表:

image-20231225170103170

通过 desc 命令可查看学生表如下:

image-20231225170256527

往班级表里插入数据:

image-20231225170447815

往学生表里插入数据:

image-20231225170919012

当往学生表里插入数据的时候并不是想插什么就插什么,而是有着班级表的约束。往学生表里插入数据时,class_id 要么空着,要么就为 班级表里的 id 的值。

本站所有文章转发 CSDN 将按侵权追究法律责任,其它情况随意。