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'
注意:表名,字段名要大写!