📜  SQL-约束(1)

📅  最后修改于: 2023-12-03 14:47:38.923000             🧑  作者: Mango

SQL-约束

在 SQL 数据库中,约束(constraint)是用于保证数据完整性的规则。它们可以用于规定表中数据的限制和要求。

常见的 SQL 约束有如下几种:

主键约束(Primary Key)

主键约束定义了表中一个特定列的唯一标识符,用于保证每一行的数据都能被唯一地标识。主键列的值不能为 NULL。

在创建表时,可以在列定义中使用 PRIMARY KEY 来定义主键约束。例如:

CREATE TABLE users (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    email VARCHAR(100)
);
外键约束(Foreign Key)

外键约束定义了表之间的关系,确保表之间的参照关系完整和一致。外键必须参照其他表中的主键,从而可以确保关系的唯一性。

在创建表时,可以在列定义中使用 FOREIGN KEY 来定义外键约束。例如:

CREATE TABLE orders (
    id INT PRIMARY KEY,
    user_id INT,
    product_id INT,
    FOREIGN KEY (user_id) REFERENCES users(id),
    FOREIGN KEY (product_id) REFERENCES products(id)
);
唯一约束(Unique)

唯一约束保证某个特定列中的值是唯一的,可以用于保证数据中的重复数据不会被插入进来。

在创建表时,可以在列定义中使用 UNIQUE 来定义唯一约束。例如:

CREATE TABLE products (
    id INT PRIMARY KEY,
    name VARCHAR(50) UNIQUE,
    price DECIMAL(10,2)
);
检查约束(Check)

检查约束用于添加额外的条件,确保在插入数据时满足某些逻辑条件,例如一个数字列只能大于 0。

在创建表时,可以在列定义中使用 CHECK 来定义检查约束。例如:

CREATE TABLE invoices (
    id INT PRIMARY KEY,
    customer_id INT,
    total DECIMAL(10,2) CHECK (total > 0),
    FOREIGN KEY (customer_id) REFERENCES customers(id)
);
非空约束(Not Null)

非空约束用于确保某个特定列中的值不为空。

在创建表时,可以在列定义中使用 NOT NULL 来定义非空约束。例如:

CREATE TABLE customers (
    id INT PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    email VARCHAR(100),
    phone VARCHAR(20) NOT NULL
);

以上是常见的 SQL 约束,它们能够有效地保证数据的完整性和安全性。在实际开发过程中,根据需要选择使用合适的约束是非常重要的。