MySQL入门命令之约束、标识列
2021/5/9 19:25:47
本文主要是介绍MySQL入门命令之约束、标识列,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
约束
含义:一种限制,用于限制表中的数据,为保证表中的数据的准确性和可靠性
分类:六大约束 not null:非空,用于保证该字段的值不能为空 default:默认,用于保证该字段有默认值 primary key:主键,用于保证该字段具有唯一性,并且非空 unique:唯一,用于保证该字段的值具有唯一性,可以为空 check:检查约束【MySQL不支持】 foreign key:外键,用于限制两个表的关系,用于保证该字段的值必须来自主表的关联列的值。在从表添加外键约束,用于引用主表中某列的值 添加约束的时机: 1、创建表时 2、修改表时 约束的添加分类: 1、列级约束 六大约束语法上都支持,但外键约束没有效果 2、表级约束 除了非空、默认,其他都支持 create table 表名( 字段名 字段类型 列级约束 字段名 字段类型 表级约束); 推荐写法 CREATE TABLE IF NOT EXISTS stuinfo( id INT PRIMARY KEY, stuname VARCHAR(20) NOT NULL, sex CHAR(1), age INT DEFAULT 18, seat INT UNIQUE, majorid INT, CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id) ); 主键和唯一的区别 ```sql 主键和唯一的大对比: 保证唯一性 是否允许为空 一个表中可以有多少个 是否允许组合 主键 √ × 至多有1个 √,但不推荐 唯一 √ √ 可以有多个 √,但不推荐 外键: 1、要求在从表设置外键关系 2、从表的外键列的类型和主表的关联列的类型要求一致或兼容,名称无要求 3、主表的关联列必须是一个key(一般是主键或唯一) 4、插入数据时,先插入主表,再插入从表 删除数据时,先删除从表,再删除主表 CREATE TABLE 表名( 字段名 字段类型 列级约束, 字段名 字段类型, 表级约束 ) CREATE DATABASE students; 一、创建表时添加约束 1.添加列级约束 语法: 直接在字段名和类型后面追加 约束类型即可。 只支持:默认、非空、主键、唯一 USE students; DROP TABLE stuinfo; CREATE TABLE stuinfo( id INT PRIMARY KEY,#主键 stuName VARCHAR(20) NOT NULL UNIQUE,#非空 gender CHAR(1) CHECK(gender='男' OR gender ='女'),#检查 seat INT UNIQUE,#唯一 age INT DEFAULT 18,#默认约束 majorId INT REFERENCES major(id)#外键 ); CREATE TABLE major( id INT PRIMARY KEY, majorName VARCHAR(20) ); 查看stuinfo中的所有索引,包括主键、外键、唯一 SHOW INDEX FROM stuinfo; #2.添加表级约束 语法:在各个字段的最下面 【constraint 约束名】 约束类型(字段名) 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 uq UNIQUE(seat),#唯一键 CONSTRAINT ck CHECK(gender ='男' OR gender = '女'),#检查 CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id)#外键 ); SHOW INDEX FROM stuinfo; 通用的写法:★ CREATE TABLE IF NOT EXISTS stuinfo( id INT PRIMARY KEY, stuname VARCHAR(20), sex CHAR(1), age INT DEFAULT 18, seat INT UNIQUE, majorid INT, CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id) ); 二、修改表时添加约束 1、添加列级约束 alter table 表名 modify column 字段名 字段类型 新约束; 2、添加表级约束 alter table 表名 add 【constraint 约束名】 约束类型(字段名) 【外键的引用】; 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; 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 stuinfo ADD CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id); 三、修改表时删除约束 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; 5.删除外键 ALTER TABLE stuinfo DROP FOREIGN KEY fk_stuinfo_major; SHOW INDEX FROM stuinfo;
标识列
又称自增长列。
可以不用手动的插入值,系统提供默认的序列值
标识列只能由一个,不一定必须和主键搭配但要是一个key
标识列的类型只能是数值型
标识列的起始值可以主动修改,也可以插入一个新值之后会自动按照新值自增长
一:创建表时设置标识列 DROP TABLE tab; CREATE TABLE tab( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20) ); INSERT INTO tab VALUES(NULL,'john');#重复执行5次 INSERT INTO tab(name) VALUES('john');效果相同 SELECT * FROM tab; +----+------+ | id | name | +----+------+ | 1 | john | | 2 | john | | 3 | john | | 4 | john | | 5 | john | | 6 | john | +----+------+ 查看自增长步长和起始值 mysql> show variables like '%auto_increment%'; +--------------------------+-------+ | Variable_name | Value | +--------------------------+-------+ | auto_increment_increment | 1 | | auto_increment_offset | 1 | +--------------------------+-------+ 2 rows in set, 1 warning (0.00 sec) 修改步长 mysql> set auto_increment_increment=3; Query OK, 0 rows affected (0.00 sec) mysql> show variables like '%auto_increment%'; +--------------------------+-------+ | Variable_name | Value | +--------------------------+-------+ | auto_increment_increment | 3 | | auto_increment_offset | 1 | +--------------------------+-------+ 2 rows in set, 1 warning (0.00 sec)
更多MySQL命令
这篇关于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集群学习:入门教程