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

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

外键约束写在表级!

相关推荐
gameboy03112 分钟前
从MySQL迁移到PostgreSQL的完整指南
数据库·mysql·postgresql
xdl259939 分钟前
Spring Boot中集成MyBatis操作数据库详细教程
数据库·spring boot·mybatis
回到原点的码农39 分钟前
Spring Data JDBC 详解
java·数据库·spring
zb2006412044 分钟前
Spring Boot 实战:轻松实现文件上传与下载功能
java·数据库·spring boot
CSharp精选营1 小时前
SQL Server安装避坑:这8个奇葩报错你遇到过几个?
数据库·sql server·安装指南·避坑
一勺菠萝丶1 小时前
Flowable + Spring 集成踩坑:流程结束监听器查询历史任务为空 & 获取不到审批意见
java·数据库·spring
RDCJM1 小时前
mysql表添加索引
数据库·mysql
czlczl200209252 小时前
Redis命令处理逻辑模型
数据库·redis·缓存
楼兰胡杨3 小时前
面试题|MySQL 的 3 层主键索引最多能支撑多少数据量
mysql·面试题
spring2997923 小时前
LangChain-08 Query SQL DB 通过GPT自动查询SQL
数据库·sql·langchain