MySQL约束汇总
2021/10/30 19:17:22
本文主要是介绍MySQL约束汇总,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录
- 数据库约束
- 1.NOT NULL(必填项)
- 2.UNIQUE(唯一约束)
- 3.DEFAULT(默认值)
- 4.PRIMARY KEY(主键约束)
- auto_increment:
- 5.FOREIGN KEY(外键约束)
- 6.CHECK(约束)
- 总结
数据库约束
1.NOT NULL(必填项)
not null 指示某列不能存储 NULL 值,也就是插入数据不能为空。
create table student ( id int, -- 学生姓名不能为空 name varchar(20) not null );
2.UNIQUE(唯一约束)
保证某列的每行必须有唯一的值
create table student ( -- id不能为空 id int not null, -- 学号不能重复 sn int unique );
3.DEFAULT(默认值)
当数据没有指定值的时候,会给一个默认值。如果不显示指定默认值,默认值就为null
create table student ( -- id不能为空 id int not null, -- 学号不能重复 sn int unique, -- 没给学生指定名字则为默认值 未命名 name varchar(15) default '未命名' );
4.PRIMARY KEY(主键约束)
主键就相当于: not null + unique
一张表只能有一个主键,主键就相当于一条记录的唯一身份标识,不能为且是唯一的
create table student ( -- id设置为主键 id int primary key, -- 不能重复 sn int unique, -- 默认值 name varchar(15) default '未命名' );
auto_increment:
对于整数类型的主键,常配搭自增长auto_increment来使用。插入数据对应字段不给值时,使用最大值+1
create table student ( -- id设置为主键 id int primary key auto_increment, -- 不能重复 sn int unique, -- 默认值 name varchar(15) default '未命名' );
当
自增主键,在MySQL内部维护了一个全局变量,每次插入的记录如果指定的是null,全局变量++
即使你删除了前面的一些数据,全局变量也不受影响,会继续++。
如果手动插入的值,超过当前的全局变量,全局变量就会直接更新。
就算表的数据清空了,全局变量还是会保存。除非把表删除。
注意:这样自增主键策略只是局限于单台数据库,如果是多个数据库(分表分库的情况),自增主键就无能为力了(没法保证id不重复)。
5.FOREIGN KEY(外键约束)
语法:
foreign key (字段名) references 主表(列)
外键是MySQL中比较复杂的一个约束,外键一般和主键搭配使用。
主键所在的表就是主表,而外键所在的表就是父表
定义外键需要注意几个点:
- 必须为主表定义一个主键且链接的也必须是主表的主键
- 往子表插入数据时,外键对应的数据在主表中必须存在
- 子表外键的数据类型必须和主表主键的数据类型一致
- 主表与子表建立连接后就产生了关联关系,此时就不能随便删除主表中的数据
代码示例:
创建一张学生表
-- 创建一个班级表,id为主键 create table class ( id int primary key auto_increment, name varchar(20) );
再创建一张班级表,通过学生表里的 class_id 字段来关联班级表中的主键id。
一个班级对应多个学生,一个学生对应一个班级
-- 创建一张学生表 create table student ( id int primary key auto_increment, sn int unique, name varchar(15) not null, class_id int, foreign key (class_id) references class(id) );
这样学生表就依赖于班级表存在了
6.CHECK(约束)
注意:在MySQL中使用此约束不会报错,但时没有任何效果。所以请忽略此约束。
总结
- not null :非空
- unique:唯一值
- default:默认值
- primary key (not null + unique) :主键,唯一标识
- foreign key :外键
- check:MySQL中此约束无效!
这篇关于MySQL约束汇总的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-16MySQL资料:新手入门教程
- 2024-11-16MySQL资料:新手入门教程
- 2024-11-15MySQL教程:初学者必备的MySQL数据库入门指南
- 2024-11-15MySQL教程:初学者必看的MySQL入门指南
- 2024-11-04部署MySQL集群项目实战:新手入门教程
- 2024-11-04如何部署MySQL集群资料:新手入门指南
- 2024-11-02MySQL集群项目实战:新手入门指南
- 2024-11-02初学者指南:部署MySQL集群资料
- 2024-11-01部署MySQL集群教程:新手入门指南
- 2024-11-01如何部署MySQL集群:新手入门教程