PostgreSQL 约束:类型及示例

什么是约束?

数据类型用于限制表中可存储的信息类型。但这种方法存在两个问题。

  • 问题1: 数据类型强制执行的限制对于某些应用程序来说不够。例如,包含商品价格的列应该只接受正值。但是,没有特定的数据类型只接受正数。
  • 问题2:您可能希望限制某一行/列数据中相对于其他列或行的信息。例如,包含项目信息的表格对于每个唯一列约束应该只有一行。

为了克服这些问题并定义这些规则,您可以使用 约束 PostgreSQL简单来说,约束就是数据必须遵循的规则。添加表约束可使数据库系统强制执行数据完整性。

因此,如果用户尝试将数据存储在违反定义约束的列中,则应显示错误消息。

有些类型的 PostgreSQL 限制

让我们来看看各种类型的 PostgreSQL 您可以创建以下约束来确保数据正确性:

  • 独特
  • 非空
  • 检查约束
  • 首要的关键
  • 外键
  • 执行约束

1) PostgreSQL 唯一约束

唯一约束可帮助您确保一列或一组列约束中包含的数据是唯一的。

例如:

CREATE TABLE Item(
Item_no integer UNIQUE,
Name text,
);

2)NOT Null 约束

非空约束定义列永远不应为空值。这种类型的约束与创建检查约束非常相似。但是, PostgreSQL 创建非空约束,效率更高。此方法的问题是无法为非空约束指定明确的名称。

非空约束不是默认的 PostgreSQL 标准,不应在便携式应用程序中使用。后来又在 PostgreSQL 使其与其他兼容 DBMS 系统。许多人使用它,因为它可以轻松地在脚本文件中切换约束。

语法:

CREATE TABLE Item (
product no integer NULL, Item_name text NULL, Itm_price numeric NULL
);

3) PostgreSQL 检查约束

检查约束可帮助您指定某些列中的值必须是布尔表达式。

- PostgreSQL 检查约束由 CHECK 关键字组成,后面跟着括号中的表达式。Postgres 的检查约束应该涉及应受约束的列,否则就没有任何意义。

语法:

CREATE TABLE Item(
Item_id INTEGER PRIMARY KEY,
name VARCHAR(20),
Item_price NUMERIC CHECK(price>0)
);

示例:

CREATE TABLE Emp(
ID	INTEGER primary key,
First_name VARCHAR(20),
Last_name VARCHAR(20),
Gender CHAR(l) check(gender gender='M'),
Salary INTEGER NOT NULL,
Dept_Num INTEGER
);
CREATE TABLE ITEM(
Id INTEGER PRIMARY KEY,
name VARCHAR(15),
price numeric CHECK (price > 0)
);

4)主键约束

主键约束允许您使用一列或一组列作为表中行的唯一标识符。要定义主键约束,您声明的值应唯一且不为空。这允许两个表定义接受相同的数据。

语法:

Create Table Item(
Item_no, integer PRIMARY KEY,
Item_name text,
Item_Price numeric
);

例如1:

CREATE TABLE Employee(
ID INTEGER PRIMARY KEY
Fname VARCHAR(20),
Lname VARCHAR(20),
Gender CHAR(l),
Salary INTEGER NOT NULL, Dept INTEGER, UNIQUE(FNAME, LNAME)
);

例如2:

CREATE TABLE first(
A1 INTEGER. A2 INTEGER. PRIMARY KEY (tl)
);
Second way CREATE TABLE test( tl INTEGER PRIMARY KEY, t2 INTEGER.
);

例如3:

CREATE TABLE Items (
Item_no integer UNIQUE NOT NULL, name text, price numeric
CREATE TABLE Items (
Items_no no integer PRIMARY KEY, name text, price numeric

5)外键约束

外键约束指定一列或一组列中的值必须与另一个表的某行中出现的值相匹配。这允许您在两个关联表之间建立引用完整性。

假设您有一张存储不同产品订单的表。您想确保该表包含现有产品的订单。因此,在这里,您需要在订单表中定义一个引用产品表的外键约束。

语法:

CREATE TABLE	(
id INTEGER PRIMARY KEY. name VARCHAR(IO)
>;
CREATE TABLE testable
Id INTEGER PRIMARY KEY
read INTEGER REFERENCES	(id)
);

例如2:

CREATE TABLE Student (
Std_ID INTEGER primary key,
First_name VARCHAR(20),
Last_name VARCHAR(20),
Gender CHAR(l),
Steam, VARCHAR(20),
Dept_NUM INTEGER REFERENCES Department
);

6)排除约束

排除约束可帮助您确保如果在指定的列或使用指定的运算符的表达式上对任何两行进行比较,则这些运算符比较中至少有一个将返回 null 或 false 值。添加此 PostgreSQL 约束将自动创建约束声明中指定类型的索引。

示例:

例如,以下 PostgreSQL 语句创建一个名为 School 的新表并添加五列。

CREATE TABLE SCHOOL6(
STDID INT PRIMARY KEY NOT NULL,
STDNAME TEXT NOT NULL,
STDAGE INT NOT NULL,
FEEDBACK CHAR(50),
STANDARD INT NOT NULL,

例如,以下 PostgreSQL 语句创建一个名为 Branch 的新表,该表添加了三列。STD_ID 列是外键,它引用了表 SCHOOL6 的 ID 字段。

CREATE TABLE BRANCH (
BRANCHCODE INT PRIMARY KEY NOT NULL,
BRAMCHNAME CHAR(50) NOT NULL,
STD_ID INT references SCHOOL6(ID)
);