给SQL补充一个查看表结构的存储过程

数据库中表太多,要查看某个表的结构比较费劲,用此存储过程比较方便;

 
CRM
/********************************************
* 根据表名得到表信息,包括字段说明     
********************************************/   
CREATE PROC [dbo].[sp_help_table]
(@tableName VARCHAR(200), @ColumnLike VARCHAR(200) = NULL)         
AS   
--如果表名不存在,就直接选出相似表 
IF NOT EXISTS(
       SELECT 1
       FROM   sysobjects
       WHERE  id = OBJECT_ID(@tableName)
              AND TYPE = 'U'
   )
BEGIN
    SELECT NAME FROM   sysobjects
    WHERE  NAME LIKE '%' + @tableName + '%' AND TYPE = 'U'   
    RETURN
END 
 
 
--筛选相似列名
IF (@ColumnLike IS NULL)
    SET @ColumnLike = ''
   
DECLARE @ColumnTable TABLE(cName VARCHAR(200))   
INSERT @ColumnTable
  (
    cName
  )
SELECT a.name
FROM   syscolumns a,sysobjects d
WHERE  a.id = d.id
       AND d.name = @tableName
       AND a.name LIKE '%' + @ColumnLike + '%'   
     
--查询表结构信息            
SELECT 表名 = CASE
                   WHEN a.colorder = 1 THEN d.name
                   ELSE ''
              END,
       表说明 = CASE
                     WHEN a.colorder = 1 THEN ISNULL(f.value, '')
                     ELSE ''
                END,
       字段序号 = a.colorder,
       字段名 = a.name,
       字段说明 = ISNULL(g.[value], ''),
       标识 = CASE
                   WHEN COLUMNPROPERTY(a.id, a.name, 'IsIdentity') = 1 THEN '√'
                   ELSE ''
              END,
       主键 = CASE
                   WHEN EXISTS(
                            SELECT 1 FROM   sysobjects WHERE  xtype = 'PK' AND parent_obj = a.id
                                   AND NAME   IN (SELECT NAME FROM   sysindexes
                                                  WHERE  indid   IN (SELECT indid FROM sysindexkeys
                                                                     WHERE  id = a.id AND  colid = a.colid))
                        ) THEN '√'
                   ELSE ''
              END,
       类型 = b.name,
       占用字节数 = a.length,
       长度 = COLUMNPROPERTY(a.id, a.name, 'PRECISION'),
       小数位数 = ISNULL(COLUMNPROPERTY(a.id, a.name, 'Scale'), 0),
       允许空 = CASE WHEN a.isnullable = 1 THEN '√'
                     ELSE ''
                END,
       默认值 = ISNULL(e.text, '')
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='要查询的表'         --如果只查询指定表,加上此条件
WHERE  d.name = @tableName
       AND EXISTS(
               SELECT 1
               FROM   @ColumnTable
               WHERE  cname = a.name
           )
ORDER BY a.id,a.colorder

时间: 2024-09-20 04:06:05

给SQL补充一个查看表结构的存储过程的相关文章

sql alert table 修改表结构的使用方法

