MySQL-常见的约束介绍、列级约束

常见约束

image

image

image

列级约束

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`

image

表的列的属性

image

表的列的索引

image

索引值查看

image

列级约束中 主键和检测都不支持

image

列级约束的总结

image

添加表级约束

# 添加表级约束
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;

image

语法:

image

列级约束和表级约束的通用写法

image

主键 primary key 和唯一 unique 大对比

image

外键的特点

image

添加列级约束的时候 一个字段可以添加多个约束 只要空格隔开就行

image

修改表时 添加约束

# 修改表时 添加约束
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;

image

image

image

image

列级约束和表级约束有什么区别?

约束范围不一样

列级约束是定义在列属性中的,而表级约束是定义在列之后的,两者本质上没什么区别,而如果你的约束需要同时对多列进行约束那么就只能采用表级约束,因为表级约束面向的是表(当然就包括所有列),而列级约束只能针对该列进行约束。

修改表时删除约束

image

image

posted @ 2022-05-26 09:12  司砚章  阅读(154)  评论(0编辑  收藏  举报