创建标准表
创建表使用 create table 语句,它属于 DDL 数据定义语言。其语法如下
CREATE TABLE [schema_name.]table_name
(
column_name_1 data_type [column_attributes]
[,column_name_2 data_type [column_attributes]]...
[,table_level_constraints]
)
- schema_name:指定表所在的方案名称,如果是在当前登录用户下创建表,则不用指定该名称
- table_name:指定表名称
- column_name_x:指定表列的名称
- data_type:指定表列的数据类型
- column_attributes:指定表列的属性,比如 NOT NULL 约束和 DEFAULT 默认值等
- table_level_constraints:指定表级别的约束定义
实际上,创建一个完整表的SQL语句要远比上面列出的语法复杂,当使用这个简单 CREATE TABLE 语句创建表时,Oracle实际上已经根据系统的设置添加了各种存储和设置参数。可以通过 DBMS_METADATA.GET_DDL 方法查看已经创建表的DDL语句(一般在当前用户下查询当前用户下的表)
除了指定列的类型之外,可选的 column_attributes 用来指定列的属性,常用的列特性有如下3个:
- NOT NULL :指定列不接受 NULL 值
- UNIQUE :指定存储在列中的每一个值都必须唯一
- DEFAULT default_value :指定列的默认值
这些类型主要用来为列指定约束,例如下面的代码使用 CREATE TABLE 语句创建了一个发票表 INVOICE
CREATE TABLE INVOICE
(
INVOICE_ID NUMBER NOT NULL UNIQUE, --自动编号,唯一,不为空
VENDOR_ID NUMBER NOT NULL, --供应商ID
INVOICE_NUMBER VARCHAR2(50) NOT NULL, --发票编号
INVOICE_DATE DATE DEFAULT SYSDATE, --发票日期
INVOICE_TOTAL NUMBER(9,2) NOT NULL, --发票总数
PAYMENT_TOTAL NUMBER(9,2) DEFAULT 0 --付款总数
)