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 = '字段名'