修改和查询表定义

2011-08-03  黄桂梅 

也许标题所谓“表定义”不够严谨,查资料的时间见过如此表述。在此只是整理了近期以及接下来的工作中需要经常用到的修改和查询表结构、字段属性的一些语句。

修改表定义
-----------------------------------------------------------------
rename qotest2 to qotest --修改表名
ALTER TABLE qotest ADD c_add2 varchar2 (21); --添加列,db2也可用此写法。
——alter table table_name add column column_name data type varchar(250);--db2添加列的另一种写法。
alter table qotest modify (c_add2 varchar2 (21)); --修改列
——alter table test03 alter chd_c set data type char(20);--修改列,db2写法
alter table qotest rename column c_add2 to c_add3 --修改列名
alter table emp4 drop column test;——删除单列,需要加column关键词
alter table emp4 drop (test,test2);——删除多列

comment on table qotest is 't_hgm';--添加表注释
comment on column qotest.value1  is 'c_hgm'--添加列注释
------------------------------------------------------------------

查询表定义
------------------------------------------------------------------
--查询用户下有哪些表
select * from DBA_ALL_TABLES where owner='QOTEST'
select count(*) from DBA_ALL_TABLES where owner='QOTEST'
select * from USER_TABLES

--查询字段元数据信息
select * from DBA_TAB_COLUMNS where owner='QOTEST' and table_name='QOTEST'
select * from USER_TAB_COLUMNS where table_name='QOTEST'
select count(column_name) from USER_TAB_COLUMNS where table_name='QOTEST' --统计表下字段数
select column_name,data_type,data_length,data_precision,data_scale from USER_TAB_COLUMNS where table_name='QOTEST' --查询字段及其类型、长度

--查询表空间
select table_name,tablespace_name from ALL_TABLES where owner='QOTEST'

--查看表注释
select * from user_tab_comments where table_name='QOTEST';

--查看列注释
select * from user_col_comments where column_name='VALUE1';

延伸:关于数据字典


  Oracle数据字典包含了用户数据库的元数据。带下划线的表名称中带OBJ$UET$SOURCE$,这些表是在执行CREATE DATABASE语句期间由sql.bsq脚本创建的,一般情况下用户很少访问这些表。脚本catalog.sql(通常位于$oracle_home/rdbms/admin)在CREATE DATABASE语句之后立即运行,创建数据字典视图。

  数据字典视图大致可以分为三类:

  .前缀为USER_的数据字典视图,包含了用户拥有的对象的信息。

  .前缀为ALL_的数据字典视图,包含了用户当前可以访问的全部对象和权限的信息。

  .前缀为DBA_的数据字典视图,包含了数据库拥有的所有对象和权限的信息。

  在绝大多数数据字典视图中都有象DBA_TABLES,ALL_TABLESUSER_TABLES这样的视图家族。Oracle中有超过100个视图家族,所以要全面介绍这些视图家族是单调乏味的而且没有多大的意义。在下表中列出了最重要和最常用的视图家族,需要注意的是每个视图家族都有一个DBA_,一个ALL_一个USER_视图。

视图家族(View Family)

描述

COL_PRIVS

包含了表的列权限,包括授予者、被授予者和权限

EXTENTS

数据范围信息,比如数据文件,数据段名(segment_name)和大小

INDEXES

索引信息,比如类型、唯一性和被涉及的表

IND_COLUMNS

索引列信息,比如索引上的列的排序方式

OBJECTS

对象信息,比如状态和DDL time

ROLE_PRIVS

角色权限,比如GRANTADMIN选项

SEGMENTS

表和索引的数据段信息,比如tablespacestorage

SEQUECNCES

序列信息,比如序列的cachecycleast_number

SOURCE

除触发器之外的所有内置过程、函数、包的源代码

SYNONYMS

别名信息,比如引用的对象和数据库链接db_link

SYS_PRIVS

系统权限,比如granteeprivilegeadmin选项

TAB_COLUMNS

表和视图的列信息,包括列的数据类型

TAB_PRIVS

表权限,比如授予者、被授予者和权限

TABLES

表信息,比如表空间(tablespace),存储参数(storage parms)和数据行的数量

TRIGGERS

触发器信息,比如类型、事件、触发体(trigger body)

USERS

用户信息,比如临时的和缺省的表空间

VIEWS

视图信息,包括视图定义


  在Oracle中还有一些不常用的数据字典表,但这些表不是真正的字典家族,他们都是一些重要的单一的视图。

VIEW NAME

描述

USER_COL_PRIVS_MADE

用户授予他人的列权限

USER_COL_PRIVS_RECD

用户获得的列权限

USER_TAB_PRIVS_MADE

用户授予他人的表权限

USER_TAB_PRIVS_RECD

用户获得的表权限


  其他的字典视图中主要的是V$视图,之所以这样叫是因为他们都是以V$GV$开头的。V$视图是基于X$虚拟视图的。V$视图是SYS用户所拥有的,在缺省状况下,只有SYS用户和拥有DBA系统权限的用户可以看到所有的视图,没有DBA权限的用户可以看到USER_ALL_视图,但不能看到DBA_视图。与DBA_,ALL,USER_视图中面向数据库信息相反,这些视图可视的给出了面向实例的信息。


537°/5368 人阅读/1 条评论 发表评论

金鑫  2011-08-03

这个小结好,很多不用,容易生疏


登录 后发表评论