oracle学习笔记

发布 2021-05-11 23:54:28 阅读 1722

第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 ...