CSDN博主:【java_wxid】
CSDN博主:点击【Java廖志伟】
CSDN社区:点击【幕后大佬】
码云:点击【互联网Java工程师知识扫盲】
随笔 - 882,  文章 - 0,  评论 - 1,  阅读 - 51800

回退至Mysql数据库理论与实战

#常见约束

理解:约束是用于限定表的字段的,为了保证数据表的完整性
常见约束:★
(not null)NOT NULL 非空:用于限定某字段为必填项,比如姓名、id等
(default)DEFAULT 默认:用于限定某字段如果没有显式的插入值,默认存储的选项,比如性别、成绩等
(primary key)PRIMARY KEY主键:用于限定某字段是唯一的、非空的,比如学号
(unique)UNIQUE 唯一:用于限定某字段是唯一的,可以为空,比如:座位号
(check)CHECK检查:用于限定某字段必须满足指定条件,比如
check (gender = ‘男’ or gender =‘女’)
但是:mysql不支持
(foreign key)FOREIGN KEY外键:用于限定两个表的关系,比如学员信息表和专业表通过专业编号关联
【面试题】主键和唯一的对比
主键:唯一、非空、一个表至多有一个主键
唯一:唯一、可以为空、一个表可以有多个唯一键

#一、创建表时添加约束 √

分类:
列级约束:直接放在字段的后面,对当前字段有效
not null、default、unique、primary key
表级约束:放在所有字段的下面,对显式指定的字段有效
primary key、unique、foreign key
二者的区别:
①表级约束可以起名,语法:
【constraint 约束名】 约束类型(字段)
其中主键起名后,也无效!
②列级约束不能起名
语法:
create table 表名(
字段名 字段类型 约束类型,
字段名 字段类型 约束类型,

约束
)

#示例1:主键和唯一放在列级约束上

CREATE TABLE grade(
	id INT PRIMARY KEY,
	gradename VARCHAR(20)
)
CREATE TABLE testTab1(
	id INT PRIMARY KEY,#主键
	tname VARCHAR(20) NOT NULL,#非空
	gender CHAR DEFAULT '男',#默认
	seat INT  UNIQUE NOT NULL,#唯一+非空
	gradeId INT ,
	FOREIGN KEY(gradeid) REFERENCES grade(id)
);

#示例2:主键和唯一放在表级约束上

DROP TABLE IF EXISTS testTab1;
CREATE TABLE testTab1(
	id INT ,#主键
	tname VARCHAR(20) NOT NULL,#非空
	gender CHAR DEFAULT '男',#默认
	seat INT  ,#唯一+非空
	gradeId INT ,
	FOREIGN KEY(gradeid) REFERENCES grade(id),
	PRIMARY KEY(id),
	UNIQUE(seat)
);

#二、修改表时添加约束【了解】

DROP TABLE IF EXISTS testTab1;
CREATE TABLE testTab1(
	id INT ,
	tname VARCHAR(20) ,
	gender CHAR,
	seat INT  ,
	gradeId INT 
);

#1、添加非空
ALTER TABLE testTab1 MODIFY COLUMN tname VARCHAR(20) NOT NULL;
#2、添加默认
ALTER TABLE testTab1 MODIFY COLUMN gender CHAR DEFAULT ‘女’;
#3、添加唯一
#列级约束的方式
#ALTER TABLE testTab1 MODIFY COLUMN seat int unique;
#表级约束的方式
ALTER TABLE testTab1 ADD CONSTRAINT uq UNIQUE(seat);
#4、添加主键
#列级约束的方式
ALTER TABLE testTab1 MODIFY COLUMN id INT PRIMARY KEY;
#表级约束的方式
#ALTER TABLE testTab1 ADD primary key(id);
#5、添加外键
ALTER TABLE testTab1 ADD CONSTRAINT fk_t_g FOREIGN KEY(gradeid) REFERENCES grade(id);
#三、修改表时删除约束【了解】

#1、删除非空
ALTER TABLE testTab1 MODIFY COLUMN tname VARCHAR(20) NULL;
#2、删除默认
ALTER TABLE testtab1 MODIFY COLUMN gender CHAR;
#3、删除唯一(唯一约束的名字默认和字段名一致)
ALTER TABLE testtab1 DROP INDEX seat;
#4、删除主键
ALTER TABLE testtab1 DROP PRIMARY KEY;
#5、删除外键
ALTER TABLE testtab1 DROP FOREIGN KEY fk_t_g;
SHOW INDEX FROM testtab1;
posted on   我是廖志伟  阅读(5)  评论(0编辑  收藏  举报  
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

南北踏尘
点击右上角即可分享
微信分享提示