`
pavel
  • 浏览: 928302 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

mssql查出数据库表结构

阅读更多

SELECT
    TableName=CASE WHEN C.column_id=1 THEN O.name ELSE N'' END,
    TableDesc=ISNULL(CASE WHEN C.column_id=1 THEN PTB.[value] END,N''),
    Column_id=C.column_id,
    ColumnName=C.name,
    PrimaryKey=ISNULL(IDX.PrimaryKey,N''),
    [IDENTITY]=CASE WHEN C.is_identity=1 THEN N'√'ELSE N'' END,
    Computed=CASE WHEN C.is_computed=1 THEN N'√'ELSE N'' END,
    Type=T.name,
    Length=C.max_length,
    Precision=C.precision,
    Scale=C.scale,
    NullAble=CASE WHEN C.is_nullable=1 THEN N'√'ELSE N'' END,
    [Default]=ISNULL(D.definition,N''),
    ColumnDesc=ISNULL(PFD.[value],N''),
    IndexName=ISNULL(IDX.IndexName,N''),
    IndexSort=ISNULL(IDX.Sort,N''),
    Create_Date=O.Create_Date,
    Modify_Date=O.Modify_date
FROM sys.columns C
    INNER JOIN sys.objects O
        ON C.[object_id]=O.[object_id]
            AND O.type='U'
            AND O.is_ms_shipped=0
    INNER JOIN sys.types T
        ON C.user_type_id=T.user_type_id
    LEFT JOIN sys.default_constraints D
        ON C.[object_id]=D.parent_object_id
            AND C.column_id=D.parent_column_id
            AND C.default_object_id=D.[object_id]
    LEFT JOIN sys.extended_properties PFD
        ON PFD.class=1
            AND C.[object_id]=PFD.major_id
            AND C.column_id=PFD.minor_id
--             AND PFD.name='Caption'  -- 字段说明对应的描述名称(一个字段可以添加多个不同name的描述)
    LEFT JOIN sys.extended_properties PTB
        ON PTB.class=1
            AND PTB.minor_id=0
            AND C.[object_id]=PTB.major_id
--             AND PFD.name='Caption'  -- 表说明对应的描述名称(一个表可以添加多个不同name的描述)
    LEFT JOIN                       -- 索引及主键信息
    (
        SELECT
            IDXC.[object_id],
            IDXC.column_id,
            Sort=CASE INDEXKEY_PROPERTY(IDXC.[object_id],IDXC.index_id,IDXC.index_column_id,'IsDescending')
                WHEN 1 THEN 'DESC' WHEN 0 THEN 'ASC' ELSE '' END,
            PrimaryKey=CASE WHEN IDX.is_primary_key=1 THEN N'√'ELSE N'' END,
            IndexName=IDX.Name
        FROM sys.indexes IDX
        INNER JOIN sys.index_columns IDXC
            ON IDX.[object_id]=IDXC.[object_id]
                AND IDX.index_id=IDXC.index_id
        LEFT JOIN sys.key_constraints KC
            ON IDX.[object_id]=KC.[parent_object_id]
                AND IDX.index_id=KC.unique_index_id
        INNER JOIN  -- 对于一个列包含多个索引的情况,只显示第1个索引信息
        (
            SELECT [object_id], Column_id, index_id=MIN(index_id)
            FROM sys.index_columns
            GROUP BY [object_id], Column_id
        ) IDXCUQ
            ON IDXC.[object_id]=IDXCUQ.[object_id]
                AND IDXC.Column_id=IDXCUQ.Column_id
                AND IDXC.index_id=IDXCUQ.index_id
    ) IDX
        ON C.[object_id]=IDX.[object_id]
            AND C.column_id=IDX.column_id
-- WHERE O.name=N'要查询的表'       -- 如果只查询指定表,加上此条件
ORDER BY O.name,C.column_id

分享到:
评论

相关推荐

    Mysql数据库备份(一)-数据库备份和表备份.docx

    * table1 和 table2 参数表示的是需要备份的数据库表的名称,假如为空则表示需要备份整个数据库; * BackupName.sql 表示的是将数据库备份到指定的这个以后缀米国.sql 的文件中,这个文件的前面可以执行一个详细的...

    MySQL数据库(容易).pdf

    MySQL数据库是互联网领域广泛应用的关系型数据库管理系统,它以其开源、免费和高效的特点深受开发者的喜爱。以下是对试卷中涉及的一些MySQL知识点的详细解释: 1. 变量默认值:在MySQL中,如果在存储过程中定义变量...

    mysql 多表联接查询练习

    #### 二、数据库表结构及数据 为了更好地理解和实践多表联接查询,这里构建了五个表:Emp、Dept、Profit、Salgrade 和 Sallevel,并填充了一些示例数据。 1. **Emp表**:存储员工信息。 - `empno`:员工编号。 -...

    从MySQL到Redis的简单数据库迁移方法

    我们希望在Redis中使用哈希表(Hash)结构来存储这些数据,键为`events_all_time`,`action`作为哈希中的键,`count`作为对应的值。为此,我们可以编写一个SQL脚本`events_to_redis.sql`,生成Redis的命令格式: ``...

    中国城市三级级联表sql文件 mysql

    综上所述,`中国城市三级级联表sql文件 mysql`这个主题涉及了数据库设计中的级联表概念,MySQL的使用,以及可能的不同设计方案。这两个SQL文件为我们提供了实现城市级联功能的实例,可以结合实际需求和个人偏好选择...

    JDBC查询返回数据集一直为空,明明数据库(MySQL)有数据的解决办法

    同样,也可以查看表结构,检查每个字段的编码。 2. 修改数据库编码:如果发现数据库或表的编码与项目编码不一致,可以考虑修改数据库的编码格式。这通常涉及到以下几个步骤: - 备份数据:在更改编码之前,确保先...

    2016全国省市县区 街道村庄 mysql 坐标不太准确

    在压缩包内的“Region.sql”文件,很可能是包含创建数据库表结构和导入数据的SQL脚本。通过运行这个脚本,可以将数据导入到本地的MySQL数据库中,便于进一步的分析或应用。在导入前,应先创建对应的数据库和表结构,...

    将表中数据导出为insert sql 语句

    根据给定的文件信息,我们将深入探讨如何将数据库表中的数据导出为SQL INSERT语句。这种方法在数据迁移、备份或需要将数据插入到另一个数据库的场景中非常有用。下面,我们将详细介绍这一过程的关键步骤和技术细节。...

    95 MySQL是如何根据成本优化选择执行计划的?(中).pdf

    MySQL数据库系统中,查询优化器是负责生成和选择执行计划的关键组件,其工作原理是基于成本的优化。执行计划决定了如何以最快的速度从数据库中获取数据,是整个数据库性能优化中至关重要的一环。在MySQL中,执行计划...

    MySQL查询全部数据集结果不一致问题解决方案

    在MySQL数据库中,查询数据的一致性至关重要,但有时可能会遇到一些奇怪的问题,例如在本例中,使用`SELECT *`和`SELECT`指定字段查询同一个表时,得到的结果记录数不一致。这种情况通常暗示着数据库可能存在某种...

    MySQL通过自定义函数实现递归查询父级ID或者子级ID

    这种方法虽然效率可能不如其他数据库系统中的递归查询语法,但对于有限的层级深度和不支持递归查询的MySQL版本,这是一种有效的解决方案。需要注意的是,如果层级关系非常复杂,大量的递归可能会导致性能问题,因此...

    数据库复习材料.。。。。。。。。。

    3. **逻辑独立性**:当基本表结构发生变化时,通过修改视图定义,用户程序无需调整。 4. **数据安全保护**:通过视图限制用户只能看到特定的数据子集。 5. **更清晰地表达查询**:视图可以封装复杂的查询逻辑。 ###...

    DisplayTag1.2 扩展(自定义分页、排序、导出、页面导航)

    DisplayTag是个很好的jsp标签,...2.数据库表结构 goods(id int,name varchar(50)) 3.只在jboss5.1内测试通过,注意检查jdbc驱动包等相关依赖,tomcat可能出现缺包等问题,相信入门级别的朋友们应该可以找到解决方案的

    insert和select结合实现"插入某字段在数据库中的最大值+1"的方法

    假设我们有两张表,`表一`和`表二`,并且它们的结构相同。如果需要将`表一`的所有数据复制到`表二`,可以使用以下语句: ```sql INSERT INTO 表二 (column1, column2, column3, column4) SELECT column1, column2, ...

    mysql查询字段类型为json时的两种查询方式

    表结构如下: id varchar(32) info json 数据: id = 1 info = {age: 18,disname:小明} ——————————————– 现在我需要获取info中disanme的值,查询方法有: 1. select t.id,JSON_EXTRACT(t.info,'$...

    手机电池型号查询系统源码

    数据库设计通常包含手机型号表、电池型号表以及两者之间的关联关系表,以便进行快速查找和匹配。 2. 用户接口设计:用户界面是用户与系统交互的关键部分。这个系统需要提供一个清晰易用的界面,让用户能方便地输入...

    经典的SQL查询语句,将内容作为字段查询

    首先,SQL查询的基本结构由以下几个部分组成:SELECT、FROM、WHERE、GROUP BY、HAVING 和 ORDER BY。这些关键字帮助我们指定要选择哪些字段(SELECT),从哪个表(FROM),基于什么条件(WHERE),如何分组(GROUP ...

    springmybatis

    3. 创建mysql 测试数据库和用户表,注意,这里采用的是 utf-8 编码 创建用户表,并插入一条测试数据 程序代码 程序代码 Create TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `userName` varchar(50) ...

Global site tag (gtag.js) - Google Analytics