第四章Oracle数据库对象(2)

2019-06-17 19:54

第04章 数据库对象

格式约定:

大写:关键字,必须照样输入的字符。

小写:参数项,必须根据实际情况填写参数、对象名、操作序列等。 [] :可选项,不写[]。

{} :必选项,一般用在 | 的多项之间。不写{}。 | :多选一,多项在{}或[]之间。不写|。

... :前面项{}可以重复多项。前面有符号,是项分隔符;后面有符号,是项结束符。 语法说明:

(1)user:用户名,也叫模式,缺省为当前用户。

(2)tablename:表名,以字符打头,不超过30字符,不区分大小写,除非用引号。 (3)column:列名

(4)datatype:数据类型及宽度定义(参考“数据类型”) (5)DEFAULT expn:缺省值,插入时自动填写的数据

(6)TABLESPACE tablespace_name:表空间,缺省为用户的默认表空间 (7)[RECOVERABLE|UNRECOVERABLE]:是否可恢复

(8)[CACHE|NO CACHE]:是将数据放入SGA的保持缓冲区。 (9)[ENABLE|DISABLE]:约束是否有效。

(10)[LOGGING|NOLOGGING]:创建操作是否写入日志文件。 (11)[MONITORING|NOMONITORING]:是否收集并修改统计量。 (12)[AS query]:用查询语句查询的数据插入定义的表中。 (13)数据块使用率控制参数:

PCTFREE n:数据块中空闲百分比,修改数据时增大时,避免行迁移,默认为10%。 PCTUSED n:数据块中使用百分比,保证空间使用率,避免浪费,默认为40%。 (14)数据块事务共享控制参数:

INITRANS n:初始时可并行访问数据块的事务数(1-255),默认为1。 MAXTRANS n:可并行访问数据块的最大事务数(1-255),默认为255。

- 6 -

第04章 数据库对象

注意:数据块控制参数,在一般情况下,不重新设置,使用默认值。 (15)STORAGE:存储参数:

存储参数又叫区的控制参数,决定了段在扩大时区增加的方法。

参数 INITIAL NEXT MINEXTENTS MAXEXTENS PCTINCREASE OPTIMAL 描述 默认值 最小值 2 1 第一个区的大小,小于最小值取最小,字节 5 第二个区的大小,小于最小值取最小,字节 5 最小区数 最大区数(505,249) 1回退2 1回退2 121 1回退2 0 从第三个区开始,NEXT×(1+?)回退不用 50 回滚段的最有参数(收回保留空间) 注意:由于Oracle 8i及以后版本提供了本地管理方式,逐步淘汰字典管理方式,不再在段一级设置存储参数,只需在建立表空间时指明本地管理方式即可:

SQL>CREATE TABLESPACE ... ENTENT MANAGEMENT LOCAL {AUTOLOCATE | UNIFORM n {K|M}} (16)column_constraint:列限制,在列的后面,仅对前面一列进行限制,列限制有: ①NULL|NOT NULL:限制是否为空。NULL允许为空(缺省),NOT NULL不允许为空。 ②PRIMARY KEY:设置列为主键,该列不允许重复和不允许为空(NOT NULL)。 ③UNIQUE: 该列值不能重复,但可为NULL。

④FOREIGN KEY REFERENCES tablename(column):该列为外键,指明被参照表及其主键。 ⑤CHECK(cond_exp):限制某列的值,必须满足设置的条件及使条件表达式为TRUE的值。 (17)table_constraint:表限制,针对多个列或整个表的限制,不能作为列限制,只能作为表限制,表限制在列定义之后,收括号之前定义。另外,设置主键或唯一键后,自动建立索引,为了说明索引的名字,并将索引存放在指定表空间,主键和唯一键的限制也作为列索引。

①主键约束:

CONSTRAINT constraint_name PRIMARY KEY (column[,column...])

USING INDEX TABLESPACE tablespace_index

②唯一键约束:

CONSTRAINT constraint_name UNIQUE (column[,column...])

- 7 -

第04章 数据库对象

USING INDEX TABLESPACE tablespace_index

③外键约束:

CONSTRAINT foreign_key_name FOREIGN KEY (column[,column...])

REFERENCES [schema.]table(column[,column...]) [ON DELETE {DESCADE|SET NULL}]

REFERENCES 指明参照表和参照列。

