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时有所帮助!