MySQL-常见的约束介绍、列级约束
常见约束
列级约束
USE books
CREATE TABLE major(
id INT PRIMARY KEY, #主键
majorName VARCHAR(20)
);
CREATE TABLE stuinfo(
id INT PRIMARY KEY,#主键
stuName VARCHAR(20) NOT NULL,#非空
gender CHAR(1) CHECK(gender='男' OR gender ='女'), #检查
seat INT UNIQUE,#唯一
age INT DEFAULT 18,#默认约束
majorId INT REFERENCES major(id)#外键
);
DESC `stuinfo`;
#查看stuinfo表中所有的索引,包括主键、外键、唯一
SHOW INDEX FROM `stuinfo`
表的列的属性
表的列的索引
索引值查看
列级约束中 主键和检测都不支持
列级约束的总结
添加表级约束
# 添加表级约束
drop table if exists stuinfo
CREATE TABLE stuinfo(
id INT,
stuname VARCHAR(20),
gender CHAR(1),
seat INT,
age INT,
majorid INT,
CONSTRAINT pk PRIMARY KEY(id),#主键
CONSTRAiNT ug UNIQUE(seat),#唯——键
CONSTRAINT ck CHECK(gender='男' OR gender='女'),#检查
CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id)#外键
);
SHOw iNDEX FROM stuinfo;
语法:
列级约束和表级约束的通用写法
主键 primary key 和唯一 unique 大对比
外键的特点
添加列级约束的时候 一个字段可以添加多个约束 只要空格隔开就行
修改表时 添加约束
# 修改表时 添加约束
drop table if exists stuinfo;
CREATE TABLE stuinfo(
id INT,
stuname VARCHAR(20),
gender CHAR(1),
seat INT,
age INT,
majorid INT
);
desc `stuinfo`
#1.添加非空约束
alter table `stuinfo` modify column stuname VARCHAR(20) not null;
列级约束和表级约束有什么区别?
约束范围不一样
列级约束是定义在列属性中的,而表级约束是定义在列之后的,两者本质上没什么区别,而如果你的约束需要同时对多列进行约束那么就只能采用表级约束,因为表级约束面向的是表(当然就包括所有列),而列级约束只能针对该列进行约束。
修改表时删除约束
转载请注明出处,欢迎讨论和交流!