Sql Server中基本信息查询的相关语句汇总

1/ 在某一表中新增字段

ALTER TABLE Table_Name ADD Column_Name Column_Type

 

2/ 在某一表中删除某一字段

ALTER TABLE Table_Name DROP COLUMN COLUMN_Name

 

3/ 修改字段类型

ALTER TABLE Table_Name  ALTER COLUMN COLUMN_Name COLUMN_Type

 

4/ 更改当前数据库中用户创建对象(如表、列或用户定义数据类型)的名称

sp_rename [ @objname = ] 'object_name', [ @newname = ] 'new_name' [ , [ @objtype = ] 'object_type' ] 

   有关 sp_rename 的详细介绍请移步:http://www.cnblogs.com/A2008A/articles/2491700.html

 

5/ 假设要处理的表名为:TB

   判断要添加列的表中是否存在主键

IF EXISTS(SELECT 1 FROM sysobjects WHERE parent_obj = OBJECT_ID('TB') AND xtype = 'PK')
    BEGIN
        PRINT '表中已经有主键,列只能做为普通列添加'
        --添加int类型的列,默认值为0
        ALTER TABLE TB ADD 列名 int default 0  
    END
ELSE
    BEGIN
         PRINT '表中无主键,添加主键列'
         --添加int类型的列,默认值为0
         ALTER TABLE TB ADD 列名 int primary key default 0  
    END    

 

6/ 判断table1中是否存在name字段

IF EXISTS(SELECT 1 FROM syscolumns WHERE id = object_id('table1') AND NAME = 'name') 
    begin
        PRINT 'table1 表中存在name字段'
    end

 

7/ 判断表名是否存在

--如果是实表可以用
IF EXISTS(SELECT 1 FROM sysobjects WHERE id = object_id(N'[dbo].[表名]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) 

--如果是临时表可以用
IF object_id('tempdb..##temp') IS NOT NULL 

--说明,如果用查找实表方法来打临时表会找不到.发布区别对代.

 

8/ 得到表字段的描述

SELECT   
    *
FROM
    ::fn_listextendedproperty (NULL, 'user', 'dbo', 'table', 'MetaDataConfig', 'column', default)--其他变数,按照你的要求你照写即可,只要表名换成你的

 

9/ 综上,获取字段名/字段数据类型/字段长度/是否为空/是否自增长/描述的相关语句如下:

--获取SqlServer中表结构 主键,及描述主键,及描述
DECLARE @table_name AS VARCHAR(MAX)
SET @table_name = '你的表名' 
SELECT 
    sys.columns.name,
    sys.types.name,
    sys.columns.max_length,
    sys.columns.is_nullable,
   (
       SELECT COUNT(*)
       FROM   sys.identity_columns
       WHERE  sys.identity_columns.object_id = sys.columns.object_id
              AND sys.columns.column_id = sys.identity_columns.column_id
   ) AS is_identity,
   (
       SELECT VALUE
       FROM   sys.extended_properties
       WHERE  sys.extended_properties.major_id = sys.columns.object_id
              AND sys.extended_properties.minor_id = sys.columns.column_id
   ) AS DESCRIPTION
FROM   
    sys.columns,
    sys.tables,
    sys.types
WHERE  
    sys.columns.object_id = sys.tables.object_id
    AND sys.columns.system_type_id = sys.types.system_type_id
    AND sys.tables.name = @table_name
ORDER BY
       sys.columns.column_id

 

10/ 单独查询表的递增字段

SELECT
    [name] 
FROM 
    syscolumns 
WHERE 
    id = object_id(N'你的表名') 
    AND COLUMNPROPERTY(id,name,'IsIdentity') = 1

 

11/ 获取表的主外键

--获取表主外键约束
exec sp_helpconstraint   '你的表名' ;

 

12/ 检索存储过程中包含××内容的存储过程名称

SELECT  
    b.name --存储过程名称
FROM 
    数据库名.dbo.syscomments a,
    数据库名.dbo.sysobjects b 
WHERE 
    a.id=b.id  
    AND b.xtype='p' 
    AND a.text LIKE '%检索内容%'

 

13/ 获取某一字段的描述

SELECT   
    *
FROM
    ::fn_listextendedproperty (NULL, 'user', 'dbo', 'table', '表名', 'column', default)--其他变数,按照你的要求你照写即可,只要表名换成你的
WHERE 
    objname = '字段名'
posted @ 2012-05-09 14:04  Devil_Zhang  阅读(512)  评论(0编辑  收藏  举报