记录一些常用的sql语句。
设置登录SQL Server时默认的数据库,减少不必要切换:默认数据库 --> 想要的数据库。
DECLARE @loginText nvarchar(256) SELECT @loginText = SUSER_NAME() EXEC sp_defaultdb @loginame = @loginText , @defdb = 'DatabaseName'
如果设置不成功,请用一个 SQL Server Authentication 账号设置。设置成功之后,默认的 Windows Authenticaiton 也能使用。
--Query table by column select tab.name as TableName, col.name as ColumnName from syscolumns col left join sys.tables tab on col.id= tab.object_id where col.name ='ColumnName' --Fuzzy query table name select name as TableName from sys.tables where name like '%JOBEXT% order by name'
要插入的表不能已存在。
select * into DatabaseName.dbo.A_Backup from DatabaseName.dbo.A
还原,要保证所有列的列名和顺序和类型是一致的,否则要指定具体的对应关系
INSERT INTO DatabaseName.dbo.A SELECT * FROM DatabaseName_Backup.dbo.A_Backup
全部列数据。
insert into DatabaseName_Backup.dbo.A_Backup select * from DatabaseName.dbo.A
部分列数据。一些列需要根据限定条件设置默认值。
insert into DatabaseName_Backup.dbo.A_Backup(Number) SELECT Number FROM DatabaseName.dbo.A
BEGIN TRANSACTION; DECLARE @rowCounter integer SELECT @rowCounter = COUNT(1) FROM DatabaseName.dbo.A_Backup PRINT @rowCounter IF @rowCounter > 0 BEGIN PRINT 'ROLLBACK'; ROLLBACK TRANSACTION; END ELSE BEGIN PRINT 'COMMIT' COMMIT TRANSACTION END
RETURN
SELECT * FROM sys.columns WHERE object_id=object_id('DatabaseName.dbo.A')
ROW_NUMBER() OVER(ORDER BY (SELECT NULL))
sp_helptext
游标就是foreach,由SQL这种低级脚本语言编写非常繁琐,浪费了无数人的时间,掉了好多头发。站在现在的角度,当初设计SQL的人就像小丑一样造了一个这么难用的破玩意儿。