MySQL 中的约束及相关操作

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: MySQL 中的约束及相关操作

1 约束类型


约束主要完成对数据的检验,保证数据库数据的完整性,如果有相互依赖数据,保证该数据不被删除


常用五类约束:


not null:非空约束,指定某列不为空

unique: 唯一约束,指定某列或几列组合的数据不能重复

primary key:主键约束,指定某列或几列组合的数据非空且唯一

foreign key:外键,指定该列记录属于主表中的一条记录,参照另一条数据

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,...)
不能指定位置,直接添加到所有字段最后

删除列

语法:ALTER TABLE tbl_name DROP [COLUMN] col_name;
ALTER TABLE users1 DROP truename;
ALTER TABLE users1 DROP password, DROP age, ADD ...; // 操作用逗号分开

添加唯一约束及删除

ALTER TABLE users2 ADD UNIQUE (username);
SHOW INDEXES FROM users2\G;   //查看唯一约束名字
ALTER TABLE users2 DROP INDEX username;

添加主键及删除

ALTER TABLE users2 ADD CONSTRAINT PK_users2_id PRIMARY KEY(id); 
//添加约束并制定约束名为PK_users2_id
ALTER TABLE users2 DROP PRIMARY KEY;
// 执行后id的主键约束没有,username的唯一约束变为主键约束


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2天前
|
Oracle 关系型数据库 MySQL
实时计算 Flink版操作报错合集之用CTAS从mysql同步数据到hologres,改了字段长度,报错提示需要全部重新同步如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
45 8
|
3天前
|
SQL 关系型数据库 MySQL
实时计算 Flink版操作报错合集之程序初始化mysql没有完成就报错如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
14 4
|
3天前
|
关系型数据库 MySQL 数据库
实时计算 Flink版操作报错合集之sqlserver mysql都用的胖包,sqlserver的成功了,mysql报这个错如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
20 6
|
3天前
|
SQL Oracle 关系型数据库
实时计算 Flink版操作报错合集之连接器换成2.4.2之后,mysql作业一直报错如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
16 3
|
5天前
|
SQL 关系型数据库 MySQL
Mysql忘记密码操作
Mysql忘记密码操作
27 1
|
6天前
|
SQL 关系型数据库 MySQL
DQL操作MySql
DQL操作MySql
13 0
|
6天前
|
SQL Java 关系型数据库
【JAVA基础篇教学】第十六篇:Java连接和操作MySQL数据库
【JAVA基础篇教学】第十六篇:Java连接和操作MySQL数据库
|
6天前
|
SQL 关系型数据库 MySQL
MySQL数据库的约束+进阶版新增与查询-2
MySQL数据库的约束+进阶版新增与查询
16 1
|
6天前
|
关系型数据库 MySQL 测试技术
MySQL数据库的约束+进阶版新增与查询-1
MySQL数据库的约束+进阶版新增与查询
17 1
|
6天前
|
SQL 存储 关系型数据库
【MySQL】DDL的表操作详解:创建&查询&修改&删除
【MySQL】DDL的表操作详解:创建&查询&修改&删除