1 约束类型
约束主要完成对数据的检验,保证数据库数据的完整性;如果有相互依赖数据,保证该数据不被删除。
常用五类约束:
1. not null:非空约束,指定某列不为空
2. unique: 唯一约束,指定某列或几列组合的数据不能重复
3. primary key:主键约束,指定某列或几列组合的数据非空且唯一
4. foreign key:外键,指定该列记录属于主表中的一条记录,参照另一条数据
5. check:检查,指定一个表达式,用于检验指定数据
根据约束数据列限制,约束可分为:
单列约束:每个约束只约束一列
多列约束:每个约束约束多列数据
NOT NULL和DEFAULT只存在列级约束
create table temp( id int auto_increment, name varchar(20), age int, primary key(id), /*check 约束*/ check(age > 20) );
上面 check 约束要求 age 必须大于 20,在 mysql 8.0 之前但没有任何作用。但是创建 table 的时候没有任何错误或警告,
在 MySQL8.0.16 中,check 约束已经起作用了 。
2 相关操作
2.1 添加单列
ALTER TABLE student ADD age TINYINT UNSIGNED NOT NULL DEFAULT 10; // 添加到最后面 ALTER TABLE student ADD password VARCHAR(20) NOT NULL AFTER name; //添加到name后 ALTER TABLE student ADD truename VARCHAR(20) NOT NULL FIRST; //添加到最前面 SHOW COLUMNS FROM student;
2.2 添加多列
ALTER TABLE tbl_name ADD [COLUMN](col_name, col_definition,...) 不能指定位置,直接添加到所有字段最后
2.3 删除列
语法:ALTER TABLE tbl_name DROP [COLUMN] col_name; ALTER TABLE users1 DROP truename; ALTER TABLE users1 DROP password, DROP age, ADD ...; // 操作用逗号分开
2.4 添加唯一约束及删除
ALTER TABLE users2 ADD UNIQUE (username); SHOW INDEXES FROM users2\G; //查看唯一约束名字 ALTER TABLE users2 DROP INDEX username;
2.5 添加主键及删除
ALTER TABLE users2 ADD CONSTRAINT PK_users2_id PRIMARY KEY(id); //添加约束并制定约束名为PK_users2_id ALTER TABLE users2 DROP PRIMARY KEY; // 执行后id的主键约束没有,username的唯一约束变为主键约束
编辑推荐:
- MySQL 中的约束及相关操作03-01
- Mysql8.0 报错03-01
- Oracle归档日志03-01
- MySQL安装好之后本地可以连接,远程连接卡死03-01
- SQL优化 | MySQL问题处理案例分享三则03-01
- 内存卡里面的目录变文件也打不开文件的恢复方法03-01
- MySQL千万级大表在线变更表结构03-01
- 使用canal.adapter同步数据到MySQL03-01
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- Mysql8.0 报错
Mysql8.0 报错
26-03-01 - Oracle归档日志
Oracle归档日志
26-03-01 - MySQL安装好之后本地可以连接,远程连接卡死
MySQL安装好之后本地可以连接,远程连接卡死
26-03-01 - 内存卡里面的目录变文件也打不开文件的恢复方法
内存卡里面的目录变文件也打不开文件的恢复方法
26-03-01 - 基于Linux的MySQL5.7的二进制安装
基于Linux的MySQL5.7的二进制安装
26-03-01 - 基于Linux的MySQL5.7RPM包安装
基于Linux的MySQL5.7RPM包安装
26-03-01 - MyCat分片:分片规则的十四种算法详细解读&代码实现(下)
MyCat分片:分片规则的十四种算法详细解读&代码实现(下)
26-03-01 - 基于Linux的MySQL5.7源码编译安装
基于Linux的MySQL5.7源码编译安装
26-03-01 - MyCat分片:垂直拆分实例解析和代码实现
MyCat分片:垂直拆分实例解析和代码实现
26-03-01 - Mysql日期类型剖析
Mysql日期类型剖析
26-03-01
