MySQL约束:定义、类型与用法

作者:rousong2024.01.22 14:48浏览量:17

简介:约束是用于确保数据库表中数据的完整性和准确性的规则。本文将详细介绍MySQL中的约束,包括主键约束、外键约束、唯一约束、非空约束和检查约束等,以及如何使用它们来维护数据完整性。

在MySQL中,约束是用于限制表中的数据的有效性或完整性的规则。它们确保数据的准确性和可靠性,防止无效或意外数据的插入、更新或删除。约束可以分为以下几种类型:

  1. 主键约束
    主键是用于唯一标识表中每一行的字段或字段组合。每个表只能有一个主键,并且主键字段的值必须是唯一的,不能为空。主键约束确保表中没有重复的主键值,并且每个主键值都是唯一的。
    示例:
    1. CREATE TABLE Persons (
    2. PersonID int NOT NULL,
    3. LastName varchar(255) NOT NULL,
    4. FirstName varchar(255),
    5. Age int,
    6. PRIMARY KEY (PersonID)
    7. );
  2. 外键约束
    外键是一个表中的字段,其值必须是另一个表的主键的值。外键约束用于建立两个表之间的关系,并确保引用完整性。
    示例:
    1. CREATE TABLE Orders (
    2. OrderID int NOT NULL,
    3. CustomerID int,
    4. PRIMARY KEY (OrderID),
    5. FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)
    6. );
  3. 唯一约束
    唯一约束用于确保表中的一列或多列的每个值都是唯一的,但允许为NULL。与主键约束不同,唯一约束可以应用于多列,并且可以有多个唯一约束在同一个表上。
    示例:
    1. CREATE TABLE Persons (
    2. PersonID int NOT NULL,
    3. LastName varchar(255) NOT NULL,
    4. FirstName varchar(255),
    5. Age int,
    6. UNIQUE (LastName, FirstName)
    7. );
  4. 非空约束
    非空约束用于确保表中的一列或多列的值不为空。非空约束确保每行在这些列中都必须有一个值。如果未指定非空约束,默认情况下,列可以接受NULL值。
    示例:
    1. CREATE TABLE Persons (
    2. PersonID int NOT NULL,
    3. LastName varchar(255) NOT NULL,
    4. FirstName varchar(255),
    5. Age int,
    6. UNIQUE (LastName, FirstName),
    7. CONSTRAINT NN_Person_Age CHECK (Age IS NOT NULL)
    8. );
  5. 检查约束
    检查约束用于确保列中的值满足特定条件。检查约束定义了一个逻辑表达式,该表达式必须为真才能插入或更新数据。检查约束可以用来限制列中的值范围或应用其他逻辑条件。
    示例:
    1. CREATE TABLE Persons (
    2. PersonID int NOT NULL,
    3. LastName varchar(255) NOT NULL,
    4. FirstName varchar(255),
    5. Age int,
    6. UNIQUE (LastName, FirstName),
    7. CONSTRAINT CK_Age CHECK (Age > 0 AND Age < 150)
    8. );