PostgreSQL:表约束和列约束的区别

PostgreSQL:表约束和列约束的区别

在本文中,我们将介绍PostgreSQL中表约束和列约束的区别。在数据库中,约束是用于强制实施数据完整性规则的规范。约束可以应用于表级别或列级别,具体区别如下。

阅读更多:PostgreSQL 教程

表约束(Table Constraint)

表约束是应用于整个表的规则。当该规则应用于表时,将会在整个表的数据上执行验证。常见的表约束类型包括主键约束、唯一约束、外键约束和检查约束。

主键约束(Primary Key Constraint)

主键约束用于唯一标识表中的每一行数据。一个表只能有一个主键约束,并且主键列的值不能为空。通过主键约束,我们可以在表中快速查找和更新数据。例如,下面是一个名为”students”的表,含有一个名为”student_id”的主键约束:

CREATE TABLE students (
    student_id INT PRIMARY KEY,
    student_name VARCHAR(50),
    student_grade INT
);

唯一约束(Unique Constraint)

唯一约束用于确保表中的某一列只能包含唯一的值。与主键约束不同的是,唯一约束可以应用于多个列。一个表可以有多个唯一约束。例如,下面是一个名为”contacts”的表,含有一个名为”email”的唯一约束:

CREATE TABLE contacts (
    contact_id INT,
    email VARCHAR(255) UNIQUE,
    phone_number VARCHAR(15)
);

外键约束(Foreign Key Constraint)

外键约束用于确保表之间的关系。它定义了对其他表中主键的引用,并确保引用的数据完整和一致。通过外键约束,我们可以实现表之间的关联和数据的完整性。例如,下面是一个名为”orders”的表,其”customer_id”列引用了另一个表”customers”中的主键:

CREATE TABLE orders (
    order_id INT,
    order_date DATE,
    customer_id INT REFERENCES customers(customer_id)
);

检查约束(Check Constraint)

检查约束用于确保数据满足指定的条件。该约束可以应用于一个或多个列,并且可以使用比较操作符、函数和子查询来定义。例如,下面是一个名为”employees”的表,含有一个名为”salary”的检查约束,限制了薪资不能小于5000:

CREATE TABLE employees (
    employee_id INT,
    employee_name VARCHAR(50),
    salary DECIMAL(10,2) CHECK (salary >= 5000)
);

列约束(Column Constraint)

列约束是应用于特定列的规则。当该规则应用于列时,将仅在该列的值上执行验证。常见的列约束类型包括非空约束和默认约束。

非空约束(Not Null Constraint)

非空约束用于确保该列的值不为空。当在插入或更新数据时,如果该列的值为空,将会触发非空约束的错误。例如,下面是一个名为”customers”的表,含有一个名为”customer_name”的非空约束:

CREATE TABLE customers (
    customer_id INT,
    customer_name VARCHAR(50) NOT NULL,
    address VARCHAR(100)
);

默认约束(Default Constraint)

默认约束用于在未提供值时为列设置默认值。当在插入数据时未指定该列的值时,默认约束将会为该列赋予默认值。例如,下面是一个名为”products”的表,含有一个名为”quantity”的默认约束,将默认数量设为1:

CREATE TABLE products (
    product_id INT,
    product_name VARCHAR(50),
    quantity INT DEFAULT 1
);

总结

在本文中,我们介绍了PostgreSQL中表约束和列约束的区别。表约束适用于整个表,可以包括主键约束、唯一约束、外键约束和检查约束。列约束适用于特定列,可以包括非空约束和默认约束。通过合理应用这些约束,我们可以确保数据的完整性和一致性,提高数据库的性能和安全性。

希望本文对您在使用PostgreSQL时有所帮助!

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程