SQLServer查询所有数据库名和表名及表结构等代码示例

 更新时间:2023年11月28日 08:23:55   作者:程序大白兔  
SQL Server是一种关系型数据库管理系统,可以使用SQL语言来查询表结构,这篇文章主要给大家介绍了关于SQLServer查询所有数据库名和表名及表结构等的相关资料,文中通过代码示例介绍的非常详细,需要的朋友可以参考下

1、查询所有数据库名

SELECT name FROM sysdatabases

2、查询当前数据库中所有表名,不用指定数据库,选中某数据库直接执行SQL就好

-- 'U':所有用户表名; 'S':所有系统表名;'V':所有视图表名
SELECT name FROM sysobjects WHERE xtype='U' OR xtype='S' OR xtype='V'

3、获取指定表的主键字段

SELECT name AS 'PK' FROM SysColumns WHERE id=Object_Id('Table') AND colid=(SELECT TOP 1 keyno FROM sysindexkeys WHERE id=Object_Id('Table'))

4、查询指定表中的所有字段名

SELECT name FROM SysColumns WHERE id=Object_Id('Table_2') 

5、查询指定表中的所有字段名和字段类型

SELECT sc.name,st.name FROM SysColumns sc,systypes st WHERE sc.xtype=st.xtype AND sc.id in(SELECT id from sysobjects WHERE xtype='U' AND name='Table')

6、获取表部分数据结构

	SELECT   c.name, 
			 c.user_type_id, 
			 c.max_length,
			 c.is_nullable,
			 remark = ex.value
			 FROM sys.columns c 
			 LEFT OUTER JOIN sys.extended_properties ex ON ex.major_id = c.object_id AND ex.minor_id = c.column_id AND ex.name = 'MS_Description'
			 WHERE
			 OBJECTPROPERTY(c.object_id, 'IsMsShipped')=0 
			 AND OBJECT_NAME(c.object_id) = 'Table'
			 ORDER
			 BY OBJECT_NAME(c.object_id), c.column_id

7、SqlServer2000获取表结构详细信息

SELECT  TBL.name AS '表名',
                              CONVERT(NVARCHAR(500),DSPTN.value) AS '表说明',
                               COL.column_id AS '字段序号',
                               COL.name AS '字段名',
                               CASE WHEN COL.is_identity = 1 THEN 'YES' ELSE 'NO' END AS '标识',
                               CASE WHEN PK.object_id IS NOT NULL AND PK.index_id = COL.column_id THEN 'YES' ELSE 'N0' END AS '主键',
                               TY.name AS '类型',
                               CAST(COL.max_length AS VARCHAR) AS '占用字节数',
                               CAST(COL.precision AS VARCHAR) AS '长度',
                               CAST(COL.scale AS VARCHAR) AS '小数位数',
                               CASE WHEN COL.is_nullable = 1 THEN 'YES' ELSE 'NO' END AS '允许空',
                               ISNULL(CONVERT(NVARCHAR(500), DFTCNST.definition), '') AS '默认值',
                               CONVERT(NVARCHAR(500),SCOLMS.value) AS '字段说明'
                               FROM sys.tables TBL
                               INNER JOIN sys.columns COL ON TBL.object_id = COL.object_id
                               LEFT JOIN sys.identity_columns IDCOL ON TBL.object_id = IDCOL.object_id AND COL.column_id = IDCOL.column_id
                               LEFT JOIN sys.types TY ON COL.user_type_id = TY.user_type_id
                               LEFT JOIN (
                               SELECT 
                                   name, 
                                   object_id, 
                                   index_id 
                               FROM sys.indexes 
                               WHERE is_primary_key = 1
                                     ) PK ON TBL.object_id = PK.object_id
                                    LEFT JOIN sys.default_constraints DFTCNST ON COL.default_object_id = DFTCNST.object_id
                                    LEFT JOIN sys.extended_properties SCOLMS ON COL.object_id = SCOLMS.major_id AND 
                                    COL.column_id = SCOLMS.minor_id AND 
                                    SCOLMS.name = 'MS_Description'
                                    LEFT JOIN sys.extended_properties DSPTN ON TBL.object_id = DSPTN.major_id AND DSPTN.minor_id = 0
                                    AND DSPTN.name = 'MS_Description'
                                    WHERE TBL.name = 'table'
                                    ORDER BY TBL.name, COL.column_id

8、SqlServer2000以上获取表结构详细信息

