0


MYSQL中的约束操作(如果想知道MYSQL中有关约束操作的知识,那么只看这一篇就足够了!)

    **前言:数据库约束是保障数据完整性和一致性的关键工具,通过定义规则,约束能有效避免数据错误,提升系统可靠性,本篇文章主要讲解常见数据库约束及其应用。**

✨✨✨这里是秋刀鱼不做梦的BLOG

✨✨✨想要了解更多内容可以访问我的主页秋刀鱼不做梦-CSDN博客

在正式开始讲解之前,先让我们看一下本文大致的讲解内容:

1.什么是数据库约束

    在学习有哪些数据库约束之前,先让我们学习一下什么是数据库约束,数据库约束是指数据库表中用来限制数据存储规则的一组规定。它们主要用于以下几个目的:
  • 确保数据完整性:如某些字段必须提供值,或者字段值必须在特定范围内。
  • 维护数据一致性:如子表引用父表时,确保父表中存在相应的记录。
  • 提高查询效率:如通过主键或唯一约束快速定位记录。
    总的来说,约束为数据库构建了一种数据规则,既减少了不必要的检查,又在根本上杜绝了许多数据问题。

    至此我们就大致的了解了什么时数据库约束了!

2.数据库约束的类型

    在了解完了什么时数据库约束之后,让哦我们看一下在MySQL中有哪些约束的类型,在关系型数据库中,主要的约束类型包括:
  • **NOT NULL(非空约束)—— **用于保证字段值不能为空。
  • **DEFAULT(默认值约束)—— **为字段提供默认值,当未赋值时采用该默认值。
  • **UNIQUE(唯一约束)—— **确保字段值在整个表中是唯一的。
  • **PRIMARY KEY(主键约束)—— **是非空约束和唯一约束的结合,用于标识表中的每一行记录。
  • **FOREIGN KEY(外键约束)—— **定义表与表之间的关联关系。
  • **CHECK(检查约束)—— **用于限制字段的取值范围或满足特定条件。
    了解了有哪些数据库约束类型之后,那么接下来,让我们逐一讲解一下每种约束的功能及实现方法。

3.NOT NULL 非空约束

    首先先让我们学习一下NOT NULL 非空约束,非空约束用于保证某一列不能存储
NULL

值,通常用于描述必须提供的核心数据,例如用户表中的用户名或密码字段。

其应用场景:

  **  假如在一个学生管理系统中,学生的姓名不能为空,如果允许空值,则系统可能会生成一些没有名字的学生记录,这显然是不合理的。**

例子:

CREATE TABLE student (
  id BIGINT,
  name VARCHAR(20) NOT NULL
);
    在这个定义中,
name

字段被设置为

NOT NULL

,确保每条记录必须提供学生姓名,如果尝试插入

NULL

值,则会报错:(如下操作)

INSERT INTO student (id, name) VALUES (1, NULL);
-- 错误:Column 'name' cannot be null

——这样我们就大致的了解了NOT NULL 非空约束的使用了!根据上述所讲,我们来总结一下:

  • 对那些业务中必填的字段(如用户名、密码)务必使用NOT NULL约束。
  • 如果结合默认值(DEFAULT)使用,可以避免意外漏填数据。
    至此我们就大致的了解了NOT NULL 非空约束了!

4.DEFAULT 默认值约束

    了解完了NOT NULL 非空约束之后,在让我们看一下DEFAULT 默认值约束,默认值约束的作用是为字段设置一个默认值,当插入记录时,如果未指定该字段的值,则自动填充默认值。

其应用场景:

** 在很多情况下,字段即使允许为空,也需要一个默认值以表示未提供数据的情况,例如,学生表中的年龄字段可能默认值为

18

,表示大部分学生是成年学生。**

例子:

CREATE TABLE student (
  id BIGINT,
  name VARCHAR(20) NOT NULL,
  age INT DEFAULT 18
);

此时我们插入记录时未提供

age

字段的值,系统就会自动使用默认值

18

INSERT INTO student (id, name) VALUES (1, '张三');
SELECT * FROM student;
-- 输出:
-- +----+------+-----+
-- | id | name | age |
-- +----+------+-----+
-- |  1 | 张三  |  18 |
-- +----+------+-----+

