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

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

外键约束写在表级!

相关推荐
CoderIsArt30 分钟前
Redis的三种模式:主从模式,哨兵与集群模式
数据库·redis·缓存
师太,答应老衲吧3 小时前
SQL实战训练之,力扣:2020. 无流量的帐户数(递归)
数据库·sql·leetcode
Yaml43 小时前
Spring Boot 与 Vue 共筑二手书籍交易卓越平台
java·spring boot·后端·mysql·spring·vue·二手书籍
Channing Lewis4 小时前
salesforce case可以新建一个roll up 字段,统计出这个case下的email数量吗
数据库·salesforce
追风林4 小时前
mac 本地docker-mysql主从复制部署
mysql·macos·docker
毕业设计制作和分享5 小时前
ssm《数据库系统原理》课程平台的设计与实现+vue
前端·数据库·vue.js·oracle·mybatis
ketil275 小时前
Redis - String 字符串
数据库·redis·缓存
Hsu_kk6 小时前
MySQL 批量删除海量数据的几种方法
数据库·mysql
编程学无止境6 小时前
第02章 MySQL环境搭建
数据库·mysql
knight-n6 小时前
MYSQL库的操作
数据库·mysql