Oracle数据库表中的字段添加注释

2016-11-25 09:49:02|?次阅读|上传:jifeng520qq【已有?条评论】发表评论

关键词:Oracle|来源:唯设编程网

 
Oracle数据库表中的字段添加注释:
语法:COMMENT ON COLUMN 表名.列名 IS '注释内容';
 
comment on  column  表名.字段名   is  '注释内容';
comment on  column  OPERATOR_INFO.MAIN_OPER_ID is '归属操作员';
 
comment on table 表名  is  '注释内容';
comment on table OPERATOR_INFO is  '操作员信息表';
 
权限要求:
默认情况下用户只能给属于自己的对象添加注释。
如果要想给其他用户对象添加注释需要拥有权限:COMMENT ANY TABLE
 
create table Base_UserLogOn (
   UserId               INTEGER     not null,
   UserSource           VARCHAR2(50),
   OpenId               VARCHAR2(50),
   constraint PK_BASE_USERLOGON primary key (UserId)
);
comment on table Base_UserLogOn is '系统用户登录信息表';
comment on column Base_UserLogOn.UserId is '主键';
comment on column Base_UserLogOn.UserSource is '用户来源';
comment on column Base_UserLogOn.OpenId is '单点登录标识';
 
 
练习:
创建Oracle数据库表时候加上注释
 
CREATE TABLE t1(
id  varchar2(32) primary key,
name VARCHAR2(8) NOT NULL,
age number,
)
 
添加表注释:
COMMENT ON table t1 IS '个人信息';
 
添加字段注释:
comment on column t1.id  is 'id';
comment on column t1.nameis '姓名';
comment on column t1.age is '年龄';
 
 
 
 
获取表注释:
select * from user_tab_comments
user_tab_comments:table_name,table_type,comments
相应的还有dba_tab_comments,all_tab_comments,这两个比user_tab_comments多了ower列。
获取字段注释:
select * from user_col_comments
user_col_comments:table_name,column_name,comments
 
相应的还有dba_col_comments,all_col_comments,这两个比user_col_comments多了ower列。
 
 
 
Oracle数据库中 comment (注释) 怎么修改?pl/slq 工具登录进去,选择表右键“编辑”,直接修改注释.可以直接执行comment on table mo_todo is 'other';会覆盖掉原来的注释的。
Oracle数据库中 comment (注释) 修改方法:分两种情况,一种是表注释,一种是字段注释。对表或表字段增加或修改注释内容的方法都是一样的。
  一、表注释修改语法:comment on table 表名 is '注释内容';
  二、字段注释修改语法:comment on column 表名.字段名 is '注释内容'。
 
   如:
  1、创建表: CREATE TABLE t1(id varchar2(32) primary key,name VARCHAR2(8) NOT NULL,age number);
  2、添加表注释: Comment on table t1 is '个人信息';
  3、添加字段注释:
     comment on column t1.id is 'id';
     comment on column t1.nameis '姓名';
     comment on column t1.age is '年龄';
 
 
************************************************************************************************************************
Oracle 增加修改删除字段与添加注释
添加字段的语法:alter table tablename add (column datatype [default value][null/not null],….);
修改字段的语法:alter table tablename modify (column datatype [default value][null/not null],….);
删除字段的语法:alter table tablename drop (column);
添加、修改、删除多列的话,用逗号隔开。
使用alter table 来增加、删除和修改一个列的例子。
 
创建表结构:
create table test1
(id varchar2(20) not null);
 
增加一个字段:
 
alter table test1
add (name varchar2(30) default ‘无名氏’ not null);
 
使用一个SQL语句同时添加三个字段:
 
alter table test1
add (name varchar2(30) default ‘无名氏’ not null,
 
age integer default 22 not null,
 
has_money number(9,2)
 
);
 
修改一个字段
 
alter table test1
modify (name varchar2(16) default ‘unknown’);
 
另:比较正规的写法是:
 
-- Add/modify columns 
alter table TABLE_NAME rename column FIELD_NAME to NEW_FIELD_NAME;
 
删除一个字段
 
alter table test1
drop column name;
 
需要注意的是如果某一列中已经存在值,如果你要修改的为比这些值还要小的列宽这样将会出现一个错误。
 
例如前面如果我们插入一个值
insert into test1
values (’1′,’我们很爱你’);
 
然后曾修改列: alter table test1
modify (name varchar2(8));
将会得到以下错误:
ERROR 位于第 2 行:
ORA-01441: 无法减小列长度, 因为一些值过大
 
---------------------------------------------------------------------------------------------------------------
 
高级用法:
重命名表
ALTER TABLE table_name RENAME TO new_table_name;
 
修改列的名称
语法:
ALTER TABLE table_name RENAME COLUMN supplier_name to sname;
 
范例:
alter table s_dept rename column age to age1;
 
