当前位置:网站首页>【MySQL —— 数据库约束】
【MySQL —— 数据库约束】
2022-08-03 00:00:00 【掉了颗兔牙lx】
文章目录
1. 什么是表约束
表约束是在创建表的时候,设计一些表的约束条件用来保证数据的合法性和数据的正确性。
2. 常见约束类型
| 约束 | 说明 |
|---|---|
| UNIQUE | 保证某列的每行必须有唯一的值 |
| NOT NULL | 指示某列不能存储 NULL 值 |
| DEFAULT | 规定没有给列赋值时的默认值 |
| PRIMARY KEY | 确保某列(或两个列多个列的结合)有唯一标 识,有助于更容易更快速地找到表中的一个特定的记录 |
| FOREIGN KEY | 保证一个表中的数据匹配另一个表中的值的参照完整性 |
| CHECK | 保证列中的值符合指定的条件。对于MySQL数据库,对CHECK子句进行分析,但是忽略 CHECK子句 |
2.1 UNIQUE :唯一约束
创建表时指定 sn 列为唯一的:
drop table if exists student;
create table student (
id int not null,
sn int unique,
name varchar(20)
);
ps:唯一约束字段可以插入 NULL ; 唯一约束字段的 NULL 可以插入多个。
2.2 NOT NULL :不为空约束
创建表时指定 id 列不为空:
drop table if exists student;
create table student (
id int not null,
sn int unique,
name varchar(20)
);
2.3 DEFAULT :默认值约束
指定插入数据时,name 列为空,默认值“无名”:
drop table if exists student;
create table student (
id int not null,
sn int unique,
name varchar(20) default '无名'
);
2.4 PRIMARY KEY :主键约束
指定 id 列为主键:
两种使用方式:
方法一:
drop table if exists student;
create table student (
id int not null primary key,
sn int unique,
name varchar(20) default '无名'
);
方法二:
drop table if exists student;
create table student (
id int not null,
sn int unique,
name varchar(20) default '无名',
primary key (id,name)
);
第二种方式常用于多个字段作为主键,也就是联合主键。
*主键的特征:
- 主键可以有多个字段或单个字段组成;
- 主键不能为空且唯一;
- 一个表中只能有一个主键。
对于整数类型的主键,常配搭自增长auto_increment来使用。插入数据对应字段不给值时,使用最大值+1。
使用自增 auto_increment 的注意事项:
- 一个表中只能由一个字段使用 auto_increment;
- auto_increment 必须搭配主外键使用;
- auto_increment 的类型只能时整数;
- 查看自增值:show create table table_name;
- 手动修改自增值的语句:alter table table_name auto_increment = n;
2.5 FOREIGN KEY :外键约束
外键用于关联其他表的主键或唯一键:
foreign key (字段名) references 主表(列)
外键约束同样也约束这父表,当父表种的某个记录被子表依赖的时候,此时尝试修改或删除都会失败。
外键约束的工作原理:在子表中插入新的记录时,就会先根据对应的值,在父表中先查询,查询到之后才能够执行后续的插入。外键要求父表中被依赖的这一列,必须要有索引,有了索引就能大大的提高查询速度。
2.6 CHECK约束
检查约束是保证列中的值符合指定的条件。检查约束在 MySQL 8.0.15 之前不起作用,只做了解。
drop table if exists test_user;
create table test_user (
id int,
name varchar(20),
sex varchar(1),
check (sex ='男' or sex='女')
);
活动地址:CSDN21天学习挑战赛
边栏推荐
- 用了TCP协议,就一定不会丢包吗?
- js显示隐藏手机号
- RollBack Rx Professional RMC 安装教程
- DB2数据库-获取表结构异常:[jcc][t4][1065][12306][4.26.14]CharConvertionException ERRORCODE=-4220,SQLSTATE=null
- 服务间歇性停顿问题优化|得物技术
- 【TypeScript笔记】01 - TS初体验 && TS常用类型
- 九零后程序员心声:互联网的同行们,别卷了,再卷人都卷没了
- matplotlib中的3D绘图警告解决:MatplotlibDeprecationWarning: Axes3D(fig) adding itself to the figure
- FreeRTOS任务管理
- DownMusic总结记录
猜你喜欢
随机推荐
剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
DataGuard日常维护常见问题之数据同步异常
科捷智能冲刺科创板:年营收12.8亿 顺丰与日日顺是股东
SAP 电商云 Spartacus UI 的持续集成 - Continous integration
Nuxt 所有页面都设置上SEO相关标签
js基础知识整理之 —— 字符串
Mock工具之Moco使用教程
ASP.NET网络版进销存管理系统源码【源码免费分享】
【多线程】Thread类的基本用法
7.29
NVM和NRM
十年架构五年生活-03作为技术组长的困扰
Database auditing - an essential part of network security
FreeRTOS任务管理
Speech Synthesis Model Cheat Sheet (1)
服务间歇性停顿问题优化|得物技术
4、Citrix MCS云桌面无法安装todesk等软件
DB2数据库-获取表结构异常:[jcc][t4][1065][12306][4.26.14]CharConvertionException ERRORCODE=-4220,SQLSTATE=null
NLP常用Backbone模型小抄(1)
Oracle 暴跌,倒下了!









