三、技巧

1、1=1,1=2的使用,在SQL语句组合时用的较多

“where 1=1” 是表示选择全部    “where 1=2”全部不选,
如:
if @strWhere !='' 
begin
set @strSQL = 'select count(*) as Total from [' + @tblName + '] where ' + @strWhere 
end
else 
begin
set @strSQL = 'select count(*) as Total from [' + @tblName + ']' 
end

我们可以直接写成

错误!未找到目录项。
set @strSQL = 'select count(*) as Total from [' + @tblName + '] where 1=1 安定'+ @strWhere 

2、收缩数据库
--重建索引
DBCC REINDEX
DBCC INDEXDEFRAG
--收缩数据和日志
DBCC SHRINKDB
DBCC SHRINKFILE

3、压缩数据库
dbcc shrinkdatabase(dbname)

4、转移数据库给新用户以已存在用户权限
exec sp_change_users_login 'update_one','newname','oldname'
go

5、检查备份集
RESTORE VERIFYONLY from disk='E:\dvbbs.bak'

6、修复数据库
ALTER DATABASE [dvbbs] SET SINGLE_USER
GO
DBCC CHECKDB('dvbbs',repair_allow_data_loss) WITH TABLOCK
GO
ALTER DATABASE [dvbbs] SET MULTI_USER
GO

7、日志清除
SET NOCOUNT ON
DECLARE @LogicalFileName sysname,
 @MaxMinutes INT,
 @NewSize INT

USE tablename -- 要操作的数据库名
SELECT  @LogicalFileName = 'tablename_log', -- 日志文件名
@MaxMinutes = 10, -- Limit on time allowed to wrap log.
 @NewSize = 1  -- 你想设定的日志文件的大小(M)

Setup / initialize
DECLARE @OriginalSize int
SELECT @OriginalSize = size 
 FROM sysfiles
 WHERE name = @LogicalFileName
SELECT 'Original Size of ' + db_name() + ' LOG is ' + 
 CONVERT(VARCHAR(30),@OriginalSize) + ' 8K pages or ' + 
 CONVERT(VARCHAR(30),(@OriginalSize*8/1024)) + 'MB'
 FROM sysfiles
 WHERE name = @LogicalFileName
CREATE TABLE DummyTrans
 (DummyColumn char (8000) not null)

DECLARE @Counter    INT,
 @StartTime DATETIME,
 @TruncLog   VARCHAR(255)
SELECT @StartTime = GETDATE(),
 @TruncLog = 'BACKUP LOG ' + db_name() + ' WITH TRUNCATE_ONLY'

DBCC SHRINKFILE (@LogicalFileName, @NewSize)
EXEC (@TruncLog)
-- Wrap the log if necessary.
WHILE @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) -- time has not expired
 AND @OriginalSize = (SELECT size FROM sysfiles WHERE name = @LogicalFileName)  
 AND (@OriginalSize * 8 /1024) > @NewSize  
 BEGIN -- Outer loop.
SELECT @Counter = 0
 WHILE   ((@Counter < @OriginalSize / 16) AND (@Counter < 50000))
 BEGIN -- update
 INSERT DummyTrans VALUES ('Fill Log') DELETE DummyTrans
 SELECT @Counter = @Counter + 1
 END
 EXEC (@TruncLog)  
 END
SELECT 'Final Size of ' + db_name() + ' LOG is ' +
 CONVERT(VARCHAR(30),size) + ' 8K pages or ' + 
 CONVERT(VARCHAR(30),(size*8/1024)) + 'MB'
 FROM sysfiles 
 WHERE name = @LogicalFileName
DROP TABLE DummyTrans
SET NOCOUNT OFF

8、说明:更改某个表
exec sp_changeobjectowner 'tablename','dbo'

9、存储更改全部表

CREATE PROCEDURE dbo.User_ChangeObjectOwnerBatch
@OldOwner as NVARCHAR(128),
@NewOwner as NVARCHAR(128)
AS

DECLARE @Name    as NVARCHAR(128)
DECLARE @Owner   as NVARCHAR(128)
DECLARE @OwnerName   as NVARCHAR(128)

DECLARE curObject CURSOR FOR 
select 'Name'    = name,
   'Owner'    = user_name(uid)
from sysobjects
where user_name(uid)=@OldOwner
order by name

OPEN   curObject
FETCH NEXT FROM curObject INTO @Name, @Owner
WHILE(@@FETCH_STATUS=0)
BEGIN     
if @Owner=@OldOwner 
begin
   set @OwnerName = @OldOwner + '.' + rtrim(@Name)
   exec sp_changeobjectowner @OwnerName, @NewOwner
end
-- select @name,@NewOwner,@OldOwner

FETCH NEXT FROM curObject INTO @Name, @Owner
END

close curObject
deallocate curObject
GO

