定义基本表格式: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 )
);
需要注意的是,除了非空约束只能定义列级约束外,其他的均可定义列级/表级约束。