MySQL创建表时添加约束

创建表时添加约束

①列级约束

演示:

sql 复制代码
CREATE TABLE students(
id INT PRIMARY KEY,#主建约束(唯一性,非空)
s_name VARCHAR(10) NOT NULL, #非空
s_sex CHAR(1) CHECK(s_sex='男' OR s_sex='女'),#检查约束(Mysql无效)
s_seat INT UNIQUE,#唯一约束
age INT DEFAULT 18, #默认约束
major_id INT REFERENCES majors(id) #这是外键,写在列级,Mysql无效
)
CREATE TABLE majors(
id INT PRIMARY KEY,
m_name VARCHAR(20) NOT NULL
)

②表级约束

sql 复制代码
DROP TABLE IF EXISTS students;
CREATE TABLE students(
id INT ,
s_name VARCHAR(10) ,
s_sex CHAR(1),
s_seat INT,
age INT ,
major_id INT , #这里下面有表级约束,要隔开,有逗号
CONSTRAINT pk PRIMARY KEY(id),#为id添加主建约束,pk是起的名,后面一样
CONSTRAINT uq UNIQUE(s_seat),#唯一性约束
CONSTRAINT ck CHECK(s_sex='男' OR s_sex='女'),#查询约束
CONSTRAINT fk_students_majors FOREIGN KEY(major_id) REFERENCES majors(id)#外键约束
);

总结一下表级约束的语法

【constraint 约束名字】 约束类型(字段名称) 【额外的东西,如外键】

一般情况下MySQL的约束

主建,非空,唯一性,默认等这些写在列级

外键约束写在表级!

相关推荐
qq_65436698几秒前
SQL嵌套查询中的变量传值_优化存储过程逻辑
jvm·数据库·python
Austindatabases几秒前
阿里云MongoDB 部署安全吗? 多可用区怎么搞?
数据库·安全·mongodb·阿里云·云计算
m0_748920363 分钟前
持久化存储如何与后端接口同步?解决本地缓存与数据库不一致痛点
jvm·数据库·python
qq_330037994 分钟前
Python如何安装特定架构包_32位与64位系统兼容性处理
jvm·数据库·python
y = xⁿ9 分钟前
MySQL常见八股:索引
数据库·mysql
希望永不加班10 分钟前
SpringBoot 缓存一致性:缓存与数据库双写策略
数据库·spring boot·后端·缓存·oracle
2401_8836002514 分钟前
Electron 中正确实现主进程异步操作的 Renderer 端回调机制
jvm·数据库·python
草莓熊Lotso19 分钟前
手搓工业级 C++ 线程安全日志系统:基于策略模式解耦,兼容 glog 使用风格
linux·运维·服务器·数据库·c++·安全·策略模式
2402_8548083719 分钟前
c++ RAII机制详解 c++如何利用RAII管理资源
jvm·数据库·python
吕源林21 分钟前
CSS如何使用Less的Merge功能合并多个属性值_通过逗号或空格组织css参数
jvm·数据库·python