sql神器,再也不用记东记西了O(∩_∩)O(一)

2014-11-24 02:57:13 · 作者: · 浏览: 14
/*
* 创建时间:2011-10-09
* liud
* 使用目录:
* ==============================================
* 01==查看表描述信息
* 02==添加列(可多列)\修改列\删除列\修改列名
* 03==删除表\字段描述
* 04==添加表\字段描述(方法1、2)
* 05==修改表\字段描述
* 06==修改列允许为空或不为空
* 07==创建表\主键\外键\索引\修改主键
* 08==表列增加、修改默认值
* 09==函数Split
* 10==FOR XML AUTO
* 11==FOR XML PATH 多种使用方式
* 12==将指定字符替换 stuff('abc',2,1,'B') 结果:aBc
* 13==联合多表Update操作
* 14==日期函数
* 15==行列转换(两种方式)
* 16==删除/创建 表建立的约束(如默认值)
* 17==With ** AS()使用
* 18==Update 时增加 @ERROR<>0 OR @ROWCOUNT<>cnt(影响行数) 判断
* 19==大数据表循环删除脚本
* ==============================================
*/

--111111111111111==============================查看表描述信息

SELECT  *
FROM  ::fn_listextendedproperty (NULL, 'user', 'dbo', 'table', 'CONTRACT', 'column', NULL)

--222222222222222==============================添加列(可多列)\修改列\删除列
ALTER TABLE 表 ADD 列 int,可多列  逗号分隔
ALTER TABLE tableName ALTER column columnName varchar(4000)  
ALTER TABLE tableName drop column columnName 
EXEC  sp_rename   'tableName.column1' , 'column2'  --(把表名为tableName的column1列名修改为column2)  

--33333333333333==============================删除表\字段描述
--
EXEC sp_dropextendedproperty 'MS_Description','user',dbo,'table','CONTRACT',null,null
EXEC sp_dropextendedproperty 'MS_Description','user',dbo,'table','CONTRACT','column',BrandId

--4444444444444==============================添加表\字段描述(方法1、2)
--表描述
EXEC sp_addextendedproperty N'MS_Description', '添加表描述', N'user', N'dbo', N'table', N'表', NULL, NULL 

--方法1
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'添加字段描述1' 
, @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'表', @level2type=N'COLUMN',@level2name=N'列'
GO
--方法2
EXECUTE sp_addextendedproperty N'MS_Description', '添加字段描述2', N'user', N'dbo', N'table', N'表', N'column', N'列' 
GO

--5555555555555==============================修改表\字段描述信息
--
EXEC sp_updateextendedproperty 'MS_Description','修改表描述',N'user', N'dbo', N'table','表',null,null
EXEC sp_updateextendedproperty 'MS_Description','修改字段描述',N'user', N'dbo', N'table','表','column',a1 

--666666666666666==============================修改列允许为空或不为空
--
--允许为空
alter table 表 ALTER COLUMN 列 bit NULL
alter table 表 ALTER COLUMN 列 BIT NOT NULL

--77777777777777==============================创建表\主键\索引
--
--检查索引是否存在,存在则删除
if exists (select 1
            from  sysindexes
           where  id    = object_id('dbo.SCCLWayBill')
            and   name  = 'IX_SCCLWayBill_DispatchNo'
            and   indid >
0 and indid < 255) drop index dbo.SCCLWayBill.IX_SCCLWayBill_DispatchNo GO --创建主键 CREATE TABLE tbname( id INT NOT NULL, --不为空 NAME NVARCHAR(20) NULL, --可为空 STATUS INT DEFAULT 0, --默认值 constraint PK_tbname primary key (id), --主键 waijian int foreign key(waijian) references A_tablename(AID)--外键 ) --修改主键 --1首先删除主键 ALTER TABLE [tbname] DROP CONSTRAINT [PK_tbname] --2创建主键 ALTER TABLE [tbname] ADD CONSTRAINT [PK_tbname] PRIMARY KEY ( column1 ASC, column2 ASC, column3 ASC ) GO --创建索引 --聚集索引 create index IX_tbname_id on dbo.tbname ( id ASC ) go --非聚集索引 CREATE nonclustered index IX_tbname_id on dbo.tbname ( id ASC ) go --8888888888888==============================表列增加默认值 ALTER TABLE [tbName] ADD CONSTRAINT [约束名(自定义)] DEFAULT ((2)) FOR [ColumnName] ALTER TABLE [tbName] ADD DEFAULT ((1)) FOR [column] --如果需要修改默认值 ALTER TABLE [tbName] DROP CONSTRAINT [约束名(自定义)] --删除约束 然后再新增 -- --999999999999999============================Split函数 CREATE Function [Split](@Sql varchar(8000),@Splits varchar(10)) returns @temp Table (a varchar(100)) As Begin Declare @i Int Set @Sql = RTrim(LTrim(@Sql)) Set @i = CharIndex(@Splits,@Sql) While @i >= 1 Begin Insert @temp Values(Left(@Sql,@i-1)) Set @Sql = SubString(@Sql,@i+1,Len(@Sql)-@i) Set @i = CharIndex(@Splits,@Sql) End If @Sql <> '' Insert @temp Values (@Sql) Return End --测试 --SELECT * FROM dbo.Split('L.I.U.D.O.N.G','.') -------------------10=========================FOR XML AUTO DECLARE @temT TABLE(ID INT,NAME NVARCHAR(50)) INSERT INTO @temT VALUEs(1,'liudong'); INSERT INTO @temT VALUEs(2,'shichunjie'); SELECT * FROM @temT FOR XML AUTO -------------------11=========================FOR XML PATH SELECT * FROM @temT FOR XML PATH SELECT * FROM @temT FOR XML PATH('T') SELECT * FROM @temT FOR XML PATH('') SELECT cast(id AS NVARCHAR(10))+',',NAME+'.' FROM @temT FOR XML PATH('') -------------------12=========================stuff('abc',2,1,'B') select stuff('abc',2,1,'B') --结果 aBc -- -------------------13=========================联合多表Update操