第16章管理表 2006.12.06
表和视图不可以重名,但表可以和索引、约束同名。表名和列名都是不区分大小写的,oracle会先把名字转换为大写,再把它们存储在数据字典中。如果名字中用双引号(""括起来,它会在oracle数据字典中成为区分大小写的名字。
注意:大对象数据类型的列不能出现在where,group by或order by子句中。
不能在sql*plus等环境中查询、显示大对象类型的数据,也不能通过insert语句插入大对象类型的数据,否则会出错。
如果将表的存储参数maxextents设置为unlimited,那么表就可以不受限制地自动获取所需要的存储空间,并且减少浪费。
存储空间和产生存储碎片的可能。
创建临时表(事务临时表/会话临时表)
如果创建临时表时没有使用on commit关键字,则默认创建的是事务临时表。通过指定on commit delete rows关键字,也可以指定创建事务临时表。
创建事务临时表。
sql> create global temporary table temp1
2 (id number(9) primary key,
3 name varchar2(20));
事务临时表的数据只在当前事务内可以查看,当使用commit或rollback结束事务后,其临时数据会被自动清除。
创建会话临时表。
创建临时表时通过on commit preserve rows关键字指定创建会话临时表。
sql> create global temporary table temp2
2 (id number(9) primary key,
3 name varchar2(20)
5 on commit preserve rows;
区别:事务临时表是指数据只在当前事务内有效的临时表。
会话临时表是指数据只在当前会话内有效的临时表。
标准表与索引表的区别。
标准表索引表。
使用rowid来惟一标识一行记录,并不一定要指定主键使用主键来惟一标识一行记录,必须指定主键。
对记录的访问是基于rowid的对记录的访问是基于主键的,或逻辑rowid
通过顺序扫描访问返回的记录通过全索引扫描访问返回的记录。
rowid伪列中保存的是物理rowidrowid伪例中保存的是逻辑rowide
创建一个索引结构表。
sql> create table iot1
2 (id number(9),
3 name varchar2(20),
4 address varchar2(30),
5 note varchar2(40),
6 constraint pk_id primary key (id) validate
8 organization index
9 pctthreshold 40
10 including address
11 overflow tablespace myts01;
通过查询从一个表创建另一个表。
create table table_name as select ;
这个语法经常用ctas来表示。
在子查询中可以引用一个或多个表(或视图),查询结果集中包含的列即是新表中定义的列,并且查询到的记录都会插入到新表中。
在使用ctas创建表时要注意如下几点:
◆ 可以修改新表中列的名称,但是不能修改列的数据类型和长度。新表中所有列的数据类型和长度都必须与查询列一致。
◆ select语句中不能包含大对象数据类型和long数据类型。
◆ 约束条件及列的默认值定义等都不会被复制。
◆ 建议使用nologging选项。因为如果不使用nologging选项,则每插入一条记录都将会产生重做日志信息,占用了空间和时间。在决定是否使用。
nologging选项时,必须综合考虑所获得的收益和风险。通常只需要在创建大表时才使用nologging子句,以获得较大的性能提升。
sql> create table new_emp
2 as 3 select * from emp
4 noglogging;
使用ctas创建表的时候不能指定表空间,否则会出错。
sql> create table new_emp
2 as 3 select * from emp
4 nologging
5 tablespace users;
tablespace users
第 5 行出现错误:
ora-00933: sql 命令未正确结束。
只复制表的结构,而不复制数据。
sql> create table new_emp_1
2 as 3 select * from emp
4 where 1=2;
只复制表的几个列的结构和数据,并更改列名。使用nologging选项来避免生成重做日志文件记录,减少创建表时所需的时间。
sql> desc emp;
名称是否为空? 类型。
empno not null number(4)
ename varchar2(10)
job varchar2(9)
mgr number(4)
hiredate date
sal number(7,2)
comm number(7,2)
deptno number(2)
sql> create table new_emp_2
2 as 3 select empno,ename empname,mgr manager from emp
4 nologging;
表已创建。sql> desc new_emp_2
名称是否为空? 类型。
empno number(4)
empname varchar2(10)
manager number(4)
ORACLE学习笔记
rac real application clusters 真实应用集群。ohs oracle http server sga system global area 系统全局区,是系统为实例分配的一组共享缓冲存储区,用于存放数据库数据和控制信息,以实现对数据库数据的管理和操作。实例 存取和控制数据数...
Oracle学习笔记
参数文件 记录了控制文件的位置,控制文件是一个非常小的二进制文件,最大。可以增长到 64mb,控制文件包括如下主要信息 数据库的名字,检查点信息,数据库创建的时间戳 所有的数据文件,联机日志文件,归档日志文件信息 备份信息等 有了这些信息,oracle 就知道那些文件是数据文件,现在的重做日志文件是...
ORACLE学习笔记
目录。oracla管理 1 1.登录sqlplus 1 1.1.sysdba 身份登陆 1 1.2.普通用户登陆sqlplus 1 2.常用命令 1 3.格式化提示符 2 4.查看系统状态 2 4.1.查看实例状态 2 4.2.查看表 2 5.关闭 启动 2 6.创建表空间 3 7.用户和权限 3 ...