10、SQL SERVER中直接循环写入数据
declare @i int
set @i=1
while @i<30
begin
   insert into test (userid) values(@i)
   set @i=@i+1
end
案例
有如下表,要求就裱中所有沒有及格的成績,在每次增長0.1的基礎上,使他們剛好及格:

Name     score

Zhangshan    80

Lishi       59

Wangwu      50

Songquan69

while((selectmin(score) from tb_table)<60)

begin

update tb_table set score =score*1.01

where score<60

if  (select min(score) from tb_table)>60

  break

 else

    continue

end

SQL SERVER 经典语句大全必学(3)——技巧篇相关推荐

  1. sql server基础语句大全

    一.基础 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql server - 创建 ...

  2. SQL Server经典sql语句大全

    SQL Server经典sql语句大全 一.基础 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3. ...

  3. SQL经典语句大全及应用示例汇总

    SQL经典语句大全及应用示例汇总 无论您是一位SQL sever的新手,或是一位只是需要对SQL复习一下的资料仓储业界老将,您就来对地方了.本期专题精选了SQl语句.SQL语法.实例和教程等经典相关资 ...

  4. 【SQL server经典】127个SQLserver热门资料汇总

    最近有许多关于如何学习SQLSERVER的问题,其实新手入门的资源和贴子很多,现在向大家隆重推荐经过精心整理的[SQLServer]127个SQL server热门资料汇总 ,希望能对学习SQLSER ...

  5. SQL 分页查询语句大全即(查找第N到M条记录的方法)

    SQL 分页查询语句大全即(查找第N到M条记录的方法) 第一种方法,我的原创方法 row=2 表示分页行数 page=1 表示页码 getnum=row*page select * from  (se ...

  6. 如何在SQL Server查询语句(Select)中检索存储过程(Store Procedure)的结果集

    如何在SQL Server查询语句(Select)中检索存储过程(Store Procedure)的结果集?(2006-12-14 09:25:36) 与这个问题具有相同性质的其他描述还包括: 如 ...

  7. sqlserver 指定的网络名不再可用_50个比较实用的SQL Server查询语句(1)

    在本文中,我将解释一些通用的SQL查询.我认为每个开发人员都应该了解这些查询.这些查询与SQL的任何特定主题都无关.但是了解这些查询可以解决一些复杂的任务,并且可以在许多场景中使用. 查询1:检索所有 ...

  8. SQL Server数据库技术大全——08讲 PD的使用

    SQL Server数据库技术大全--08讲   PD的使用 讲解了使用PowerDesigner进行数据库建模,包括如何建立概念模型.如何通过概念模型生成物理模型以及如何通过物理模型生成数据库脚本的 ...

  9. 了解SQL Server CASE语句

    SQL Server CASE statement is equivalent to the IF-THEN statement in Excel. SQL Server CASE语句等效于Excel ...

最新文章

  1. linux c 获取文件权限,如何在C / C++中以编程方式读取Linux文件权限
  2. 条件随机场 (CRF) 分词序列谈之一(转)
  3. Hbase总结(八)Hbase中的Coprocessor
  4. HTML+CSS+JS实现 ❤️爱心文字3D旋转动画特效❤️
  5. Python、数据分析、机器学习、区块链大牛在偷偷看的9本书
  6. Atom飞行手册翻译: 2.12 在Atom中写作
  7. 重复文件查找_Duplicate File Remover PRO for mac(Mac文件重复查找软件)
  8. 集成学习 Ensemble Learing(???)
  9. PostgreSQL MySQL 兼容性之 - Gis类型
  10. C#中List的排序(Sort)
  11. C#实现用Enter键和Tab键同样功能
  12. xstream使用的第二个小问题
  13. PV-RCNN:Point-based与Voexl-based共同成就的高性能3D目标检测网络
  14. win10亮度无法调节
  15. 日本地震波及芯片产业链致价格走势难料
  16. rar,zip文件加密判断
  17. 当前时间显示器(代码屏显)
  18. Lenet、Alexnet 、VGG、 GoogleNet、ResNet模型
  19. CST微波工作室边界条件和背景材料
  20. 微信小程序修改switch组件的大小

热门文章

  1. 高中计算机 数制 教案,1.2.2 二进制与数制转换
  2. RFQ 、IFB、RFP 、RFI的区别是什么
  3. Spring session redis ERR unknown command 'CONFIG'
  4. win10 cuda13 pytorch pycharm
  5. 平行四边形的效果实现
  6. 一些CSS兼容性处理写法汇总。
  7. 计算机网络实验四:路由器接口及静态路由配置
  8. 基于SVG的绘制多边形jQuery插件
  9. 关于CTF中脚本的编写及使用。ISCC之Retrieve the passcode
  10. 行走在数据库上的行癫(四)