SELECT  TBL.name AS '表名',
                              CONVERT(NVARCHAR(500),DSPTN.value) AS '表说明',
                               COL.column_id AS '序号',
                               COL.name AS '字段名',
                               CASE WHEN COL.is_identity = 1 THEN 'YES' ELSE 'NO' END AS '标识',
                               CASE WHEN PK.object_id IS NOT NULL AND PK.index_id = COL.column_id THEN 'YES' ELSE 'N0' END AS '主键',
                               TY.name AS '类型',
                               CAST(COL.max_length AS VARCHAR) AS '占用字节数',
                               CAST(COL.precision AS VARCHAR) AS '长度',
                               CAST(COL.scale AS VARCHAR) AS '小数位数',
                               CASE WHEN COL.is_nullable = 1 THEN 'YES' ELSE 'NO' END AS '允许空',
                               ISNULL(CONVERT(NVARCHAR(500), DFTCNST.definition), '') AS '默认值',
                               CONVERT(NVARCHAR(500),SCOLMS.value) AS '字段说明'
                               FROM sys.tables TBL
                               INNER JOIN sys.columns COL ON TBL.object_id = COL.object_id
                               LEFT JOIN sys.identity_columns IDCOL ON TBL.object_id = IDCOL.object_id AND COL.column_id = IDCOL.column_id
                               LEFT JOIN sys.types TY ON COL.user_type_id = TY.user_type_id
                               LEFT JOIN (
                               SELECT 
                                   name, 
                                   object_id, 
                                   index_id 
                               FROM sys.indexes 
                               WHERE is_primary_key = 1
                                     ) PK ON TBL.object_id = PK.object_id
                                    LEFT JOIN sys.default_constraints DFTCNST ON COL.default_object_id = DFTCNST.object_id
                                    LEFT JOIN sys.extended_properties SCOLMS ON COL.object_id = SCOLMS.major_id AND 
                                    COL.column_id = SCOLMS.minor_id AND 
                                    SCOLMS.name = 'MS_Description'
                                    LEFT JOIN sys.extended_properties DSPTN ON TBL.object_id = DSPTN.major_id AND DSPTN.minor_id = 0
                                    AND DSPTN.name = 'MS_Description'
                                    WHERE TBL.name = 'table'
                                    ORDER BY TBL.name, COL.column_id 

总结 

到此这篇关于SQLServer查询所有数据库名和表名及表结构等的文章就介绍到这了,更多相关SQLServer查询所有表名表结构内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SQL Server分隔函数实例详解

    SQL Server分隔函数实例详解

    这篇文章主要介绍了SQL Server分隔函数的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • SQLServer 数据导入导出的几种方法小结

    SQLServer 数据导入导出的几种方法小结

    在涉及到SQL Server编程或是管理时一定会用到数据的导入与导出, 导入导出的方法有多种,结合我在做项目时的经历做一下汇总
    2010-06-06
  • 使用SQL语句创建触发器的实例

    使用SQL语句创建触发器的实例

    触发器 是一种特殊类型的存储过程,它不同于我们前面介绍过的存储过程。存储过程可以通过语句直接调用,而 触发器主要是通过事件进行触发而被执行的,这篇文章主要介绍了使用SQL语句创建触发器的实例,需要的朋友可以参考下
    2023-06-06
  • SQL Server 2005数据库还原错误的经典解决方案

    SQL Server 2005数据库还原错误的经典解决方案

    本文主要介绍了一个SQL Server 2005数据库还原过程中的错误的解决方案,需要的朋友可以参考下
    2015-08-08
  • SQL Server 数据页缓冲区的内存瓶颈分析

    SQL Server 数据页缓冲区的内存瓶颈分析

    数据页缓存是SQL Server的内存使用主要的方面,也是占用量最大的部分。在一个稳定的DB Server上,这部分内存使用会相对较稳定
    2012-08-08
  • 根据日期知道当天是星期几的手动计算方法

    根据日期知道当天是星期几的手动计算方法

    在网上看到一篇文章,非常有意思,根据日期知道当天是星期几的方法,来看看吧。
    2010-03-03
  • sql where 1=1的优缺点分析

    sql where 1=1的优缺点分析

    where 1=1; 这个条件始终为True,在不定数量查询条件情况下,1=1可以很方便的规范语句
    2013-04-04
  • SQL语句查询数据库中重复记录的个数

    SQL语句查询数据库中重复记录的个数

    一个sql语句:一个表test有四个字段id,a,b,c,如果表中的记录有三个字段a,b,c都相等,则说明这条记录是相同的,求相同的记录的个数 。
    2009-11-11
  • SQL Server中row_number函数的常见用法示例详解

    SQL Server中row_number函数的常见用法示例详解

    这篇文章主要给大家介绍了关于SQL Server中row_number函数的常见用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • 解决SQL Server无法启动的小技巧

    解决SQL Server无法启动的小技巧

    SQLServer无法正确启动是由于Executive服务无法登录引起的,下面就教您一个处理SQL Server无法启动的方法,需要的朋友可以参考下
    2015-08-08

最新评论