mysql如何实现约束

Crq
Crq
Crq
218
文章
0
评论
2022年4月7日19:14:59
评论
281 965字阅读3分13秒

一、约束的分类

NOT NULL(非空约束)

用于保证该字段的值不能为空

比如姓名、学号等

 

DEFAULT(默认约束)

用于保证该字段有默认值

比如性别

mysql如何实现约束

比如给性别设置默认为‘男’

mysql如何实现约束

PRIMARY KEY(主键约束)

用于保证该字段的值具有唯一性,并且非空

比如学号、员工编号等

mysql如何实现约束

 

mysql如何实现约束

 

UNIQUE(唯一)

用于保证该字段的值具有唯一性,可以为空

比如座位号

 

CHECK(检查约束)

这里重点注意,mysql8.0.15以前的版本存储引擎都不支持 CHECK 约束,你可以正常输入约束,创建约束,语法不会报错,但是约束是不生效的。以前都是用ENUM 类型 或者 触发器代替检查约束这个功能。目前已经支持了。

用途:比如年龄、性别

mysql如何实现约束

输入约束以外的数据会报错。

mysql如何实现约束

create table banji(
ID int primary key,
sex char(2) check (sex in ('男','女')) default '男',
age int check (age >= 16 and age <= 40) default 18,
renshu tinyint ,
check (renshu >=30 and renshu <= 50)
);

比如这个示例,大家可以粘贴到mysql玩玩,里面的检查约束有三个:

性别只能是男或者女,年龄要求在16到40之间,人数在30到50之间。

如果不满足都会拒绝插入该数据。

 

FOREIGN KEY(外键约束)

用于限制两个表的关系,用于保证该字段的值必须来自于主表的关联列的值

在从表添加外键约束,用于引用主表中某列的值

比如学生表的专业编号,员工表的部门编号,员工表的工种编号

添加约束的时机:

1.创建表时

2.修改表时

 

 

约束的添加分类

列级约束

六大约束语法上都支持,但外键约束没有效果

表级约束

除了非空、默认,其他的都支持

主键和唯一的大对比

保证唯一性 是否允许为空 一个表中可以有多少个 是否允许组合

主键 √ ×   至多有1个 √,但不推荐

唯一 √ √    可以有多个 √,但不推荐

外键

1、要求在从表设置外键关系

2、从表的外键列的类型和主表的关联列的类型要求一致或兼容,名称无要求

3、主表的关联列必须是一个key(一般是主键或唯一)

4、插入数据时,先插入主表,再插入从表

5、删除数据时,先删除从表,再删除主表*/

CREATE TABLE表名(

字段名 字段类型 列级约束,

字段名 字段类型,

表级约束

)CREATE DATABASEstudents;

weinxin
我的微信
这是我的微信扫一扫
MySQL最后更新:2022-5-16
Crq
  • 本文由 发表于 2022年4月7日19:14:59
  • 转载请注明:https://www.cncrq.com/10128.html
MySQL从零开始12 MySQL

MySQL从零开始12

12、不看表中的数据,只看表的结构,有一个命令: desc 表名; mysql> desc dept; +--------+-------------+------+-----+--------...
MySQL从零开始1-11 MySQL

MySQL从零开始1-11

1、什么是数据库?什么是数据库管理系统?什么是SQL?他们之间的关系是什么? 数据库: 英文单词DataBase,简称DB。按照一定格式存储数据的一些文件的组合。 顾名思义:存储数据的仓库,实际上就是...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: