扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
利用sql语句查询某个表的结构的方法:
我们提供的服务有:成都网站设计、做网站、微信公众号开发、网站优化、网站认证、龙湖ssl等。为近1000家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的龙湖网站制作公司
通过Oracle中的user_tab_cols, user_col_comments, user_constraints, user_cons_columns表联合查询。
1、user_tab_cols用来获取对应用户表的列信息;
2、user_col_comments用来获取对应用户表列的注释信息;
3、user_constraints用来获取用户表的约束条件;
4、user_cons_columns约束中用户可访问列。
示例代码:
select t.table_name,
t.column_name,
t.data_type,
t.data_length,
t.nullable,
t.column_id,
c.comments,
(SELECT CASE
WHEN t.column_name = m.column_name THEN
1
ELSE
0
END
FROM DUAL) iskey
FROM user_tab_cols t,
user_col_comments c,
(select m.column_name
from user_constraints s, user_cons_columns m
where lower(m.table_name) = 'qh_outstoresabinfo'
and m.table_name = s.table_name
and m.constraint_name = s.constraint_name
and s.constraint_type = 'P') m
WHERE lower(t.table_name) = 'qh_outstoresabinfo'
and c.table_name = t.table_name
and c.column_name = t.column_name
and t.hidden_column = 'NO'
order by t.column_id
有一个不是办法的办法,利用注释和子查询,我不确定能不能用,只是想到了。
你可以实验一下,如果子查询得到的唯一结果能够被当做别名赋予字段,那么这个办法可以实现,否则你只能另想办法了。
举例
select name (select comment from user_col_comments where table_name='AA' AND column_name='NAME') FROM AA
其中子查询select comment from user_col_comments where table_name='AA' AND column_name='NAME' 的结果唯一,如果这个唯一的结果成为name的别名,那么就能显示中文。
暂时我还没有想到其他办法。
如果让中英文都出现只要加上||,我想这个应该可以实现。
Oracle 下读取表/字段的备注信息
Oracle 通过COMMENT ON TABLE / COMMENT ON COLUMN 追加表/字段的备注。
CREATE TABLE "MR_DEPT" (
"DEPT_ID" NUMBER NOT NULL ,
"PARENT_ID" NUMBER,
"DEPT_NAME" CHAR(20) NOT NULL ,
"STATUS" NUMBER DEFAULT 1 NOT NULL ,
PRIMARY KEY ("DEPT_ID")
);
COMMENT ON TABLE "MR_DEPT" IS '部门表';
COMMENT ON COLUMN "MR_DEPT"."DEPT_ID" IS '部门编号';
COMMENT ON COLUMN "MR_DEPT"."PARENT_ID" IS '上级部门编号';
COMMENT ON COLUMN "MR_DEPT"."DEPT_NAME" IS '部门名';
COMMENT ON COLUMN "MR_DEPT"."STATUS" IS '状态';
备注加好以后,如何在查询中检索呢?
查询表的备注信息
SELECT
TABLE_NAME,
TABLE_TYPE,
COMMENTS
FROM
USER_TAB_COMMENTS
WHERE
TABLE_NAME = 'MR_DEPT;
查询字段的备注信息
SELECT
TABLE_NAME,
COLUMN_NAME,
COMMENTS
FROM
USER_COL_COMMENTS
WHERE
TABLE_NAME = 'MR_DEPT;
SELECT b.column_name column_name -字段名
,b.data_type data_type -字段类型
,b.data_length -字段长度
,a.comments comments -字段注释
FROM user_col_comments a
,all_tab_columns b
WHERE a.table_name = b.table_name and
a.table_name = 'table_name';
扩展资料:
关于获取oracle表中所有需要的信息(字段、注释、类型等等)
一、获取表字段:
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:
wer,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 all_col_comments
/*
user_col_comments:table_name,column_name,comments
相应的还有dba_col_comments,all_col_comments,这两个比user_col_comments多了ower列。
*/
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流