Mysql必知必会:4种约束

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: Mysql必知必会:4种约束

约束


DBMS 通过在数据库表上施加约束来实施引用完整性。大多数约束是在表定义中定义的,用 CREATE TABLE 或是 ALTER TABLE 语句。


主键


主键是一种特殊的约束,用来保证一列(或 一组列)中的值是唯一的,而且永不改动。没有主键,要安全地 UPDATEDELETE 特定行而不影响其他行会 非常困难。

主键的条件:

  • 任意两行的主键值都不相同。
  • 每行都具有一个主键值(即列中不允许 NULL 值)。

创建表时定义主键。

CREATE TABLE teacher
(
  id INT(11) PRIMARY KEY,
  teacher_name VARCHAR(10)
);
复制代码


使用 ALTER TABLE 添加主键。

ALTER TABLE teacher
ADD CONSTRAINT PRIMARY KEY(id);
复制代码


删除主键约束。

ALTER TABLE teacher DROP PRIMARY KEY;
复制代码


外键


外键是表中的一列,其值必须列在另一表的主键中。外键是保证引用完 整性的极其重要部分。

下面新建 student 表并添加外键 teacher_idteacher 表中的主键 id 进行关联。


在创建表的时定义外键。

CREATE TABLE student
(
  stu_id INT(11) PRIMARY KEY,
  teacher_id INT(11) REFERENCES teacher(id),
  stu_name VARCHAR(10)
);
复制代码


使用 ALTER TABLE 添加外键。

ALTER TABLE student
ADD CONSTRAINT teacher_id_id
FOREIGN KEY (teacher_id) REFERENCES teacher(id);
复制代码


使用外键可以有效地防止意外删除,比如在上面两表中如果删除 teacher 表中的信息,如果该 idstudent 表中也有出现,那么 Mysql 会防止删除操作。当然也可以启用级联删除的特性,那么在删除时就会删除所有相关信息。

删除外键。

ALTER TABLE student DROP FOREIGN KEY teacher_id_id;
复制代码


唯一约束


唯一约束用来保证一列(或一组列)中的数据是唯一的。它们类似于主 键,但存在以下重要区别。

  • 表可包含多个唯一约束,但每个表只允许一个主键。
  • 唯一约束列可包含 NULL 值。
  • 与主键不一样,唯一约束不能用来定义外键。


在创建表的时定义唯一约束。

CREATE TABLE student
(
  stu_id INT(11) PRIMARY KEY,
  teacher_id INT(11) REFERENCES teacher(id),
  stu_name VARCHAR(10)
);
复制代码


使用 ALTER TABLE 添加唯一约束。

ALTER TABLE student
ADD CONSTRAINT unique_id UNIQUE(stu_id);
复制代码


删除唯一性约束。

ALTER TABLE student DROP INDEX unique_id;
复制代码


检查约束


检查约束用来保证一列(或一组列)中的数据满足一组指定的条件。

常见用途:

  • 检查最小或最大值。
  • 指定范围。
  • 只允许特定的值。


下面创建一个检查约束来限制性别列只能输入男、女。

在创建表的时定义检查约束。

CREATE TABLE student
(    
    stu_id INT(11) PRIMARY KEY,
  gender VARCHAR(1) CHECK(gender IN('男', '女'))
);
复制代码


使用 ALTER TABLE 添加检查约束。

ALTER TABLE student ADD CONSTRAINT check_gender CHECK(gender in ('男', '女'));
复制代码


删除检查约束。

ALTER TABLE student DROP CHECK check_gender;



相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
4月前
|
关系型数据库 MySQL
MYSQL-多表操作-外键约束
MYSQL-多表操作-外键约束
|
4月前
|
关系型数据库 MySQL
MYSQL:约束(主键约束)
MYSQL:约束(主键约束)
|
8天前
|
SQL 关系型数据库 MySQL
MySQL中外键的使用及外键约束策略
这篇文章讨论了MySQL中使用外键的重要性,包括外键的概念、不使用外键可能导致的问题、如何设置外键约束以及不同的外键约束策略(如CASCADE和SET NULL),并通过示例演示了这些概念。
MySQL中外键的使用及外键约束策略
|
27天前
|
存储 关系型数据库 MySQL
MySQL数据库基础:约束
约束是对数据库表中字段施加的规则,确保数据的正确性、有效性和完整性。主要分为非空约束、唯一约束、默认约束、主键约束和外键约束。非空约束禁止字段值为null;唯一约束确保字段值唯一,允许null值重复;默认约束设定默认值;主键约束结合非空与唯一约束,并可设为自增型;外键约束则通过关联其他表的主键,保证数据一致性。检查约束确保字段值满足特定条件。
32 1
|
2月前
|
数据采集 关系型数据库 MySQL
在 MySQL 中使用约束
【8月更文挑战第11天】
39 0
在 MySQL 中使用约束
|
4月前
|
SQL 关系型数据库 MySQL
MySQL----约束
MySQL----约束
29 1
|
4月前
|
数据采集 关系型数据库 MySQL
MySQL数据库基础第三篇(约束)
MySQL数据库基础第三篇(约束)
|
4月前
|
关系型数据库 MySQL
MYSQL约束(自增长,以及非空约束)
MYSQL约束(自增长,以及非空约束)
|
4月前
|
存储 关系型数据库 MySQL
【MySQL技术内幕】4.6-约束
【MySQL技术内幕】4.6-约束
36 1
|
4月前
|
SQL 关系型数据库 MySQL
MySQL数据库——基础篇总结(概述、SQL、函数、约束、多表查询、事务)一
MySQL数据库——基础篇总结(概述、SQL、函数、约束、多表查询、事务)一
41 5
下一篇
无影云桌面