MySQL基础_7.约束
约束是一种限制,用于限制表中的数据,保证表中数据的准确和可靠性;添加约束的时机:1.创表时;2.修改表时
约束的分类
语法 | 作用 | 详述 |
---|---|---|
not null | 非空 | 用于保证该字段的值不能为空 |
default | 默认 | 用于保证该字段有默认值 |
primary key | 主键 | 用于保证该字段的值具有唯一性 并且非空 |
unique | 唯一 | 用于保证该字段的值具有唯一性 可以为空 |
check | 检查约束 | mysql不支持 |
foreign key | 外键 | 两表关系,用于保证该字段的值必须来自于主表的关联列的值(在从表添加外键约束, 用于引用主表中某列的值) |
方式 | 效果 |
---|---|
列级约束 | 6大约束语法都支持 但外键约束没有效果 |
表级约束 | 除了非空 默认 其他都支持 |
---- | ---- |
单列约束 | .... |
多列约束 | .... |
查看表中约束
select * from information_schema.table_constraints where table_name = 'BBS_article2tag';
¤ 查看的是所有的表已经添加的约束
约束的使用
create table 表名(
字段名 字段类型 列级约束(check和外键不支持),
字段名 字段类型 列级约束(check和外键不支持),
表级约束)
添加表约束语法
- 用法:constraint 约束名 约束类型(字段名) # 约束名可以不起
create table test2(
id int unique,
last_name varchar(15),
email varchar(25),
salary decimal(10,2),
constraint uk_test2_email unique(email);
);
CREATE TABLE stuinfo(
id INT,
stuname VARCHAR(20),
gender CHAR(1),
seat INT,
age INT,
majorid INT,
PRIMARY KEY(id),
UNIQUE(seat),
FOREIGN KEY(majorid) REFERENCES major(id)
);
- 通用写法
create table if not exists stuinfo(
id int primary key,
stuname varchar(20) not null,
sex char(1),
age int default 18,
seat int unique,
majorid int,
foreign key(majorid) references major(id)
);
非空和默认
CREATE TABLE test1(
id INT,
last_name VARCHAR(15) NOT NULL,
email VARCHAR(25),
salary DECIMAL(10,2)
);
DESC test1;
INSERT INTO test1(id,last_name,email,salary) VALUES(1,'tom','tom@126.com',3399);
ALTER TABLE test1 MODIFY salary VARCHAR(25) NOT NULL;
主键和唯一
primary key主键 | 唯一性,不为空 | 最多有一个,可以组合 |
unique 唯一 | 唯一性,可为空 | 可以有多个,可以组合 |
组合主键
create table if not exists stuinfo(
id int unique,
stuname varchar(20) not null,
sex char(1),
age int default 18,
primary key(id, stuname),
foreign key(majorid) references major(id)
);
create table test2(
id int unique,
last_name varchar(15),
email varchar(25) unique,
salary decimal(10,2)
)
外键约束
要求在从表设置外键关系;从表的外键列的类型和主表的对应列的类型要求一致或者兼容;主表的关联列必须是一个key(主键或者唯一键);插入数据时 先插入主表 再插入从表;删除数据时 先删除从表 再删除主表
auto_increment
自增长约束,一个表最多只能有一个,必须是主键;如果自增列指定了0或null,会在当前最大值基础上自增,如果指定了具体值,直接赋值为具体值。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了