当前位置:网站首页>【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天学习挑战赛
边栏推荐
猜你喜欢
随机推荐
pytest-常用运行参数
UE5 官方案例Lyra 全特性详解 8.如何用配置表初始化角色数据
科捷智能冲刺科创板:年营收12.8亿 顺丰与日日顺是股东
SAP 电商云 Spartacus UI 的持续集成 - Continous integration
稳压电源: 电路图及类型
Merge two excel spreadsheet tools
几种常见的跨域解决方法
nmap: Bad CPU type in executable
Let's talk about the charm of code language
程序员常说的“左手锟斤拷,右手烫烫烫”是怎么回事?
js基础知识整理之 —— 全局作用域
Canonical correlation analysis of CCA calculation process
js显示隐藏手机号
和睦家私有化后换帅:新风天域吴启楠任CEO 李碧菁靠边站
letcode 第20题-有效的括号
十年架构五年生活-03作为技术组长的困扰
【问题征集】向 iPod 之父、iPhone 联合设计者、Google Nest 创始人 Tony Fadell 提问啦
升级版的冒泡排序:鸡尾酒排序(快乐小时排序)
绿色版-SQL环境搭建
智能合约安全-可重入攻击(SW107-Reentrancy)