附:创建带主键的表>>
create table student (
studentid int primary key not null,
studentname varchar(8),
age int);
 
1、创建表的同时创建主键约束
(1)无命名
create table student (
studentid int primary key not null,
studentname varchar(8),
age int);
(2)有命名
create table students (
studentid int ,
studentname varchar(8),
age int,
constraint yy primary key(studentid));
 
联合主键的使用:
建表时候设置
CREATE   TABLE   TAB ( 
      ID1                                       NUMBER(10)      , 
      ID2                                       NUMBER(4), 
      CREDIT                                       NUMBER(2), 
      CONSTRAINT   PK_TAB  PRIMARY   KEY   (ID1,ID2)  -- 主键
);
或者建表之后追加
alter table tab add constraint pk_tab2 primary key (id1,id2);
 
 
2、删除表中已有的主键约束
(1)无命名
可用 SELECT * from user_cons_columns;
查找表中主键名称得student表中的主键名为SYS_C002715
alter table student drop constraint SYS_C002715;
(2)有命名
alter table students drop constraint yy;
 
 
3、向表中添加主键约束
alter table student add constraint pk_student primary key(studentid);
 
 
 
 
####################################创建Oracle数据库表时候加上注释#################################
 
 
CREATE TABLE t1(
id varchar2(32) primary key,
name VARCHAR2(8) NOT NULL,
age number,
)
 
添加表注释:
COMMENT ON table t1 IS '个人信息';
 
添加字段注释:
comment on column t1.id is 'id';
comment on column t1.nameis '姓名';
comment on column t1.age is '年龄';
 
 
 
 
相关数据字段视图:
USER_TAB_COMMENTS
DBA_TAB_COMMENTS
ALL_TAB_COMMENTS
USER_COL_COMMENTS
DBA_COL_COMMENTS
ALL_COL_COMMENTS
 
 
示例如下:
drop table t;
create table t(id number);
 
select * from user_tab_comments;
TABLE_NAME TABLE_TYPE COMMENTS
------------------------------ ------------------------------ ------------------------------
T TABLE
 
select * from USER_COL_COMMENTS;
SCOTT@orcl> select * from USER_COL_COMMENTS WHERE table_name='T';
TABLE_NAME COLUMN_NAME COMMENTS
------------------------------ ------------------------------ ------------------------------
T ID
 
 
--添加注释
SCOTT@orcl> comment on table t is '测试表T';
注释已创建。
 
 
SCOTT@orcl> comment on column t.id is '行ID';
注释已创建。
 
 
SCOTT@orcl> select * from user_tab_comments WHERE table_name='T';
TABLE_NAME TABLE_TYPE COMMENTS
------------------------------ ------------------------------ ------------------------------
T TABLE 测试表T
 
 
SCOTT@orcl> select * from USER_COL_COMMENTS WHERE table_name='T';
TABLE_NAME COLUMN_NAME COMMENTS
------------------------------ ------------------------------ ------------------------------
T ID 行ID
 
 
 
PLSQL中的表里无法显示中文,中文无法保存、无法输出,中文在表中显示问号:
开始-运行-输入regedit-回车进入注册表,依次单击HKEY_LOCAL_MACHINE--->SOFTWARE ---> ORACLE--->KEY_OraDb11g_home1(不同版本的Oracle显示的都不太一样,
但都会包含home这个单词),找到“NLS_LANG”,查看数值数据是否为:“SIMPLIFIED CHINESE_CHINA.ZHS16GBK”,如果不是就将它设置为“SIMPLIFIED CHINESE_CHINA.ZHS16GBK。”
 
 
 
 
附录:
Oracle中查看所有表和字段以及表注释.字段注释
获取表:
select table_name from user_tables; //当前用户拥有的表      
 
select table_name from all_tables; //所有用户的表 
select table_name from dba_tables; //包括系统表
select table_name from dba_tables where owner='用户名'
 
user_tables:
table_name,tablespace_name,last_analyzed等
dba_tables:
ower,table_name,tablespace_name,last_analyzed等
all_tables:
ower,table_name,tablespace_name,last_analyzed等
all_objects:
ower,object_name,subobject_name,object_id,created,last_ddl_time,timestamp,status等
 
 
获取表字段:
select * from user_tab_columns where Table_Name='用户表';
select * from all_tab_columns where Table_Name='用户表';
select * from dba_tab_columns where Table_Name='用户表';
user_tab_columns:
table_name,column_name,data_type,data_length,data_precision,data_scale,nullable,column_id等
all_tab_columns :
ower,table_name,column_name,data_type,data_length,data_precision,data_scale,nullable,column_id等
dba_tab_columns:
ower,table_name,column_name,data_type,data_length,data_precision,data_scale,nullable,column_id等
 
 
获取表注释:
select * from user_tab_comments
user_tab_comments:table_name,table_type,comments
相应的还有dba_tab_comments,all_tab_comments,这两个比user_tab_comments多了ower列。
获取字段注释:
select * from user_col_comments
user_col_comments:table_name,column_name,comments
 
