首页 数据库 SqlServer表结构查询

SqlServer表结构查询

Mysql数据库查询表结构很方便,用客户端(SQLyog)可以直接复制出需要的表结构,据说可以用简单的命令查询表结构 desc 表结构

Sqlserver导出表结构就很坑爹了,首先呢客户端不支持,表设计页面虽说可以复制表结构但是不包含字段注释,想想这种场景应该很常见不可能没有解决方案的,于是在网上发现了一段脚本,稍加调整就可以查询出需要的表结构

脚本及查询示例

SELECT  表名 = CASE WHEN a.colorder = 1 THEN d.name ELSE '' END ,
        字段说明 = ISNULL(g.[value], '') ,
        字段名 = a.name ,
        类型 = CASE WHEN b.name IN ( 'varchar', 'nvarchar' )
                  THEN b.name + '('
                       + CAST(COLUMNPROPERTY(a.id, a.name, 'PRECISION') AS VARCHAR(4))
                       + ')'
                  WHEN b.name = 'decimal'
                  THEN b.name + '('
                       + CAST(COLUMNPROPERTY(a.id, a.name, 'PRECISION') AS VARCHAR(4))
                       + ','
                       + CAST(COLUMNPROPERTY(a.id, a.name, 'Scale') AS VARCHAR(4))
                       + ')'
                  ELSE b.name
             END
FROM syscolumns a    -- 列名
    LEFT JOIN systypes b ON a.xusertype = 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 d.name = 'SCM_Module'    --可修改表名
ORDER BY a.id , a.colorder

查询比较全面的:

 --快速查看表结构(比较全面的)
SELECT  CASE WHEN col.colorder = 1 THEN obj.name
                  ELSE ''
             END AS 表名,
        col.colorder AS 序号 ,
        col.name AS 列名 ,
        ISNULL(ep.[value], '') AS 列说明 ,
        t.name AS 数据类型 ,
        col.length AS 长度 ,
        ISNULL(COLUMNPROPERTY(col.id, col.name, 'Scale'), 0) AS 小数位数 ,
        CASE WHEN COLUMNPROPERTY(col.id, col.name, 'IsIdentity') = 1 THEN '√'
             ELSE ''
        END AS 标识 ,
        CASE WHEN EXISTS ( SELECT   1
                           FROM     dbo.sysindexes si
                                    INNER JOIN dbo.sysindexkeys sik ON si.id = sik.id
                                                              AND si.indid = sik.indid
                                    INNER JOIN dbo.syscolumns sc ON sc.id = sik.id
                                                              AND sc.colid = sik.colid
                                    INNER JOIN dbo.sysobjects so ON so.name = si.name
                                                              AND so.xtype = 'PK'
                           WHERE    sc.id = col.id
                                    AND sc.colid = col.colid ) THEN '√'
             ELSE ''
        END AS 主键 ,
        CASE WHEN col.isnullable = 1 THEN '√'
             ELSE ''
        END AS 允许空 ,
        ISNULL(comm.text, '') AS 默认值
FROM    dbo.syscolumns col
        LEFT  JOIN dbo.systypes t ON col.xtype = t.xusertype
        inner JOIN dbo.sysobjects obj ON col.id = obj.id
                                         AND obj.xtype = 'U'
                                         AND obj.status >= 0
        LEFT  JOIN dbo.syscomments comm ON col.cdefault = comm.id
        LEFT  JOIN sys.extended_properties ep ON col.id = ep.major_id
                                                      AND col.colid = ep.minor_id
                                                      AND ep.name = 'MS_Description'
        LEFT  JOIN sys.extended_properties epTwo ON obj.id = epTwo.major_id
                                                         AND epTwo.minor_id = 0
                                                         AND epTwo.name = 'MS_Description'
WHERE   obj.name = 'SCM_Module'--表名
ORDER BY col.colorder ;

站心网

Mysql数据库查询表结构很方便,用客户端(SQLyog)可以直接复制出需要的表结构,据说可以用简单的命令查询..

为您推荐

2025年常见SQLServer数据库面试题

分享一些 2025年常见的 SQL Server 数据库面试题,涵盖基础知识、性能优化、高级查询、管理与运维等多个方面,适用于开发、DBA 及数据分析相关岗位的面试。1. SQL Server 的基本架构是什么?答案:SQL Server 的架构..

ASP.NET 使用Entity Framework (EF) 创建迁移修改SQLite数据库表结构

在 ASP.NET 中,使用 Entity Framework (EF) 创建并连接 SQLite 数据库是一种轻量级、高效的数据库管理方式。以下是详细步骤:安装必要的 NuGet 包安装EntityFrameworkCore.Sqlite包:Install-Package Microsoft.Ent..

C#中结构体和byte数组之间的转换

前言在使用C#写通信的程序时,数据只能以byte数组的进行传输,处理起来比较麻烦不说,如果与非托管语言的API交互时,很多的都是传送结构体,在C/C++语言中可以很方便的把一个char[]数组或者内存空间转换为一个结构体..

SqlServer2014数据库下载和解析

Microsoft SQL Server 2014已经可以下载了! Microsoft SQL Server 2014官方下载地址:http://technet.microsoft.com/zh-cn/evalcenter/dn205290.aspx Microsoft SQL Server 2014的优势 SQL Server 2014 跨所有主要..

SqlServer数据库自增标识种子当前值设置

在日常的sql server开发中,经常会用到Identity类型的标识列作为一个表结构的自增长编号。每次insert数据的时候,id自动会增长,如果插入一条数据后把该条数据删除了,那么还是会继续增长,比如当前设置的自增是1,..

C/C++语言中socket IP地址的结构体

struct in_addr结构体struct in_addr结构体是C/C++ socket编程中比较常用的结构体,主要是保存IP地址的信息,查看源码可以发现,这个结构体实际上是一个联合体,可以多种形式操作这个结构体。struct in_addr {union ..

SqlServer临时表和游标循环遍历数据表方法实例

最近有个需求,有包含用户Id的表Users,包含通话记录的表MobileCalls,现在要查询表Users中某些用户联系过的通话次数最多的5个人的手机号结果集。所以考虑了一下要使用临时表和游标。用游标遍历表Users,根据表Users..

SQLServer数据库基础面试题

当面试与SQL Server数据库相关的职位时,通常会涉及到一些基本的SQL Server数据库知识。以下是一些可能会在面试中遇到的SQL Server数据库面试题及其答案:1. 什么是SQL Server?答案: SQL Server是由Microsoft开发..

SQLServer 锁表查询命令

在 SQL Server 中,你可以使用以下命令来查询当前会话中的锁信息:SELECTrequest_session_id AS SessionID,resource_type AS LockType,resource_database_id AS DatabaseID,resource_associated_entity_id AS Object..

SQLServer nolock查询防止锁表

在 SQL Server 中,可以使用 NOLOCK 提示来执行一个不会阻塞其他查询的“脏读”查询。这意味着你可以在其他事务正在修改数据的同时读取数据,但需要注意可能会读取到未提交的数据或者被其他事务修改的数据..

SqlServer分页查询示例

在 SQL Server 中进行分页查询,你可以使用 OFFSET 和 FETCH 子句。这两个子句可以在 ORDER BY 子句之后使用,以限制查询结果的行数和起始位置。以下是一个示例的分页查询:SELECT * FROM your_tableORDER BY your_c..

SQLServer修改服务端口号

最近查看服务器日志发现了很多数据库登陆失败的记录。可能是之前为了方便本地连接数据库在防火墙打开了1433端口,现在有人尝试暴力破解,于是想把默认端口改了。SQLServer 默认端口号为 1433,但很多时候为了安全起..

SQLServer分页查询语句

在 SQL Server 中实现分页查询,可以使用 OFFSET 和 FETCH 子句。以下是一个示例:SELECT * FROM YourTableORDER BY YourColumn -- 按照某个列排序OFFSET 10 ROWS-- 跳过前10行FETCH NEXT 10 ROWS ONLY; -- 获取接下..

SQLServer DATEDIFF用法和性能

SQL Server 中的 DATEDIFF 函数用于计算两个日期之间的差值。它的语法如下:DATEDIFF(interval, startdate, enddate)其中,interval 参数表示要计算的时间间隔单位,startdate 表示时间间隔的开始日期,enddate 表示..

SQLServer如何查询死锁和防止死锁

死锁是在数据库系统中两个或多个事务互相等待对方释放资源而无法继续执行的情况。在 SQL Server 中,可以使用一些查询来检测死锁,并且可以采取一些措施来防止死锁的发生。SQLServer查询死锁语句:查看当前死锁情况..

MySQL和SQLServer哪个性能更好?

MySQL 和 Microsoft SQL Server 是两种不同的关系型数据库管理系统(RDBMS),它们在性能方面的比较并不简单,因为性能取决于多个因素,包括硬件、配置、查询优化、索引设计等。下面是一些一般性的观点,但请注意这..

.NET EntityFramework Core 8 搭配SQLServer哪个版本最好?

.NET Entity Framework Core 8 搭配 SQL Server 哪个版本最好,取决于您的具体需求和环境。以下是一些建议:对于大多数应用程序:SQL Server 2019: 这可能是最流行的选择,因为它具有良好的性能、可靠性和可扩展性。..

SQLServer2019关闭密码自动过期时间设置

最近把SQLServer数据库升级到了2019,某一天突然所有站点都无法访问了,查看了日志发现是数据库连接失败了。Path: /Contents/1276, Endpoint: DotNetCoreWeb.Areas.Web.Controllers.ContentsController.IndexAsync (..

MySQL SQLServer Oracle数据库的区别

MySQL、SQL Server和Oracle数据库在开源性、性能以及功能方面有所区别。MySQL是适用于希望降低成本并需要快速响应时间的中小型项目的好选择。SQL Server适合需要在Windows环境中获得企业级支持的用户。而Oracle更适..

海洋cms生成静态的目录结构调整教程

示例1:内容页路径:[backcolor=yellowgreen]/subtypeEnname/id/[/backcolor]后台第一种目录结构[backcolor=yellowgreen]/typeEnname/id/[/backcolor]在都是顶级分类时生成的是[backcolor=yellowgreen]/dongzuo/1024..

发表回复

返回顶部