MySQL的约束
2021/4/26 2:25:26
本文主要是介绍MySQL的约束,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
MySQL约束的介绍
什么是约束,就是限制,限制我们表中的数据,保证添加到数据表中的数据准确和可靠性!凡是不符合约束的数据,插入时就会失败
约束的分类: 1、not null:非空约束,保证字段的值不能为空,比如学生信息表中的“学号”、“姓名”等都是不能为空的 2、default:默认约束,保证字段总会有值,即时没有插入值,都会有默认值 3、primary key:主键约束,同时保证唯一性和非空 4、unique:唯一,保证唯一性但可以为空,比如座位号 5、check:检查性约束【mysql不支持,语法不报错,但无效】,SQLserver和Oracle数据库可以用 例如性别字段,只能为男或女,如果插入的非这两种情况,则插入不进去 6、foreign key:外键约束,用于限制两个表的关系,保证从表该字段的值必须来自于主表相关联的字段的值,不能无中生有(外键约束是在从表里面,外键必须是主表里的键) 比如:员工信息表中的部门编号的值,就必须有外键约束
什么时候添加约束: 1、创建表的时候添加 2、修改表的时候添加
添加约束的分类: 1、列表约束 6种约束都可以写,语法都支持,不报错,但外键约束写了等于白写 2、表级约束: 非空、默认不支持,其他都可以
1、创建表中添加约束
1、列级约束 示例:创建一个学生表 create table students ( id int primary key, --主键约束 s_name varchar(100) not null, --非空约束 s_sex char(1) not null default '女' check(s_sex='男' or s_sex='女') , --一个字段后可以跟多个约束,检查性约束和非空约束和默认约束 s_birthday date, c_id int references courses(id) --外键约束,关联的外键表为凑course 列级别的外键约束不生效,外键约束只能用表级约束才能生效 ) create table courses ( id int primary key, c_name varchar(20) not null ) 2、表级约束 示例: create table students ( id int, s_name varchar(100) , s_sex char(1) , s_birthday date, c_id int, #表级约束 constraint pk parimary key(id), --主键约束,pk是起的名字,后面类似;constraint pk 可以省略,mysql会自动默认一个名字 constraint uq uniqe(s_name), --唯一性约束 constraint ck check(s_sex='男' or s_sex='女'), --查询约束 constraint fk_students_courses foreign key(c_id) references courses(id) ) 表级约束的语法: 【constraint 约束名字】 约束类型(字段名称) 【额外的东西,如外键】 一般情况下MySQL的约束: 主键,非空,唯一性,默认等这些写在列级 外键约束写在表级
2、主键、唯一键的区别和外键特点
主键和唯一约束键的区别: 1、主键约束:同时保证唯一和非空 在同一个表中主键只能有一个 2、唯一约束:保证唯一但是可以为空 在同一个表中唯一约束有很多个 外键的特点: 1、要求在从表上设置外键约束 2、从表上的列和主表上的对应的关联列的数据类型必须一致,含义意义一致 3、主表上的关联列必须是一个key,一般是主键,很少时候也可以是唯一键 4、插入数据时,先插入主表,在插入从表;删除的时候,要先删除从表记录,再删除主表记录
3、MySQL修改表时添加和删除约束
假设有一个students表,没有任何约束 1、非空约束: alter table students modify column s_name varchar(10) not null; --添加分空约束 alter table students modify column s_name varchar(10); --删除非空约束 2、添加默认约束: alter table students modify column s_age int default 18; alter table students modify column s_age int; --删除默认约束 3、添加主键: alter table students modify column id int primary key; -- 添加主键约束 alter table students drop primary key; --删除主键约束 4、添加唯一键: alter table students modify column s_name varchar(10) unique; --添加唯一键 alter table students drop index s_name; --删除唯一约束 5、外键: alter table students add foreign key(c_id) references courses(id); alter table students drop foreign key students_ibfk_1; --删除外键约束语法:drop foreign key+约束名称(需要先查到约束名称)
4、MySQL标识列
标识列:有叫自增长列,可以不用插入值,MySQL自动提供默认的序列值
创建表中添加自增长列: create table t_identity( id int primary key auto_increment, iname varchar(10) )
总结: 1、自增长列必须和键(一般是主键)搭配 2、一个表中有且只能有一个自增长列 3、自增长列的类型只能是数值型,一般情况用int 4、自增长列可以设置步长(set auto_increment = 3),也可以手动插入一个数值改变起始值
修改表的时候添加自增长列: alter table t_identity modify column id int auto_increment; 删除自增长列: alter table t_identity modify column id int;
这篇关于MySQL的约束的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-20部署MySQL集群入门:新手必读指南
- 2024-11-20部署MySQL集群教程:初学者指南
- 2024-11-20部署MySQL集群项目实战:新手教程
- 2024-11-20部署MySQL集群资料:新手入门教程
- 2024-11-20MySQL集群部署教程:入门级详解
- 2024-11-20MySQL集群教程:入门与实践指南
- 2024-11-20部署MySQL集群教程:新手入门指南
- 2024-11-20MySQL读写分离教程:轻松入门
- 2024-11-20部署MySQL集群入门:一步一步搭建你的数据库集群
- 2024-11-19部署MySQL集群学习:入门教程