您的位置:

详解Oracle建表语句

一、基础概念

Oracle是一个关系型数据库系统,建表语句是用来定义表结构的命令。表是一种基本的数据库对象,由多个列组成。

在Oracle数据库中,一个表必须包含一个表名和至少一个列。每个列都必须有一个数据类型。一个表还可以包含约束和索引。

每当创建一个新表时,Oracle会在系统目录中创建一个新的表定义,并分配新表的所有相关数据到适当的数据文件中。

二、建表语句的格式

Oracle建表语句的基本格式如下:

CREATE TABLE table_name
(
    column1 datatype [ NULL | NOT NULL ],
    column2 datatype [ NULL | NOT NULL ],
    column3 datatype [ NULL | NOT NULL ],
    ....
    CONSTRAINT constraint_name PRIMARY KEY (column1,column2,....)
);

其中,table_name是新表的名称,column1、column2等为新表的列名,datatype为列的数据类型。

可以在每个列名后面加上NULL或NOT NULL,用于指定该列是否可以为空。

在表的定义的最后可以包含约束,如主键等。

三、列的数据类型

1、数值型数据类型

数值型数据类型用于存储数字值。常用的数据类型如下:

  • NUMBER(p,s)
  • BINARY_INTEGER
  • INTEGER
  • FLOAT
  • DECIMAL(p,s)

2、日期和时间数据类型

日期和时间数据类型用于存储日期和时间。常用的数据类型如下:

  • DATE
  • TIMESTAMP

3、字符串数据类型

字符串数据类型用于存储字符串值。常用的数据类型如下:

  • CHAR(size)
  • VARCHAR2(size)
  • NVARCHAR2(size)
  • CLOB
  • NCLOB

四、约束

1、主键约束

主键约束用于标识一张表的主键,主键的值不能重复。

CREATE TABLE table_name
(
    column1 datatype [ NULL | NOT NULL ],
    column2 datatype [ NULL | NOT NULL ],
    column3 datatype [ NULL | NOT NULL ],
    ...,
    CONSTRAINT constraint_name PRIMARY KEY (column1,column2,...)
);

2、外键约束

外键约束用于保证在一个表中的某些列与另一个表中的某些列具有相关性。

CREATE TABLE table1_name
(
    column1 datatype [ NULL | NOT NULL ],
    column2 datatype [ NULL | NOT NULL ],
    column3 datatype [ NULL | NOT NULL ],
    …,
    CONSTRAINT constraint_name FOREIGN KEY (column) REFERENCES table2_name(column)
);

3、唯一性约束

唯一性约束用于保证一张表中的某些列的值是唯一的。

CREATE TABLE table_name
(
    column1 datatype [ NULL | NOT NULL ],
    column2 datatype [ NULL | NOT NULL ],
    column3 datatype [ NULL | NOT NULL ],
    …,
    CONSTRAINT constraint_name UNIQUE (column1,column2,...)
);

五、示例

以下是一个创建名为employees的表的示例:

CREATE TABLE employees
(
  employee_id   NUMBER(10)        NOT NULL,
  first_name    VARCHAR2(50)     NOT NULL,
  last_name     VARCHAR2(50)     NOT NULL,
  email         VARCHAR2(100)    NOT NULL,
  phone_number  VARCHAR2(20),
  hire_date     DATE             NOT NULL,
  job_id        VARCHAR2(10)     NOT NULL,
  salary        NUMBER(8,2),
  commission_pct NUMBER(2,2),
  manager_id    NUMBER(10),
  department_id NUMBER(10)       NOT NULL,
  CONSTRAINT employees_pk PRIMARY KEY (employee_id),
  CONSTRAINT employees_job_fk FOREIGN KEY (job_id) REFERENCES jobs(job_id),
  CONSTRAINT employees_dept_fk FOREIGN KEY (department_id) REFERENCES departments(department_id)
);

六、总结

Oracle建表语句是定义表结构的命令。在建表语句中,可以定义表的列、列的数据类型、约束等。了解Oracle的建表语句对于Oracle的数据库开发工作至关重要。