Oracle数据库约束:控制完整性约束力
Oracle数据库是目前常用的关系型数据库之一,其强大的约束机制是其优越性之一。在Oracle中,约束是对表数据的限制,通过对表数据进行约束,可以控制数据的完整性和有效性。控制完整性是关系型数据库最重要的核心之一,它确保了数据库中数据的正确性、一致性和可靠性,从而保障了数据的安全性和可靠性。
Oracle的约束可以分为两类:一是列级约束,它是对单独的列进行限制,如NOT NULL、UNIQUE、CHECK约束等;另一种是表级约束,它是对整个表的限制,如PRIMARY KEY、FOREIGN KEY约束等。
1. NOT NULL约束
在Oracle数据库中,NOT NULL是列级约束中最基本的一种,它可以限制列不能为NULL值。NOT NULL约束必须在列定义之后立即指定,可以通过以下语法进行设置:
CREATE TABLE table_name (column_name data_type NOT NULL);
2. UNIQUE约束
UNIQUE约束用于限制列中的数据不能有相同的值,可以分别应用于单个或多个列。该约束在表级别和列级别都适用,因此可以通过以下语法进行设置:
CREATE TABLE table_name (
column1 datatype,
column2 datatype,
…
CONSTRNT constrnt_name UNIQUE (column1, column2, …));
3. PRIMARY KEY约束
PRIMARY KEY约束用于在表中指定唯一标识记录的列或列组合。该约束在表级别上定义,可以通过以下语法进行设置:
CREATE TABLE table_name (
column1 datatype PRIMARY KEY,
column2 datatype,
column3 datatype,
…
);
4. FOREIGN KEY约束
FOREIGN KEY约束用于指定从一个表引用另一个表的主键或唯一键的一组列。通过外键约束,可以实现表之间数据的关联性和完整性。
CREATE TABLE table_name (
column1 datatype,
column2 datatype,
…
CONSTRNT constrnt_name FOREIGN KEY (column1, column2, …) REFERENCES parent_table (column1, column2, …)
);
5. CHECK约束
CHECK约束用于检查表的列中的数据是否符合指定的逻辑条件,可以分别应用于单个或多个列。该约束在列级别设置,可以通过以下语法进行设置:
CREATE TABLE table_name (
column1 datatype CHECK (logical_expression),
column2 datatype,
…
);
在实际工作中,通常使用以上约束进行数据完整性约束实现。下面我们将通过实际操作展示如何应用约束实现Oracle数据库的数据完整性约束。
我们创建一个新的学生表,用于存储学生信息数据,表结构如下图所示:
CREATE TABLE student (
id NUMBER(4) PRIMARY KEY,
name VARCHAR2(20) NOT NULL,
age NUMBER(2) CHECK (age BETWEEN 15 AND 25),
gender VARCHAR2(4) CHECK (gender IN (‘男’, ‘女’)),
score NUMBER(3, 1) CHECK (score BETWEEN 0 AND 100),
class_id NUMBER(4) REFERENCES class (id)
);
以上表中,对列进行约束设置的方法与前文中描述的相同。一些特殊说明:
– age、gender、score三个列使用了CHECK约束,分别限制其取值范围;
– class_id列使用FOREIGN KEY约束,引用了另一张表class中的id列。
在数据插入时,如果不符合以上设置的约束条件,则无法插入成功,数据表如下图所示:
INSERT INTO student VALUES (101, ‘张三’, 21, ‘男’, 80, 1);
INSERT INTO student VALUES (102, ‘李四’, 26, ‘男’, 85, 1); –年龄不符合条件
INSERT INTO student VALUES (103, NULL, 18, ‘女’, 95, 1); –姓名为空
INSERT INTO student VALUES (104, ‘王五’, 20, ‘中’, 89, 1); –性别不符合条件
INSERT INTO student VALUES (105, ‘杨六’, 88, ‘女’, 76, 2); –年龄不符合条件
INSERT INTO student VALUES (106, ‘赵七’, 23, ‘男’, 102, 2); –成绩不符合条件
INSERT INTO student VALUES (107, ‘邓八’, 22, NULL, 68, 3); –性别为空
在以上数据插入中,将会出现一些数据插入失败的情况,表明约束设置成功。当然,如果您需要撤销某个约束,可以使用ALTER TABLE语句进行修改或删除操作。
使用约束是实现Oracle数据库数据完整性约束的一个基本方法,它可以在控制数据访问时有效地保障数据的正确性和有效性。在实际工作中,还需要结合实际需求,选择适合业务规则的约束类型、约束条件和适当的约束名称等,从而实现数据库的完整性约束力。