ON DELETE 指明被参照表记录删除时,参照表中相应记录级联删除或对应列设置为NULL。 ④CHECK约束:只有使条件表达式的值为true时的记录才能插入。

CONSTRAINT check_name CHECK (cond_exp) 建立基本表举例:

例1:基本项:说明列定义、NULL|NOT NULL、缺省值、指定数据表空间 CREATE TABLE teacher(

teacher_id NUMBER(20) name sex

VARCHAR2(10) CHAR(2) DATE

NOT NULL, NOT NULL, DEFAULT ‘男’, NULL

birthday

)TABLESPACE USERS; 说明:

(1)表名为teacher。如果没有指明前面的用户,如scott.teacher,则为当前用户的表。 (2)NULL可以省略(缺省),可为空,表示增加记录时,如果没有指明该列值,则填写NULL。 (3)NOT NULL 表示在增加记录时,必须指明该列值,即不能为空。

(4)DEFUALT 缺省值,表示增加记录时,如果没有指明该列值,则用缺省值代替。 (5)TABLESPACE数据表的表空间,如果省略,则存储在用户的默认表空间。

(6)SQL大小写不敏感,但书写时尽量按语法约定;列名、类型、约束尽量对齐,以便阅读。 (7)建立表、数据库等DDL语句,尽量先用文本编辑保存,以便调试修改,并备份。 例2:定义列约束

- 8 -

第04章 数据库对象

CREATE TABLE teacher(

teacher_id NUMBER(20) name dno sex

VARCHAR2(10) VARCHAR2(10) CHAR(2) DATE

NOT NULL PRIMARY KEY, UNIQUE,

FOREIGN KEY REFERENCES dept(dno), CHECK(sex IN (‘男’,’女’)),

birthday ); 说明:

(1)列约束与前面的列之间用空格分隔。

(2)一个表只能有一个主键,但可有多个唯一键。系统自动为主键和唯一键建立索引,为了明确索引的名称和存放的表空间,从而约束语句较长,一般使用表约束定义主键和唯一键。

(3)列定义的基本形式:

column_name datatype [DEFAULT defualt_value] [[NOT] NULL] [column_constraint] 例3:使用表约束 CREATE TABLE teacher(

teacher_id NUMBER(20) name dno sex

VARCHAR2(10), VARCHAR2(10), CHAR(2), DATE

NOT NULL,

birthday

CONSTRAINT teacher_id_pk PRIMARY KEY(teacher_id)

USING INDEX TABLESPACE indx, CONSTRAINT teacher_name_uq UNIQUE(name)

USING INDEX TABLESPACE indx,

CONSTRAINT teacher_sex_ck CHECK(sex IN (‘男’,’女’)), CONSTRAINT teacher_dno_fk FOREIN KEY(dept_id)

- 9 -

第04章 数据库对象

REFERENCES dept(dno) ); 说明:

(1)表限制可以任意位置,但一般放在后面;

(2)对于主键和唯一键的限制名与索引名称同名,使用USING INDEX TABLESPACE子句,指定索引所在表空间,将索引和表分离,以便提高I/O性能。

(3)限制名要能标识表名、列名。命令习惯如下:

主键限制名:

表名_字段名_pk;

唯一键限制名: 表名_字段名_uq; 外键限制名:

表名_字段名_fk;

CHECK限制名: 表名_字段名_ck;

(4)定义外键之前,要建立被参照表,并设置参照列为主键。 例4:使用复制建表

CREATE TABLE teacher PARALLEL 2 NOLOGGING AS

SELECT * FROM scott.teacher;

(1)AS使用SELECT查询数据建表,表结构与查询结构相同。 (2)PARALLEL n 并行度,使用n个并行服务进程进行数据加载操作。

(3)NOLOGGING 说明建表操作不记录在日志中,加快了建表操作,但不能恢复。 2.建立临时表

临时表(temporary table)是一种使用完后自动删除的表。建立临时表的语法; CREATE GLOBAL TEMPORARY TABLE tablename

({column datatype [DEFAULT expn] [column_constraint]|[table_constraint]},...) [AS query]

ON COMMIT {DELETE|PRESERVE} ROWS 说明:

(1)ON COMMIT DELETE ROWS:创建临时表后,插入数据的事务结束后自动删除插入的数据(事

- 10 -


第四章Oracle数据库对象(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:污水处理283个为什么(绝对不错)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: