在Oracle数据库中,约束是用来保证数据完整性和一致性的重要机制。Oracle数据库提供了多种约束类型,本文将会介绍一些常见的约束类型。
1. NOT NULL约束
NOT NULL约束用来指定列不能为空,要求在插入或更新记录时必须给该列赋值。
例如,我们创建一个表格:
CREATE TABLE employees
(
Id INTEGER NOT NULL,
Name VARCHAR2(20),
Age INTEGER
);
在这个例子中,我们指定了Id列不能为空。如果我们尝试插入一个空值,Oracle会抛出错误。
2. UNIQUE约束
UNIQUE约束用来保证指定列的值不重复。
例如,我们创建一个表格:
CREATE TABLE employees
(
Id INTEGER NOT NULL UNIQUE,
Name VARCHAR2(20),
Age INTEGER
);
在这个例子中,我们指定了Id列的值必须唯一,如果我们尝试插入一个重复的值,Oracle会抛出错误。
3. PRIMARY KEY约束
PRIMARY KEY约束是一种特殊的UNIQUE约束,用来唯一标识表中的每一条记录。它要求指定一个或多个列作为主键,主键列的值必须唯一且不能为空。
例如,我们创建一个表格:
CREATE TABLE employees
(
Id INTEGER NOT NULL PRIMARY KEY,
Name VARCHAR2(20),
Age INTEGER
);
在这个例子中,我们指定了Id列为主键。
4. FOREIGN KEY约束
FOREIGN KEY约束用来指定一个或多个列必须是另一个表格的主键或唯一约束。它保证了表格之间的引用完整性。
例如,我们创建一个子表格:
CREATE TABLE orders
(
OrderId INTEGER NOT NULL PRIMARY KEY,
EmployeeId INTEGER NOT NULL,
ProductName VARCHAR2(20),
Quantity INTEGER,
FOREIGN KEY (EmployeeId) REFERENCES employees(Id)
);
在这个例子中,我们通过FOREIGN KEY约束指定了EmployeeId列必须是父表格employees的主键。
5. CHECK约束
CHECK约束用来指定列的值必须满足某些条件。它可以用来保证数据的合法性。
例如,我们创建一个表格:
CREATE TABLE employees
(
Id INTEGER NOT NULL PRIMARY KEY,
Name VARCHAR2(20) NOT NULL,
Age INTEGER CHECK (Age > 0 AND Age
);
在这个例子中,我们通过CHECK约束指定了Age列的值必须大于0且小于120。
6. DEFAULT约束
DEFAULT约束用来指定列的默认值,当插入或更新记录时如果没有指定该列的值则使用默认值。
例如,我们创建一个表格:
CREATE TABLE employees
(
Id INTEGER NOT NULL PRIMARY KEY,
Name VARCHAR2(20) NOT NULL,
Gender VARCHAR2(6) DEFAULT 'male',
HireDate DATE DEFAULT SYSDATE
);
在这个例子中,我们指定了Gender列的默认值为’male’,HireDate列的默认值为当前日期。
总结:Oracle数据库提供了多种约束类型,包括NOT NULL约束、UNIQUE约束、PRIMARY KEY约束、FOREIGN KEY约束、CHECK约束和DEFAULT约束。使用约束可以保证数据完整性和一致性,减少数据错误的发生,提高数据质量。