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

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命令使得删除表操作永久化,撤销空间是数据库软件用来记录数据库变化的一个区域;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值