SQL笔记

注意:

1.拼接sql的时候,如果nvachar字段前面不加N,特殊符号就会变成问号

SQL语句:

1.将数据库中一个表的某个字段中的部分字符串进行替换

update ActivityScene set ActivityLink=REPLACE(ActivityLink, 'WeScene101', 'WeScene');

2.循环所有表,如果记录数>0,则使用重设标识列的语句 ,使用游标等

declare @sql nvarchar(500)  
declare @TableName nvarchar(100)  
declare @i INT
declare @j nvarchar(20)
declare @cstucount INT
--上方设置变量
set @i = 1--初始值
declare mCursor cursor  --设置游标
for  --for循环
select name from sysobjects where xtype='U'  --获取所有的表名
open mCursor  --游标的使用开始,打开游标
fetch NEXT from mCursor into @TableName  --for循环中获取下一条记录
while @@fetch_status = 0   --@@fetch_status全局变量,0表示语句获取成功,-1,-2均是失败
    begin --开始
set @sql='select @a=count(*) from ' + QUOTENAME(@TableName) --设置sql语句到变量@sql
exec sp_executesql @sql,N'@a int output',@cstucount OUTPUT -- 执行语句,且将得到的值使用变量赋值@cstucount即为@a拿到的值
if @cstucount>0 --如果记录数>0表示有数据,则不进行重设置标识列
BEGIN
print ''+Convert(nvarchar(10),@i)+'个,大于0,值为='+CONVERT(nvarchar(10),@cstucount)
END
ELSE
BEGIN
set @sql='DBCC CHECKIDENT('+QUOTENAME(@TableName)+', RESEED, 1)' --这句查了一段时间,语句中拿的不太一样,不过这里直接给他放QUOTENAME节可以了,QUOTENAME能够将对象编程有效的字符串
exec(@sql) --执行语句
print ''+Convert(nvarchar(10),@i)+'个,小于等于0,值为='+CONVERT(nvarchar(10),@cstucount)
END
set @i=@i+1 --设置i=i+1
        fetch NEXT from mCursor into @TableName  --拿下一个数据
    end  
close mCursor  --关闭游标
deallocate mCursor  --删除游标
go  
--显示结果  
循环重设标识列的值

3.创建带有标识列,且自增长的表

CREATE TABLE [dbo].[MerchantPublicNumberAuthorizer] (
[ID] int NOT NULL IDENTITY(1,1) ,
[AuthorizerAppid] nvarchar(100) ,
[NickName] nvarchar(max) ,
[HeadImg] nvarchar(max) ,
[ServiceTypeInfo] int NOT NULL ,
[VerifyTypeInfo] int NOT NULL ,
[UserName] nvarchar(max) ,
[BusinessInfo] nvarchar(max) ,
[Alias] nvarchar(max) ,
[QRCodeUrl] nvarchar(max),
[CreateTime] datetime NOT NULL 
)

GO
DBCC CHECKIDENT(N'[dbo].[MerchantPublicNumberAuthorizer]', RESEED, 1)
GO

ALTER TABLE [dbo].[MerchantPublicNumberAuthorizer] ADD PRIMARY KEY ([ID])
GO
创建表

 4.批量替换字符串

update ActivityScene set ActivityLink=REPLACE(ActivityLink, 'wxactivity001.ttyouni.net', 'draw.ttyouni.com') where ActivityLink like '%wxactivity001.ttyouni.net%'

或者

update ActivityScene set ActivityLink=replace(ActivityLink,substring(activitylink,1,4),'替换内容') 

 5.修改数据库表名=》exec sp_rename '旧表名','新表名'

 6.修改表中的字段名=》SP_RENAME '表名.[字段名]','新的字段名'

 7.添加新的字段

ALTER TABLE  表名 ADD 字段名 int ;
update 表名 set 字段名=0;--设置个初始化,这样才能设置不为空
ALTER TABLE 表名 ALTER COLUMN 字段名 int not NULL;

 8.这个上面创建表的时候有加,就是设置自增长的,这个在初始建表的时候,添加

DBCC CHECKIDENT(N'[dbo].[表名]', RESEED, 1)

 9.这个在创建表的时候也有提到,是设置主键的

ALTER TABLE [dbo].[表名] ADD PRIMARY KEY ([ID])

10.sql server数据库中查询某个字段所在表

select * from information_schema.columns where column_name='字段名'

 查出来的结果中,会有一大串的标题,这些就是相关信息,这里只截取了一部分

原文地址:https://www.cnblogs.com/danlis/p/5667457.html