——这样我们就大致的了解了DEFAULT 默认值约束的使用了!根据上述所讲,我们来总结一下:

  • 默认值必须与字段的数据类型匹配。
  • 对于业务中有较高“默认优先级”的字段,合理使用DEFAULT可以简化数据插入操作。
    至此我们就大致的了解了DEFAULT 默认值约束了!

5.UNIQUE 唯一约束

    了解完了DEFAULT 默认值约束之后,在让我们学习一下UNIQUE 唯一约束,唯一约束确保某一列或列组合中的值在表中是唯一的,它通常用于标识诸如身份证号、学号或电子邮件地址等独一无二的属性。

其应用场景:

   ** 设想在学校管理系统中,学号是每位学生的唯一标识,两个学生的学号不能重复。**

例子:

CREATE TABLE student (
  id BIGINT,
  sno VARCHAR(10) UNIQUE
);

当我们尝试插入重复的学号会报错:

INSERT INTO student (id, sno) VALUES (1, '100001');
INSERT INTO student (id, sno) VALUES (2, '100001');
-- 错误:Duplicate entry '100001' for key 'sno'

——这样我们就大致的了解了UNIQUE 唯一约束的使用了!根据上述所讲,我们来总结一下:

  • 唯一约束适用于不能重复的业务数据,如账户名、订单号等。
  • 在数据插入频繁的场景下,为避免性能问题,必要时可以使用索引替代唯一约束。
    至此我们就大致的了解了UNIQUE 唯一约束了!

6.PRIMARY KEY 主键约束

    接下来让我们学习一下PRIMARY KEY 主键约束,主键约束是唯一约束和非空约束的结合,它保证了每条记录的唯一性,并且每张表只能定义一个主键。

其应用场景:

 **   主键通常用于唯一标识一条记录,例如用户表中的用户ID。**

例子:

CREATE TABLE student (
  id BIGINT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(20) NOT NULL
);

当我们插入数据时,数据库就会自动生成主键值:

INSERT INTO student (name) VALUES ('张三');
-- 自动生成主键值1

——这样我们就大致的了解了PRIMARY KEY 主键约束的使用了!根据上述所讲,我们来总结一下:

  • 主键字段建议使用数字类型(如BIGINT),并结合AUTO_INCREMENT实现自增。
  • 避免使用业务字段(如用户名)作为主键,以免因数据变更引发问题。
    至此我们就大致的了解了PRIMARY KEY 主键约束了!

7.FOREIGN KEY 外键约束

    接着让我们学习一下FOREIGN KEY 外键约束,外键约束用于定义表与表之间的关联关系,例如,学生表的班级字段必须引用班级表的主键。

例子:

** 现在我们定义班级表和学生表,学生表中的

class_id

引用班级表的

id

字段:**

CREATE TABLE class (
  id BIGINT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(20) NOT NULL
);

CREATE TABLE student (
  id BIGINT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(20) NOT NULL,
  class_id BIGINT,
  FOREIGN KEY (class_id) REFERENCES class(id)
);

这里我们对上述的代码进行解释一下:

    首先, class 表用于存储班级信息,包含 
id

name

字段,其中

id

是自增的主键,用于唯一标识每个班级,

name

字段为班级名称,不允许为空。

    其次,student 表存储学生信息,包含 
id

(自增主键)、

name

(学生姓名,不为空)和

class_id

(外键)。

    最后,class_id 字段通过外键关联到 
class

表的

id

字段,确保学生所属的班级在

class

表中存在,实现两表之间的一对多关系。

    至此我们就大致的了解了FOREIGN KEY 外键约束了!

8.CHECK 条件约束

    最后让我们看一下CHECK 条件约束,CHECK用于限制字段值满足一定条件,例如,年龄字段必须大于等于16岁。

例子:

以下代码为学生表的

age

字段添加了范围限制:

CREATE TABLE student (
  id BIGINT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(20) NOT NULL,
  age INT CHECK (age >= 16)
);

当我们插入不符合条件的数据会报错:

INSERT INTO student (name, age) VALUES ('张三', 15);
-- 错误:Check constraint is violated
    至此我们就大致的了解了CHECK 条件约束了!

以上就是本篇文章全部内容~~

标签: mysql 数据库 学习

本文转载自: https://blog.csdn.net/2302_80198073/article/details/144278641
版权归原作者 秋刀鱼不做梦 所有, 如有侵权,请联系我们删除。

“MYSQL中的约束操作(如果想知道MYSQL中有关约束操作的知识,那么只看这一篇就足够了!)”的评论:

还没有评论