sql查询所有表名和字段名称

本文介绍如何使用SQL查询来获取SQL Server和Oracle数据库的元数据信息,包括表结构、字段属性、表注释等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

sql server:

SELECT   
 d.name, ----(case when a.colorder=1 then d.name else '' end) as 表名,--如果表名相同就返回空  
     a.colorder as 字段序号,  
     a.name as 字段名,  
     (case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end) as 标识,  
     (case when (SELECT count(*) FROM sysobjects--查询主键  
                     WHERE (name in  
                             (SELECT name FROM sysindexes   
                             WHERE (id = a.id)  AND (indid in  
                                     (SELECT indid FROM sysindexkeys  
                                       WHERE (id = a.id) AND (colid in  
                                         (SELECT colid FROM syscolumns  
                                         WHERE (id = a.id) AND (name = a.name))  
                         )))))   
         AND (xtype = 'PK'))>0 then '√' else '' end) as 主键,--查询主键END  
 b.name as 类型,  
 a.length as 占用字节数,  
 COLUMNPROPERTY(a.id,a.name,'PRECISION') as  长度,  
 isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0) as 小数位数,  
 (case when a.isnullable=1 then '√'else '' end) as 允许空,  
 isnull(e.text,'') as 默认值,  
 isnull(g.[value],'') AS 字段说明   
 FROM syscolumns a left join systypes b   
 on a.xtype=b.xusertype  
 inner join sysobjects d   
 on a.id=d.id and d.xtype='U' and d.name<>'dtproperties'  
 left join syscomments e  
 on a.cdefault=e.id  
 left join sys.extended_properties g 
 on a.id=g.major_id AND a.colid = g.minor_id    where a.name='IsOwnerMerger'
 order by a.id,a.colorder

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:

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列。 
*/

转载自:http://www.cnblogs.com/emanlee/archive/2011/12/02/2272629.html

### 如何使用 SQL 查询字段 在关系型数据库中,`information_schema` 是一个非常重要的元数据存储区域,它包含了关于数据库结构的信息。通过查询 `information_schema.tables` `information_schema.columns` 可以分别获取数据库中的以及特定字段及其属性。 #### 查询所有数据库中的 以下是用于查询当前数据库下所有的标准 SQL 语句: ```sql SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'your_database_name'; ``` 此查询会返回指定数据库下的所有名称[^1]。 #### 查询某个的所有字段字段类型 如果需要进一步了解某一具体字段详情,则可以执行如下 SQL 语句: ```sql SELECT COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH, IS_NULLABLE, COLUMN_DEFAULT FROM information_schema.COLUMNS WHERE TABLE_NAME = 'your_table_name' AND TABLE_SCHEMA = 'your_database_name'; ``` 这条命令不仅能够展示列的字 (`COLUMN_NAME`) 其对应的数据类型 (`DATA_TYPE`) ,还可以提供其他有用信息比如字符长度(`CHARACTER_MAXIMUM_LENGTH`)、是否允许为空(`IS_NULLABLE`)以及默认值(`COLUMN_DEFAULT`)[^2]。 对于 Oracle 数据库环境而言,可采用以下方式来达到相同目的: ```sql SELECT COLUMN_NAME, DATA_TYPE FROM USER_TAB_COLUMNS WHERE TABLE_NAME = 'YOUR_TABLE_NAME'; -- 注意这里的需为大写字母书写形式 ``` 这是因为在Oracle里,默认情况下对象字会被转换成大写处理[^3]。 另外,在 MySQL 中实现这一功能也有相应的语法支持: ```sql SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='your_db_name' AND TABLE_NAME='your_tbl_name'; ``` 这段脚本特别适用于MySQL环境下定位到确切的目标格之后再深入挖掘其中每一栏位的具体定义情况[^4]。 最后值得注意的是不同类型的DBMS可能存在着细微差异甚至完全不同的方法论去完成相似的任务;因此实际应用过程中应当参照所使用的具体产品文档来进行适当调整优化操作流程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值