Sql语句:显示Sql Server中所有表中的信息

显示某个Sql Server某个数据库中所有表或视图的信息
sql server 2000 与 2005 不同 差别在于 红色字部分
以下语句为获取所有表信息,替换绿色黑体字"U"为"V"为获取所有视图信息。

Sql Server 2000 版本

SELECT Sysobjects.name AS TABLE_NAME, syscolumns.Id, syscolumns.name AS COLUMN_NAME,
systypes.name AS DATA_TYPE, syscolumns.length as CHARACTER_MAXIMUM_LENGTH,
sysproperties.[value] AS COLUMN_DESCRIPTION,  syscomments.text as
COLUMN_DEFAULT,syscolumns.isnullable as IS_NULLABLE FROM syscolumns
INNER JOIN systypes
    ON syscolumns.xtype = systypes.xtype
    LEFT JOIN sysobjects ON syscolumns.id = sysobjects.id
   LEFT OUTER JOIN sysproperties ON
   ( sysproperties.smallid = syscolumns.colid
     AND sysproperties.id = syscolumns.id)
   LEFT OUTER JOIN syscomments ON syscolumns.cdefault = syscomments.id
   WHERE syscolumns.id IN 
    (SELECT id FROM SYSOBJECTS WHERE xtype = 'U') AND (systypes.name <> 'sysname')
    ORDER BY syscolumns.colid

Sql Server 2005版本

SELECT Sysobjects.name AS TABLE_NAME, syscolumns.Id, syscolumns.name AS COLUMN_NAME,
systypes.name AS DATA_TYPE, syscolumns.length as CHARACTER_MAXIMUM_LENGTH,
sys.extended_properties.[value] AS COLUMN_DESCRIPTION,  syscomments.text as
COLUMN_DEFAULT,syscolumns.isnullable as IS_NULLABLE FROM syscolumns
INNER JOIN systypes
    ON syscolumns.xtype = systypes.xtype
    LEFT JOIN sysobjects ON syscolumns.id = sysobjects.id
   LEFT OUTER JOIN sys.extended_properties ON
   ( sys.extended_properties.minor_id = syscolumns.colid
     AND sys.extended_properties.major_id = syscolumns.id)
   LEFT OUTER JOIN syscomments ON syscolumns.cdefault = syscomments.id
   WHERE syscolumns.id IN 
    (SELECT id FROM SYSOBJECTS WHERE xtype = 'U') AND (systypes.name <> 'sysname')
    ORDER BY syscolumns.colid

参考:http://www.devx.com/tips/Tip/31235?type=kbArticle&trk=MSCP

时间: 2024-10-27 23:27:40

Sql语句:显示Sql Server中所有表中的信息的相关文章

数据存储-sql server在同一表中筛选出两次刷卡记录时间大于等于40分钟的员工数据

问题描述 sql server在同一表中筛选出两次刷卡记录时间大于等于40分钟的员工数据 刷卡进出数据存储在同一表中,姓名有重复的,一个人可能刷了2次,要求选出在时间段2014-12-28 11:00:00到2014-12-28 13:00:00内两次刷卡记录时间间隔大于等于40分钟的员工 logtime (时间 )logcard (卡号 )logid () logname(姓名) logbm (部门) 解决方案 ```select * from 同一表 a where logtime betw

sql service-如何获得LDAP的目录(部门信息),并插入SQL SERVER的部门表中?请贴上相关代码

问题描述 如何获得LDAP的目录(部门信息),并插入SQL SERVER的部门表中?请贴上相关代码 已经连接上了,但是不知道怎么获取里面的数据,比如部门信息和用户信息,都不知道怎么获取,求大神帮帮忙,非常感谢

PLSQL developer的SQL语句显示行数

呵呵,相信很多刚刚接触oracle数据库的童鞋和烂泥一样,对于PLSQL developer都不会默认的. 我们今天就来介绍一下,PLSQL developer如何让SQL语句显示行数.那么你需要按如下操作即可. "工具"-"首选项"-"窗口类型"-"SQL窗口"-"显示隔条(行号)",如下图:

sql-怎么写Sql语句能把上边的数据库表查询出下边表样式的结果

问题描述 怎么写Sql语句能把上边的数据库表查询出下边表样式的结果 解决方案 这就叫做透视变换 自己谷歌下 解决方案二: http://www.cnblogs.com/luluping/archive/2012/07/26/2610705.html 解决方案三: http://www.cnblogs.com/cpcpc/archive/2013/04/08/3009021.html,这个就是列转行,看下这个.

sql中LEFT JOIN拆分成多条SQL语句 提高sql性能

本文讲解如何把一条带有一个或多个left join或right join的sql语句拆分成多条sql语句.MySQL进行连表查询效率是很低的,特别是数据很大,而且并发量很高的情况,索引都无法解决问题,最好的办法就是把sql语句拆分成多条单表查询的sql. 我们公司电商网站现在要做网站服务化,用java做中间件,PHP调用java接口获取数据,数据表也进行了拆分,分库,要求不使用连表查询,有连表查询的sql语句想办法拆分多条sql语句,然后统一使用java接口. 这样做的目的一是为了网站服务化做调

sql语句实现四种九九乘法表_MsSql

下面用while 和 if 条件写的SQL语句的四种九九乘法表  sql语句实现--x 左下角九九乘法表 DECLARE @I INT ,@J INT,@S VARCHAR() SET @I= WHILE @I< BEGIN SET @J= SET @S='' WHILE @J<=@I BEGIN SET @S=@S+CAST(@J AS CHAR())+'*'+CAST(@I AS CHAR())+'='+CAST((@I*@J)AS CHAR()) SET @J=@J+ END PRINT

SQL语句实现SQL Server 2000及Sql Server 2005日志收缩(批量)_MsSql

复制代码 代码如下: DECLARE @name VARCHAR(25) DECLARE @SQL VARCHAR(1000) DECLARE @logid INT DECLARE sysdatabase_name CURSOR FOR SELECT name FROM master.dbo.sysdatabases OPEN sysdatabase_name FETCH NEXT FROM sysdatabase_name INTO @name WHILE @@FETCH_STATUS = 0

[20130628]sql语句显示不全的问题.txt

[20130628]sql语句显示不全的问题.txt 今天在优化一条sql语句的时候遇到一个怪问题,sql语句显示有问题,仔细查看才想起来以前看itpub的一本书上讲过,老杨遇到的问题,语句里面仅仅含有0d(十六进制)编码,自己为了加深印象,做一个测试例子: SQL> @verBANNER--------------------------------------------------------------------------------Oracle Database 11g Enter

sql语句实现四种九九乘法表

下面用while 和 if 条件写的SQL语句的四种九九乘法表 sql语句实现--x 左下角九九乘法表 DECLARE @I INT ,@J INT,@S VARCHAR() SET @I= WHILE @I< BEGIN SET @J= SET @S='' WHILE @J<=@I BEGIN SET @S=@S+CAST(@J AS CHAR())+'*'+CAST(@I AS CHAR())+'='+CAST((@I*@J)AS CHAR()) SET @J=@J+ END PRINT

SQL语句实现SQL Server 2000及Sql Server 2005日志收缩(批量)

复制代码 代码如下:DECLARE @name VARCHAR(25) DECLARE @SQL VARCHAR(1000) DECLARE @logid INT DECLARE sysdatabase_name CURSOR FOR SELECT name FROM master.dbo.sysdatabases OPEN sysdatabase_name FETCH NEXT FROM sysdatabase_name INTO @name WHILE @@FETCH_STATUS = 0