Oracle 11g学习笔记--表的高级操作

来源:互联网 发布:sql是系统软件 编辑:程序博客网 时间:2024/05/17 22:40

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 salaryadd (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_commentswhere table_name = 'table_name';--获取列的注释select *from user_col_commentswhere table_name = 'table_name';

截断表

使用truncate语句可以将表截断,这将删除表中的所有行,并且重置表的存储空间;
例如:

truncate table table_name;

注意:如果需要删除表中所有行,就应该使用truncate,而不是delete,这是因为truncate会重置表的存储空间,以准备接受新行。执行truncate语句不需要再数据库中使用任何撤销空间,也不需要执行commit命令使得删除表操作永久化,撤销空间是数据库软件用来记录数据库变化的一个区域;

0 0