SqlServer查询出数据库中所有的表及其字段属性

代码如下所示:

/*********************************
SqlServer查询出数据库中所有的表及其字段属性
*********************************/
SELECT  ( CASE WHEN a.colorder = 1 THEN d.name
               ELSE ‘‘
          END ) AS 表名 ,--如果表名相同就返回空
        a.colorder AS 字段序号 ,
        a.name AS 字段名 ,
        ( CASE WHEN COLUMNPROPERTY(a.id, a.name, ‘IsIdentity‘) = 1 THEN ‘√‘
               ELSE ‘‘
          END ) AS 标识 ,
        ( 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 ‘√‘
               ELSE ‘‘
          END ) AS 主键 ,--查询主键END
        b.name AS 类型 ,
        a.length AS 占用字节数 ,
        COLUMNPROPERTY(a.id, a.name, ‘PRECISION‘) AS 长度 ,
        ISNULL(COLUMNPROPERTY(a.id, a.name, ‘Scale‘), 0) AS 小数位数 ,
        ( CASE WHEN a.isnullable = 1 THEN ‘√‘
               ELSE ‘‘
          END ) AS 允许空 ,
        ISNULL(e.text, ‘‘) AS 默认值 ,
        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
ORDER BY a.id ,
        a.colorder;

查询结果如下图所示:

原文地址:https://www.cnblogs.com/qubernet/p/9055508.html

时间: 2024-10-17 19:07:05

SqlServer查询出数据库中所有的表及其字段属性的相关文章

mysql、oracle、sqlserver查询某数据库中对应的表的个数

1.oracle查询数据库中表的个数: select count(*) from user_tables 这个操作的前提是,登录成功 2.mysql查询数据库中表的个数: SELECT COUNT(*) TABLES, table_schema FROM information_schema.TABLES WHERE table_schema = '数据库' GROUP BY table_schema;把数据库这三个字修改成自己对应的数据库的名字3.sqlserver中查询某一个数据中表的个数:

查询mysql数据库中所有的表和对应表中所有的字段

查询smp_db数据库中所有的数据表INFORMATION_SCHEMA.TABLES select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA='smp_db' 查询smp_db数据库中smp_import_db表所有的字段information_schema.`COLUMNS` select COLUMN_NAME from information_schema.`COLUMNS` where TABLE_SCHE

sql 查询目标数据库中所有的表以其关键信息

1.查询目标库中的所有表 SELECT obj.name tablename, ---表名 schem.name schemname, ---表所属的方案 idx.rows, ---一共有几行数组 CAST ( CASE WHEN (SELECT COUNT(1) FROM sys.indexes WHERE object_id= obj.OBJECT_ID AND is_primary_key=1) >=1 THEN 1 ELSE 0 END AS BIT ) HasPrimaryKey --

sql server 怎样用SQL语句查询一个数据库中的所有表?

搜了一大堆做个总结,以下是Sql Server中的方法,备忘下 1,利用sysobjects系统表 在这个表中,在数据库中创建的每个对象(例如约束.默认值.日志.规则以及存储过程)都有对应一行,我们在该表中筛选出xtype等于U的所有记录,就为数据库中的表了. 示例语句如下:: select * from sysobjects where xtype='U' 注意:在SQL SERVER2005中,出现了sys.objects目录视图来代替sysobjects系统表,我们在SQL SERVER2

SQL语句查询一个数据库中的所有表

--读取库中的所有表名 select name from sysobjects where xtype='u' --读取指定表的所有列名 select name from syscolumns where id=(select max(id) from sysobjects where xtype='u' and name='表名') 获取数据库表名和字段 sqlserver中各个系统表的作用 sysaltfiles 主数据库 保存数据库的文件 syscharsets 主数据库 字符集与排序顺序

—查询数据库中所有的表名字段名说明 详细信息

——直接放在需要查询的库中执行即可. SELECT (case when a.colorder=1 then d.name else null end) 表名, a.colorder 字段序号,a.name 字段名, (case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end) 标识, (case when (SELECT count(*) FROM sysobjects WHERE (name in (S

SQL语句查询出数据库中所有表的结构

</pre><pre name="code" class="sql">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=

利用SQL语句查询一个数据库中的所有表

SQL  :  select * from information_schema.tables ORACLE: select table_name from user_tables ACCESS: select    name    from    MSysObjects    where    type=1    and    flags=0

查询oracle数据库中的所有表空间信息

select dbf.tablespace_name,dbf.totalspace "总量(M)",dbf.totalblocks as 总块数,dfs.freespace "剩余总量(M)",dfs.freeblocks "剩余块数",(dfs.freespace / dbf.totalspace) * 100 "空闲比例" from (select t.tablespace_name,sum(t.bytes) / 1024