相应的还有dba_col_comments,all_col_comments,这两个比user_col_comments多了ower列。
 
 
 
详解:
获取表字段:
select * 
from user_tab_columns 
where Table_Name='用户表'
order by column_name
获取表注释:
select * 
from user_tab_comments 
where Table_Name='用户表'
 
order by Table_Name
获取字段注释:
select * 
from user_col_comments 
where Table_Name='用户表'
 
order by column_name
 
/* 获取表:*/
 
select table_name from user_tables; //当前用户的表 
 
select table_name from all_tables; //所有用户的表 
 
select table_name from dba_tables; //包括系统表
 
select table_name from dba_tables where owner='zfxfzb'
 
/* 
user_tables:
 
table_name,tablespace_name,last_analyzed等
 
dba_tables:
 
ower,table_name,tablespace_name,last_analyzed等
 
all_tables:
 
ower,table_name,tablespace_name,last_analyzed等
 
all_objects:
 
ower,object_name,subobject_name,object_id,created,last_ddl_time,timestamp,status等 
*/
 
/* 获取表字段:*/
 
select * from user_tab_columns where Table_Name='用户表';
 
select * from all_tab_columns where Table_Name='用户表';
 
select * from dba_tab_columns where Table_Name='用户表';
 
/* user_tab_columns:
 
table_name,column_name,data_type,data_length,data_precision,data_scale,nullable,column_id等
 
all_tab_columns :
 
ower,table_name,column_name,data_type,data_length,data_precision,data_scale,nullable,column_id等
 
dba_tab_columns:
 
ower,table_name,column_name,data_type,data_length,data_precision,data_scale,nullable,column_id等 
*/
 
/* 获取表注释:*/
 
select * from user_tab_comments
 
/* 
user_tab_comments:table_name,table_type,comments
 
相应的还有dba_tab_comments,all_tab_comments,这两个比user_tab_comments多了ower列。 
*/
 
/* 获取字段注释:*/
 
select * from user_col_comments
 
/*
 
user_col_comments:table_name,column_name,comments
 
相应的还有dba_col_comments,all_col_comments,这两个比user_col_comments多了ower列。 
 
 
 
练习:在oracle中操作表及字段注释
 
在oracle 中创建表如下:
[sql] 
create table TM_FAULT_BUS_ATTENTION  
(  
  BUS_NO     NUMBER(6),  
  LINE_NO    VARCHAR2(6),  
  FILA_NO    NUMBER(3),  
  BUS_JOB_NO VARCHAR2(20) not null,  
  CITY_NO    NUMBER(4),  
  GROUP_NO   NUMBER(4),  
  INS_TIME   DATE,  
  IS_SEND    NUMBER(1) default 1  
);  
[sql] 
-- Add comments to the table   
comment on table TM_FAULT_BUS_ATTENTION  
  is '添加故障车辆信息表';  
-- Add comments to the columns   
comment on column TM_FAULT_BUS_ATTENTION.BUS_NO  
  is '车号';  
comment on column TM_FAULT_BUS_ATTENTION.LINE_NO  
  is '线路号';  
comment on column TM_FAULT_BUS_ATTENTION.FILA_NO  
  is '公司号';  
comment on column TM_FAULT_BUS_ATTENTION.BUS_JOB_NO  
  is '车工号';  
comment on column TM_FAULT_BUS_ATTENTION.CITY_NO  
  is '地区';  
comment on column TM_FAULT_BUS_ATTENTION.GROUP_NO  
  is '车队';  
comment on column TM_FAULT_BUS_ATTENTION.INS_TIME  
  is '下载时间';  
comment on column TM_FAULT_BUS_ATTENTION.IS_SEND  
  is '是否已发';  
备注加好以后,那么如何查询呢?
查询表注释信息如下:
[sql] 
SELECT  TABLE_NAME,  TABLE_TYPE,  COMMENTS FROM  USER_TAB_COMMENTS WHERE  TABLE_NAME = 'TM_FAULT_BUS_ATTENTION';  
查询表中字段注释信息如下:
[sql] 
SELECT  TABLE_NAME,  COLUMN_NAME,  COMMENTS FROM  USER_COL_COMMENTS WHERE  TABLE_NAME = 'TM_FAULT_BUS_ATTENTION';  
查询表中某个字段的注释如下:
[sql] 
select  comments  from USER_COL_COMMENTS where table_name= 'TM_FAULT_BUS_ATTENTION' and column_name= 'LINE_NO'  
 
注意:表名,字段名要大写!
发表评论0条 】
网友评论(共?条评论)..
Oracle数据库表中的字段添加注释