Oracle 11g学习笔记–表的高级操作
创建临时表
临时表中的行是特定于某个用户会话的,行的有效期由on commit子句指定;
create global temporary table table_name(
column_name type .....
...)
[on commit { delete | preserve | rows}]
tablespace tab_space;
● on commit 控制临时表中行的有效期;delete说明这些行在事务的末尾要被删除。默认为delete;preserve 说明这些行在用户回话的末尾要被删除.
●tablespace 指定表空间,如果没有指定,该表北村仔该用户的默认表空间中;
查询表相关
获取表信息
从user_tables视图中查找:
select
table_name, --表名
tablespace_name, --表空间名,表空间就是用来存储诸如表之类的对象的地方
temporary --是否为临时表,如果是则为Y,否则为 N;
from
user_tables;
获取列信息
通过访问all_table_columns视图,可以获得有关要访问的表中所有列的信息:
select
table_name, --表名
column_name, --列名
data_type, --数据类型
data_length, --数据的长度
data_precision, --如果为数字列指定了精度,该列就是其精度
data_scale --数字列小数部分的位数
from
user_tab_columns;
添加虚拟列
在Oracle Database 11g中可以添加一个虚拟列,虚拟列只引用已有的其它列。
例如:
alter table salary
add (averge_salary as ((low_salary + high_salary) / 2));
注释
注释有助于记住表或列的用途,使用commit语句可以为表或列添加注释;
--为表添加注释
comment on table table_name is
'comment content';
--为列添加注释
comment on table table_name.column_name is
'comment content';
--获取表的注释
select *
from user_tab_comments
where table_name = 'table_name';
--获取列的注释
select *
from user_col_comments
where table_name = 'table_name';
截断表
使用truncate语句可以将表截断,这将删除表中的所有行,并且重置表的存储空间;
例如:
truncate table table_name;
注意:如果需要删除表中所有行,就应该使用truncate,而不是delete,这是因为truncate会重置表的存储空间,以准备接受新行。执行truncate语句不需要再数据库中使用任何撤销空间,也不需要执行commit命令使得删除表操作永久化,撤销空间是数据库软件用来记录数据库变化的一个区域;