三、技巧

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、压缩数据库

dbccshrinkdatabase(dbname)

4、转移数据库给新用户以已存在用户权限

execsp_change_users_login 'update_one','newname','oldname' go

5、检查备份集

RESTORE VERIFYONLY fromdisk='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 notexpired  AND @OriginalSize = (SELECT size FROMsysfiles 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 pagesor ' +  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

Songquan    69

while((select min(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语句大全(技巧)的更多相关文章

  1. 常用经典SQL语句大全完整版--详解+实例 (存)

    常用经典SQL语句大全完整版--详解+实例 转 傻豆儿的博客 http://blog.sina.com.cn/shadou2012  http://blog.sina.com.cn/s/blog_84 ...

  2. 常用经典SQL语句大全完整版--详解+实例 《来自网络,很全没整理,寄存与此》

    常用经典SQL语句大全完整版--详解+实例 下列语句部分是Mssql语句,不可以在access中使用. SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML ...

  3. 常用经典SQL语句大全(提升)

    二.提升 1.说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用) 法一:select * into b from a where 1<>1(仅用于SQlServer) ...

  4. 常用经典SQL语句大全(基础)

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

  5. 经典SQL语句大全以及50个常用的sql语句

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

  6. [转] - 经典SQL语句大全

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

  7. SQL之经典SQL语句大全

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

  8. 浅谈c#的三个高级参数ref out 和Params C#中is与as的区别分析 “登陆”与“登录”有何区别 经典SQL语句大全(绝对的经典)

    浅谈c#的三个高级参数ref out 和Params   c#的三个高级参数ref out 和Params 前言:在我们学习c#基础的时候,我们会学习到c#的三个高级的参数,分别是out .ref 和 ...

  9. BayaiM__经典SQL语句大全

    BayaiM__经典SQL语句大全 原创 作者:bayaim 时间:2016-06-16 09:22:24 32 0删除编辑 以下这篇文章,是一个垃圾,垃圾中的垃圾 ----------------- ...

随机推荐

  1. VS2012与NUnit

    微软提供的NUnit插件是针对vs2010的,而vs2012会自动识别,测试环境为64位win7,具体操作步骤如下 1.下载安装NUnit(NUnit-2.6.3.msi) 2.新建测试项目UnitT ...

  2. Hadoop on Mac with IntelliJ IDEA - 3 解决MRUnit - No applicable class implementing Serialization问题

    本文讲述在IntelliJ IDEA中使用MRUnit 1.0.0测试Mapper派生类时因MapDriver.withInput(final K1 key, final V1 val)的key参数被 ...

  3. ArcObjects SDK(AE)10.1在vs2012安装的方法

    ArcObjects SDK(以下简称AO)10.1只支持vs2010,如果装了vs2012,再安装AO会提示一串鸡肠(英文),意思是AO10.1只支持vs2010 想在2012下安装,可以通过修改注 ...

  4. 单例模式总结(Java版)

    1:懒汉的设计模式,在第一次调用的时候才完成相关的初始化操作 懒汉式是典型的时间换空间,就是每次获取实例都会进行判断,看是否需要创建实例,浪费判断的时间.当然,如果一直没有人使用的话,那就不会创建实例 ...

  5. Spring容器-ApplicationContext的单例设计

    Spring容器-ApplicationContext的单例设计   每次通过new创建一个ApplicationContext容器,都会执行refresh方法,看源代码了解到这个refresh方法会 ...

  6. 【转】Ruby入门教程(一)

    1. Ruby环境搭建 在Windows下,搭建Ruby环境,比较简单的方法是在“RubyInstaller”上下载一个合适的版本(D瓜哥使用的是最新版),直接安装就可以了. 另外,吐槽两句,网上有人 ...

  7. Openfire服务器MySQL优化

    Openfire服务器MySQL优化: [root@iZ28g4ctd7tZ ~]# mysql -u root -p XXXXX mysql> show processlist; +----- ...

  8. 用C#.NET实现电子邮件客户程序

    用C#.NET实现电子邮件客户程序 周华清 戴晟辉(东华理工学院计算机与通信系 江西 抚州 344000) [摘要]通过C#这种VisualSTudio.NET中新引入的面向对象且类型安全的编程语言, ...

  9. ios-NSString总结

    1.常用功能使用 1)初始化 NSString *astring = @"This is a String!";                             //固定字 ...

  10. Jquery 回到顶部

    转:http://www.cnblogs.com/DemoLee/archive/2012/04/20/2459082.html 用jQuery实现渐隐渐显的返回顶部效果(附多图)   先来看几个图片 ...