SQL Server中Table字典数据的查询SQL示例代码

前言

在数据库系统原理与设计(第3版)教科书中这样写道:

数据库包含4类数据:

1.用户数据

2.元数据

3.索引

4.应用元数据

其中,元数据也叫数据字典,定义如下:

下面这篇文章就来给大家分享一个关于查询SQL Server Table 结构的SQL 语句。

T-SQL 如下:

SELECT (case when a.colorder=1 then d.name else '' end) 表名,
a.colorder 字段序号,a.name 字段名,
(case when a.colorder=1 then isnull(f.value,'') else '' end) 表说明,
(case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '1'else '0' end)标识,
(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 '1' else '0' end) 主键,b.name 类型,a.length 占用字节数,
COLUMNPROPERTY(a.id,a.name,'PRECISION') as 长度,
isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0) as 小数位数,(case when
a.isnullable=1 then '1'else '0' end) 允许空,
isnull(e.text,'') 默认值,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
left join sys.extended_properties f on d.id=f.major_id and f.minor_id=0
--where b.name is not null
WHERE d.name='DBA_Server' --如果只查询指定表,加上此条件,此案例为表DBA_Server
order by a.id,a.colorder

查询出的结果如下:

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

(0)

相关推荐

  • SqlServer 按时间段查询问题

    百度的资料,保存下来: 在写按时间段查询的sql语句的时候 一般我们会这么写查询条件: where date>='2010-01-01' and date<='2010-10-1' 但是在实执行Sql时些语句会转换成这样: where date>='2010-01-01 0:00:00' and date<='2010-10-1:0:00:00',再看这个条件的话,也许就会有些明白, 那就是'2010-10-1 0:00:00' 之后的数据例如('2010-10-1:08:25:0

  • SqlServer将查询结果转换为XML和JSON

    很久之前用到的,现在整理在这,里面一些代码来源于网上,不过有些bug已被我修改了. 1.查询结果转XML DECLARE @ParameterSQL NVARCHAR(MAX)='SELECT * FROM table'; DECLARE @SQL NVARCHAR(MAX) DECLARE @XMLString VARCHAR(MAX) DECLARE @XML XML DECLARE @Paramlist NVARCHAR(1000) SET @Paramlist = N'@XML XML

  • SQL Server三种锁定模式的知识讲解

    sql server 锁定模式有三种:共享( S锁),更新(U锁),排他(X锁): S锁是共享锁,如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享锁,不能加排他锁.获准共享锁的事务只能读数据,不能修改数据. 个人理解为,对数据A的操作就只能是SELECT ,(联想下,S锁,不就是Select的首字母么),其他事务对A数据的UPDATE ,DELETE都不能进行: U锁是更新锁.用于可更新的资源中.防止当多个会话在读取.锁定以及随后可能进行的资源更新时发生常见形式的死锁. 原理解释: 更

  • sqlserver:查询锁住sql以及解锁方法

    查看被锁表语句 --查看被锁表: SELECT request_session_id spid, OBJECT_NAME( resource_associated_entity_id ) tableName FROM sys.dm_tran_locks WHERE resource_type = 'OBJECT' ORDER BY request_session_id ASC --spid 锁表进程 --tableName 被锁表名 --根据锁表进程查询相应进程互锁的SQL语句 DBCC INP

  • SQL Server 2008中SQL查询语句字段值不区分大小写的问题解决

    一.问题 最近在一个系统的对外接口中,经过测试人员测试,发现登录接口中输入的用户名不区分大小写,经过排查找原因,原来是由于数据库忽略了大小写. 二.解决办法 Select * from Base_UserInfo where User_Account='Admin' COLLATE Chinese_PRC_CS_AI; 1.数据库设置排序规则,如下图所示: 2.SQL语句设置,如下: alter database 你的数据库名 COLLATE Chinese_PRC_CS_AI; 3.字段级设置

  • 使用SQL语句查询MySQL,SQLServer,Oracle所有数据库名和表名,字段名

    MySQL中查询所有数据库名和表名 查询所有数据库 show databases; 查询指定数据库中所有表名 select table_name from information_schema.tables where table_schema='database_name' and table_type='base table'; 查询指定表中的所有字段名 select column_name from information_schema.columns where table_schema

  • SQL Server视图的讲解

    在初期的工作中,要做一个系统登录验证,翻阅同事做的登录验证,发现同事们做用户名验证时,查的结果集来自一个视图,之前也弄过视图,但很少去仔细看过有关方面的详细知识,于是特意百度谷歌了一下,总结如下知识: 视图,是基于SQL语句的结果集的可视化表.从用户角度来看,一个视图是从一个特定的角度来查看数据库中的数据.从数据库系统内部来看,一个视图是由SELECT语句组成的查询定义的虚拟表.从数据库系统内部来看,视图是由一张或多张表中的数据组成的,从数据库系统外部来看,视图就如同一张表一样,对表能够进行的一

  • Sql Server的一些知识点定义总结

    数据库完整性:是指数据库中数据在逻辑上的一致性.正确性.有效性和相容性 实体完整性(Entity Integrity 行完整性):实体完整性指表中行的完整性.主要用于保证操作的数据(记录)非空.唯一且不重复.即实体完整性要求每个关系(表)有且仅有一个主键,每一个主键值必须唯一,而且不允许为"空"(NULL)或重复. 域完整性(Domain Integrity 列完整性):是指数据库表中的列必须满足某种特定的数据类型或约束.其中约束又包括取值范围.精度等规定.表中的CHECK.FOREI

  • SQL Server游标的介绍与使用

    游标概念 数据库操作中我们常常会遇到这样情况,即从某一结果集中逐一地读取一条记录.那么如何解决这种问题呢?游标为我们提供了一种极为优秀的解决方案. 游标(cursor)是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果. 每个游标区都有一个名字.用户可以用SQL语句逐一从游标中获取记录,并赋给主变量,交由主语言进一步处理.游标提供了一种对从表中检索出的数据进行操作的灵活手段,就本质而言,游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制. 游标总是与一条SQL 查询语句

  • SQL Server 2008数据库分布式查询知识

    在接触公司一个系统时,公司使用的是SQL Server 2008数据库,里面涉及到了多个数据库之间的查询,而且数据库是分布式的,数据库分布在多台服务器之间,并且各个数据库各尽其责,负责存放不同模块功能的数据.这里面就要涉及到了数据库的分布式查询. 补充一下分布式查询的知识: 分布式查询从多异类数据源中访问数据.这些数据源可以存储在同一台计算机或不同的计算机上.Microsoft SQL Server 通过使用 OLE DB 来支持分布式查询. SQL Server 用户可以使用分布式查询访问以下

  • SqlServer 查询时日期格式化语句

    SQL Server中文版的默认的日期字段datetime格式是yyyy-mm-dd Thh:mm:ss.mmm 例如: select getdate() 2004-09-12 11:06:08.177 整理了一下SQL Server里面可能经常会用到的日期格式转换方法: 举例如下: select CONVERT(varchar, getdate(), 120 ) 2004-09-12 11:06:08 select replace(replace(replace(CONVERT(varchar

随机推荐