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的约束

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

外键约束写在表级!

相关推荐
2401_83141944几秒前
如何防止MongoDB副本集被误初始化_副本集名称(replSetName)锁定
jvm·数据库·python
阿丰资源7 分钟前
基于Spring Boot的美容院管理系统(附源码+数据库+文档)
数据库·spring boot·后端
徐子童9 分钟前
复合索引会失效的场景
数据库·mysql·面试题·索引失效
abc123456sdggfd12 分钟前
解决Socket图像传输中断问题:基于分块接收与可靠发送的完整教程
jvm·数据库·python
2401_8330336212 分钟前
SQL中RIGHT JOIN真的很少用吗_数据完整性检查与反向关联分析
jvm·数据库·python
摇滚侠28 分钟前
sqlplus “/ as sysdba“ 什么意思
java·数据库·oracle
duangww35 分钟前
OPEN SQL去掉文本中间的空格
数据库·abap
zxrhhm36 分钟前
MySQL 索引回表(Back to Table)详解
数据库·mysql
m0_7414817838 分钟前
Vue.js核心基础之响应式系统与虚拟DOM渲染关联机制
jvm·数据库·python
Gauss松鼠会44 分钟前
GaussDB数据库统计信息自动收集机制
数据库·经验分享·sql·oracle·gaussdb