Oracle 数据库 CREATE TABLE定义约束的完整语法

Oracle 数据库阿木 发布于 9 天前 2 次阅读


摘要:

本文将深入探讨Oracle数据库中CREATE TABLE语句的完整语法,特别是关于定义各种约束的部分。我们将详细解析主键约束、外键约束、唯一性约束、非空约束、检查约束等,并通过实际示例代码展示如何在创建表时应用这些约束,以确保数据的完整性和一致性。

一、

在数据库设计中,约束是确保数据完整性和一致性的重要手段。Oracle数据库提供了丰富的约束类型,可以在创建表时使用CREATE TABLE语句定义。本文将详细介绍这些约束的语法和应用。

二、CREATE TABLE语法基础

CREATE TABLE语句的基本语法如下:

sql

CREATE TABLE table_name (


column_name1 data_type constraints,


column_name2 data_type constraints,


...


);


其中,`table_name`是表的名称,`column_name`是列的名称,`data_type`是列的数据类型,`constraints`是列的约束条件。

三、主键约束(PRIMARY KEY)

主键约束用于确保表中每行数据的唯一性。一个表只能有一个主键,且主键列不能包含NULL值。

sql

CREATE TABLE employees (


employee_id NUMBER PRIMARY KEY,


employee_name VARCHAR2(100),


department_id NUMBER


);


四、外键约束(FOREIGN KEY)

外键约束用于建立两个表之间的引用关系。它确保了表中的外键值必须与另一个表的主键值匹配。

sql

CREATE TABLE departments (


department_id NUMBER PRIMARY KEY,


department_name VARCHAR2(100)


);

CREATE TABLE employees (


employee_id NUMBER PRIMARY KEY,


employee_name VARCHAR2(100),


department_id NUMBER,


CONSTRAINT fk_department FOREIGN KEY (department_id) REFERENCES departments(department_id)


);


五、唯一性约束(UNIQUE)

唯一性约束确保列中的值是唯一的,但允许NULL值。

sql

CREATE TABLE employees (


employee_id NUMBER UNIQUE,


employee_name VARCHAR2(100)


);


六、非空约束(NOT NULL)

非空约束确保列中的值不能为NULL。

sql

CREATE TABLE employees (


employee_id NUMBER,


employee_name VARCHAR2(100) NOT NULL


);


七、检查约束(CHECK)

检查约束用于确保列中的值满足特定的条件。

sql

CREATE TABLE employees (


employee_id NUMBER,


salary NUMBER CHECK (salary > 0)


);


八、组合约束

在实际应用中,我们可能需要为多个列定义组合约束。

sql

CREATE TABLE employees (


employee_id NUMBER,


employee_name VARCHAR2(100),


email VARCHAR2(100),


CONSTRAINT uc_employee_email UNIQUE (email),


CONSTRAINT chk_employee_salary CHECK (salary > 0)


);


九、默认值约束(DEFAULT)

默认值约束用于在插入新行时自动为列分配一个默认值。

sql

CREATE TABLE employees (


employee_id NUMBER,


employee_name VARCHAR2(100),


department_id NUMBER,


hire_date DATE DEFAULT SYSDATE


);


十、示例:创建一个包含多种约束的表

以下是一个包含多种约束的表创建示例:

sql

CREATE TABLE orders (


order_id NUMBER PRIMARY KEY,


customer_id NUMBER,


order_date DATE DEFAULT SYSDATE,


status VARCHAR2(20) CHECK (status IN ('NEW', 'SHIPPED', 'DELIVERED', 'CANCELLED')),


CONSTRAINT fk_customer FOREIGN KEY (customer_id) REFERENCES customers(customer_id)


);


十一、总结

本文详细介绍了Oracle数据库中CREATE TABLE语句的完整语法,特别是关于定义各种约束的部分。通过实际示例,我们展示了如何在创建表时应用这些约束,以确保数据的完整性和一致性。在实际的数据库设计中,合理使用约束是保证数据质量的关键。

十二、扩展阅读

- Oracle官方文档:https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/CREATE-TABLE.html

- 数据库设计原则:https://en.wikipedia.org/wiki/Database_design_principles

通过本文的学习,读者应该能够熟练地在Oracle数据库中创建表,并定义各种约束,从而构建健壮、可靠的数据库系统。