如何利用sql语句查看表备注信息

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何利用sql语句查看表备注信息相关的知识,希望对你有一定的参考价值。

参考技术A select top 1000
ROW_NUMBER() OVER (ORDER BY a.object_id) AS No,
a.name AS 表名,
isnull(g.[value],'-') AS 说明
from
sys.tables a left join sys.extended_properties g
on (a.object_id = g.major_id AND g.minor_id = 0)

No 表名 说明
1 test_table 测试表
2 test_main -追问

能利用sql语句显示出每个字段的的备注信息么?

追答

SELECT
col.name AS 列名,
typ.name as 数据类型,
col.max_length AS 占用字节数,
col.precision AS 数字长度,
col.scale AS 小数位数,
col.is_nullable AS 是否允许非空,
col.is_identity AS 是否自增,
case when exists
( SELECT 1
FROM
sys.indexes idx
join sys.index_columns idxCol
on (idx.object_id = idxCol.object_id)
WHERE
idx.object_id = col.object_id
AND idxCol.index_column_id = col.column_id
AND idx.is_primary_key = 1
) THEN 1 ELSE 0 END AS 是否是主键
FROM
sys.columns col left join sys.types typ on (col.system_type_id = typ.system_type_id)
WHERE
col.object_id =
(SELECT object_id FROM sys.tables WHERE name = 'test_table')

本回答被提问者采纳

数据库大师成长日记:巧用SQL语句查看SQL Server的结构信息

常用SQLServer的朋友们,绝大部分情况下,我们写SQL脚本主要用来处理我们自己的数据,比如读取、插入数据等。但在有些情况下,我们可能要查看我们定义的一些元素,比如我们定义的表都有哪些、表结构如何、存储过程的源码等等。这时候,我们学习的常规的SQL脚本可能就无法处理了。

技术分享图片

比如您要写一个管理数据库的程序,就要知道数据库中有什么表、表结构如何,以及视图、存储过程的脚本源码等。下面我就说说如何获取数据库的结构信息。

获取数据库及配置信息

1、获取数据库配置信息

  1. exec sp_server_info  
技术分享图片

2、返回所有数据库

  1. exec sp_databases  

获取系统中的用户表

有三种方法可以使用,分别是:

1、利用sysobjects系统表或sys.objects目录视图

  1. select * from sysobjects where xtype=‘U‘  
  2. select * from sys.objects where xtype=‘U‘  

2、利用sys.tables目录视图

  1. select * from sys.tables  

3、利用存储过程sp_tables

  1. exec sp_tables  

获取系统中所有的用户视图

有两种方法可以使用,分别是:

1、利用sysobjects系统表或sys.objects目录视图

  1. select * from sysobjects where xtype=‘V‘  
  2. select * from sys.objects where xtype=‘V‘  

2、利用sys.tables目录视图

 
  1. select * from sys.tables  

获取数据库中所有的用户存储过程

有两种方法可以使用,分别是:

1、利用sysobjects系统表或sys.objects目录视图

  1. select * from sysobjects where xtype=‘P‘  
  2. select * from sys.objects where xtype=‘P‘  

2、利用sys.procedures目录视图

  1. select * from sys.procedures  

获取存储过程或视图的定义脚本

要用到系统视图sys.all_objectssys.sql_modules,写法如下:

  1. select a.name,a.[type],b.[definition]   
  2. from sys.all_objects a,sys.sql_modules b  
  3. where a.is_ms_shipped=0 and a.object_id = b.object_id and a.[type] in (‘P‘,‘V‘)  
  4. order by a.[name] asc 
技术分享图片

其中 sys.all_objects 是 sql server 2012 版本中的系统视图,在 更早期的 sql server 版本中,应该用 sys.objects,同时,sys.objects 在 2012 中也是可以用的,只不过考虑到后续兼容性,在新版本中,用新的 name 还是比较好。

sys.all_objects.type字段常用的类型有: P = 存储过程、V = 视图、U = 表(用户定义类型)、TT = 表类型 、AF = 聚合函数等。

sys.sql_modules.definition返回的就是定义存储过程或视图的脚本

获取表的字段信息

1、如果单纯获取字段名称,只需要用到系统表syscolumns

  1. select * from syscolumns where id=object_id(‘表名‘)  

2、如果要获取字段和对应的数据类型,需要用到系统表syscolumnssystypes

  1. select a.name as [column],b.name as type   
  2. from syscolumns a,systypes b   
  3. where a.id=object_id(‘表名‘) and a.xtype=b.xtype  
技术分享图片

3、获取更详细的表结构信息,调用[INFORMATION_SCHEMA].[COLUMNS]

  1. SELECT c.TABLE_SCHEMA ,  
  2.  c.TABLE_NAME ,  
  3.  c.COLUMN_NAME ,  
  4.  c.DATA_TYPE ,  
  5.  c.CHARACTER_MAXIMUM_LENGTH ,  
  6.  c.COLUMN_DEFAULT ,  
  7.  c.IS_NULLABLE ,  
  8.  c.NUMERIC_PRECISION ,  
  9.  c.NUMERIC_SCALE  
  10. FROM [INFORMATION_SCHEMA].[COLUMNS] c  
  11. WHERE TABLE_NAME = ‘idata‘  
技术分享图片

如果您能够活用这些系统内置的表、视图和存储过程,您总可以找到方法方便的查到想要知道的数据元素信息。

以上是关于如何利用sql语句查看表备注信息的主要内容,如果未能解决你的问题,请参考以下文章

如何使用sql语句,查询oracle的表注释等信息?

如何使用sql语句,查询oracle的表注释等信息?

SQL Server数据库进阶考试题 要求用SQL语句实现(全部利用SQL语句完成)

如何在sqlserver中获取表的所有列信息

如何生成hive的建表语句

如何添加SqlServer 2000中字段的备注信息