sql alert table 修改表结构的使用方法 ALTER TABLE 语句用于在已有的表中添加.修改或删除列 ADD [COLUMN] column name (column definitions) [FIRST or AFTER column_name] ADD INDEX [index_name] (column_list) ADD PRIMARY KEY (column_list) ADD UNIQUE [index_name] (column_list) ALTER [COLU

Oracle常用查看表结构命令

原文:Oracle常用查看表结构命令 获取表: select table_name from user_tables; //当前用户的表       select table_name from all_tables; //所有用户的表   select table_name from dba_tables; //包括系统表 select table_name from dba_tables where owner='用户名' user_tables: table_name,tablespace

根据sql脚本修改数据库表结构

  最近由于项目需要要做一个小工具. 需求:客户用的老库并存储了一些数据,用了一段时间,我们根据客户提出新功能在老库的基础上对新库进行修改.这些修改有很多细节方面的修改,包含存储过程,增加表,修改表字段类型,添加字段. 然后我们自己更新并测试好软件后,需要改动客户那边的老库,老库的数据是要保存的. 解决方案一:很快我就想到用SQL SERVER 08 R2 自带的功能,生成新库脚本.把老库改个名字,跑新库脚本,然后通过数据库自带功能把老库数据导入到新库数据.测试的时候,数据量不大,速度还比较理想

根据sql脚本修改数据库表结构的几种解决方案

最近由于项目需要要做一个小工具. 需求:客户用的老库并存储了一些数据,用了一段时间,我们根据客户提出新功能在老库的基础上对新库进行修改.这些修改有很多细节方面的修改,包含存储过程,增加表,修改表字段类型,添加字段. 然后我们自己更新并测试好软件后,需要改动客户那边的老库,老库的数据是要保存的. 解决方案一:很快我就想到用SQL SERVER 08 R2 自带的功能,生成新库脚本.把老库改个名字,跑新库脚本,然后通过数据库自带功能把老库数据导入到新库数据.测试的时候,数据量不大,速度还比较理想.

根据sql脚本修改数据库表结构的几种解决方案_MsSql

最近由于项目需要要做一个小工具. 需求:客户用的老库并存储了一些数据,用了一段时间,我们根据客户提出新功能在老库的基础上对新库进行修改.这些修改有很多细节方面的修改,包含存储过程,增加表,修改表字段类型,添加字段. 然后我们自己更新并测试好软件后,需要改动客户那边的老库,老库的数据是要保存的. 解决方案一:很快我就想到用SQL SERVER 08 R2 自带的功能,生成新库脚本.把老库改个名字,跑新库脚本,然后通过数据库自带功能把老库数据导入到新库数据.测试的时候,数据量不大,速度还比较理想.

SQL SERVER 不能修改表结构、列类型 解决方法

在SQL SERVER中使用表结构设计的时候: 提示是:不允许保存更改.您所做的更改要求删除并重新创建以下表.您对无法重新创建的标进行了更改或者启用了"阻止保存要求重新创建表的更改"选项. 解决方案: 启动MSSQL SERVER 2008,选择菜单 工具-〉选项-〉左侧有个 设计器-〉表设计器和数据库设计器.然后去掉" 阻止保存要求重新创建表的更改"前面的勾.重新启动MSSQL SERVER 2008即可.如下图所示:

请问net下怎么查看mysql表结构呢

问题描述 没有可视化工具,不能远程登录服务器.可以ftp,有数据库密码,网站页面可以连上数据库操作,怎么能导出表结构呢? 解决方案 解决方案二:ftp肯定不行,起码要有powershell.解决方案三:网页上可以执行sql语句这个有没有办法解决方案四:自己写上4.5行代码,就行了.你从网页上一个文本框输入sql语句,然后把查询出来的DataTable直接绑定给GridView,例如只需要写一句:this.gridView1.DataSource=ExecuteMySql(sql); 解决方案五:

Oracle SQL Server MySQL查看当前所有数据库表名及其他信息

环境:Oracle 11g + SQLServer 2008 R2 + MySQL 5.1 Oracle: 1. 查看当前库的所有数 据表 select * from all_tables; select table_name from all_tables; select table_name from user_tables; select table_name from all_tables where owner='用户名'; 2. 查看表结构 desc 表名 : SQLServer:

mysql查看表的存储引擎、表结构等相关信息

以下均为查看mytable表的信息 1.查看表的存储引擎.记录数等 mysql> show table status like 'mytable' /G;*************************** 1. row *************************** Name: mytable #表名 Engine: InnoDB #存储引擎伟InnoDB Version: 10 #mysql版本 Row_format: Compact #行格式.有Dynamic,fixed,Com