定义基本表格式:ps:方括号代表可有可无

CREATE TABLE <表名>
(
        <列名>  <数据类型> [列级完整性约束],
        <列名>  <数据类型> [列级完整性约束],
        ....
        [表级完整性约束]
);

一.数据类型

二.约束 constraint

1.约束的种类

在Oracle中,可以通过设置约束来防止无效数据进入表中。Oracle一共有5种约束:

  • 主键约束(primary key)
  • 外键约束(foreign key)
  • 唯一性约束(unique)
  • 非空约束(not null)
  • 检查约束(check)

(1)主键约束

--主键约束可以定义在一列或多列上,值具有唯一性、非空性;

--在一个表上只能定义一个主键约束;

--Oracle会自定在主键约束的列上创建唯一性索引,可以指定唯一性索引的位置及存储参数。

(2)外键约束

--外键约束列的取值来源于参照表(父表)的参照列的值,或者空值;

--定义外键约束的列只能参照父表的主键约束列和唯一性约束列;

--父表与子表必须在同一个数据库中。

(3)唯一性约束

--可定义在一列或多列上,列的取值必须唯一;

--如果在某些列上定义了唯一性约束,而没有定义非空约束,那么在这些列上可以出现多个空值;

--Oracle会自定在主键约束的列上创建唯一性索引,可以指定唯一性索引的位置及存储参数。

(4)非空约束

--只能定义在列上;

--在同一个表中可定义多个非空约束。

(5)检查约束

--检查约束用来限制列的取值范围,其表达式必须引用相应列,表达式的计算结果是一个布尔值;

--一个列可以定义多个检查约束

2.列级约束和表级约束

根据创建表的基本语法,可以看出,列级约束紧跟着创建的列,表级约束则在创建表的最后写。

CREATE TABLE STUDENT
(
PRIMARY KEY,
UNIQUE NOT NULL,
        SCOUSE CHAR(10),
        SSEX CHAR(2),
  CONSTRAINT check_STUDENT_SSEX CHECK(SSEX='BOY' OR SSEX='GRIL')
        CONSTRAINT fk_STUDENT_COURSE FOREIGN KEY( SCOURSE ) REFERENCES COURSE( CNO ) 
);

需要注意的是,除了非空约束只能定义列级约束外,其他的均可定义列级/表级约束。