MySQL常见约束(主键,外键,默认,非空,检查,唯一)
2022/1/11 19:03:27
本文主要是介绍MySQL常见约束(主键,外键,默认,非空,检查,唯一),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
#常见约束 /* 六大约束 NOT NULL :非空 DEFAULT :默认 保证该字段有默认值 PRIMARY KEY :主键 保证该字段有唯一性且非空 UNIQUE : 保证唯一但可以为空 CHECK :检查约束(MySQL中不支持)限制该字段的值在一个范围 FOREIGN KEY :外键 从表中添加外键约束,引用主表中某列的值 语法:列名 类型 ,【constraint 约束名】 foreign key(majorId) references major(id); 添加约束的时机 1、创建表时 2、修改表时 分类 列级约束: 六大约束语法上都支持,但是外键约束没有效果 表级约束: 除了非空和默认,其他都支持 */ #一、创建表时添加约束 CREATE DATABASE students; USE students; #1、添加列级约束 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 ,FOREIGN KEY(majorId) REFERENCES major(id) ); CREATE TABLE major( id INT PRIMARY KEY, majorName VARCHAR(20) ); #2、添加表级约束 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 un UNIQUE(seat), CONSTRAINT fk CHECK(gender='男' OR gender='女'), CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorId) REFERENCES `major`(id) #constraint和约束名可以省略 ); SHOW INDEX FROM stuinfo; #通用写法:外键约束用表级约束,其他用列级约束 #主键和唯一的区别!!!!!!!!面试题 /* 是否保证唯一 是否允许为空 一个表中有几个 是否允许组合 主键 是 否 <=1 是,但不推荐 唯一 是 是 任意 是,但不推荐 主键组合 primary key(id,stuname)二者共同充当主键 如 insert into students values (1,'john',...) insert into students values (2,'john',...) insert into students values(1,'john',...) insert into students values(1,'lily',...) 上面两组皆可插入成功 insert into students values(1,'john',...) insert into students values(1,'john',...) 这组不行 */ #外键的特点!!! /* 1、要求再从表设置外键关系 2、从表外键列的类型和主表的关联列的类型要求一致或兼容,名称无要求 3、要求主表的关联列必须是一个key(一般是主键,或者唯一键,主键居多) 4、要求插入数据时,先插入主表,再插入从表 删除数据时,先删除从表,在删除主表 */ #修改表时添加约束 #1、添加非空约束 ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR(20) NOT NULL; #2、添加默认约束 ALTER TABLE stuinfo MODIFY COLUMN age INT DEFAULT 18; #3、添加主键 ALTER TABLE stuinfo MODIFY COLUMN id INT PRIMARY KEY;#列级约束 ALTER TABLE stuinfo ADD PRIMARY KEY(id);#表级约束 #4、添加唯一 ALTER TABLE stuinfo MODIFY COLUMN seat INT UNIQUE;#列级约束 ALTER TABLE stuinfo ADD UNIQUE(seat);#表级约束 #5、添加外键 ALTER TABLE stuindo ADD CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id);#可省略constraint #修改表时删除约束 #1、删除非空约束 ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR(20) NULL; #2、删除默认约束 ALTER TABLE stuinfo MODIFY COLUMN age INT; #3、删除主键 ALTER TABLE stuinfo DROP PRIMARY KEY; #4、删除唯一 ALTER TABLE stuinfo DROP INDEX seat;#seat为key name SHOW INDEX FROM stuinfo;#先查看key name #5、删除外键 ALTER TABLE stuinto DROP FOREIGN KEY fk_stuinfo_major;#fk_stuinfo_major为key name
这篇关于MySQL常见约束(主键,外键,默认,非空,检查,唯一)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-20部署MySQL集群入门:新手必读指南
- 2024-11-20部署MySQL集群教程:初学者指南
- 2024-11-20部署MySQL集群项目实战:新手教程
- 2024-11-20部署MySQL集群资料:新手入门教程
- 2024-11-20MySQL集群部署教程:入门级详解
- 2024-11-20MySQL集群教程:入门与实践指南
- 2024-11-20部署MySQL集群教程:新手入门指南
- 2024-11-20MySQL读写分离教程:轻松入门
- 2024-11-20部署MySQL集群入门:一步一步搭建你的数据库集群
- 2024-11-19部署MySQL集群学习:入门教程