1. 存储过程

CREATE PROCEDURE [dbo].[bbs_move_createtopic]
@fid smallint,
@iconid smallint,
@curtid INT OUTPUT
AS
BEGIN
INSERT INTO [topics] ......
SET @topicid=SCOPE_IDENTITY()
END
declare @curtid int
exec [createtopic] @fid=@new_fid,@iconid=0,
@curtid=@curr_topicid OUTPUT

2. 游标

    DECLARE
@name NVARCHAR(100),
@id DECIMAL,
@idcard NVARCHAR(100)=NULL --声明游标
DECLARE cur_correctIdCard CURSOR
FOR
SELECT
ID, NAME, [USER_ID]
FROM dbo.old_bbstitle
WHERE (USER_ID IS NULL OR LTRIM(NAME)='')
OR (NAME IS NULL OR LTRIM(NAME)='')
--打开游标
OPEN cur_correctIdCard
--开始FETCH
FETCH NEXT FROM cur_correctIdCard INTO @id,@name,@idcard --0 FETCH 语句成功
--1 FETCH 语句失败或此行不在结果集中
--2 被提取的行不存在
WHILE(@@FETCH_STATUS=0)
BEGIN
... ... FETCH NEXT FROM cur_correctIdCard INTO @id,@name,@idcard
SET @idcard=NULL
END CLOSE cur_correctIdCard
DEALLOCATE cur_correctIdCard

3. 复制表的数据

SELECT * INTO users_bak FROM users

4. group by … having …

DELETE
FROM dbo.old_clubuser WHERE CLUBUSER_ID
IN(
SELECT MIN(CLUBUSER_ID) FROM dbo.old_clubuser WHERE CLUBUSER_NAME IS NOT NULL AND CLUBUSER_NICKNAME IS NOT NULL
GROUP BY CLUBUSER_NAME,CLUBUSER_NICKNAME
HAVING COUNT(CLUBUSER_NAME)>1
)

5. 事务

BEGIN TRANSACTION trans_correctIdCard
BEGIN TRY
DECLARE
@name NVARCHAR(100),
@id DECIMAL,
@idcard NVARCHAR(100)=NULL COMMIT TRANSACTION trans_correctIdCard
PRINT 'SUCCESS'
END TRY
BEGIN CATCH ROLLBACK TRANSACTION trans_correctIdCard PRINT '出错:'+CAST(@@error AS NVARCHAR(MAX))
PRINT '已进行回滚' END CATCH

5. 先判断表是否存在再创建表

--判断表是否存在,存在则先删除
IF object_id(N'dbo.T_Student',N'U') IS NOT NULL
DROP TABLE dbo.T_Student
GO --创建表
CREATE TABLE [dbo].[T_Student](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](max) NULL,
[Age] [int] NOT NULL,
[NickName] [nvarchar](max) NULL,
[City] [nvarchar](max) NULL,
CONSTRAINT [PK_dbo.T_Student] PRIMARY KEY CLUSTERED ([Id] ASC)
)

6. 获取SQL Server表结构

SELECT (case when a.colorder=1 then d.name else null end) 表名,
a.colorder 字段序号,a.name 字段名,
(case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end) 标识,
(case when (SELECT count(*) FROM sysobjects
WHERE (name in (SELECT name FROM sysindexes
WHERE (id = a.id) AND (indid in
(SELECT indid FROM sysindexkeys
WHERE (id = a.id) AND (colid in
(SELECT colid FROM syscolumns WHERE (id = a.id) AND (name = a.name)))))))
AND (xtype = 'PK'))>0 then '√' else '' end) 主键,b.name 类型,a.length 占用字节数,
COLUMNPROPERTY(a.id,a.name,'PRECISION') as 长度,
isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0) as 小数位数,(case when a.isnullable=1 then '√'else '' end) 允许空,
isnull(e.text,'') 默认值,isnull(g.[value], ' ') AS [说明]
FROM syscolumns a
left join systypes b on a.xtype=b.xusertype
inner join sysobjects d on a.id=d.id and d.xtype='U' and d.name<>'dtproperties'
left join syscomments e on a.cdefault=e.id
left join sys.extended_properties g on a.id=g.major_id AND a.colid=g.minor_id
left join sys.extended_properties f on d.id=f.class and f.minor_id=0
where b.name is not null
--WHERE d.name='要查询的表' --如果只查询指定表,加上此条件
order by a.id,a.colorder

(出处:http://www.cnblogs.com/ynbt/archive/2012/07/16/2593389.html)

7. 查询数据库中的所有数据库名

SELECT Name FROM Master..SysDatabases ORDER BY Name

8. 查询某个数据库中所有的表名

SELECT Name FROM SysObjects Where XType='U' ORDER BY Name

9. 批量清空一个库的表(1)

SELECT 'TRUNCATE TABLE ' + Name FROM SysObjects Where XType='U' ORDER BY Name

10. 批量清空一个库的表(2)

    USE [库名]
DECLARE
@tableName NVARCHAR(100) --声明游标
DECLARE CUR_ALLTABLES CURSOR
FOR
SELECT Name FROM SysObjects Where XType='U' ORDER BY Name --打开游标
OPEN CUR_ALLTABLES
--开始FETCH
FETCH NEXT FROM CUR_ALLTABLES INTO @tableName DECLARE @SQL VARCHAR(MAX) = '' --0 FETCH 语句成功
--1 FETCH 语句失败或此行不在结果集中
--2 被提取的行不存在
WHILE(@@FETCH_STATUS=0)
BEGIN SET @SQL = 'TRUNCATE TABLE ' + @tableName
PRINT @SQL FETCH NEXT FROM CUR_ALLTABLES INTO @tableName
END CLOSE CUR_ALLTABLES
DEALLOCATE CUR_ALLTABLES

11. 行列转换的例子

WITH CTE AS (
select 1 as 序号 ,'2010-2-3' as 日期,'是' as 状
union all
select 2 as 序号 ,'2010-2-3' as 日期,'否' as 状
union all
select 3 as 序号 ,'2010-2-4' as 日期,'是' as 状
union all
select 4 as 序号 ,'2010-2-4' as 日期,'否' as 状
union all
select 5 as 序号 ,'2010-2-3' as 日期,'是' as 状
union all
select 6 as 序号 ,'2010-2-3' as 日期,'是' as 状
union all
select 7 as 序号 ,'2010-2-4' as 日期,'是' as 状
)
SELECT 日期, SUM(是) 是, SUM(否) 否 FROM (
SELECT 日期,
CASE WHEN 状='是' THEN 1 ELSE 0 END AS 是,
CASE WHEN 状='是' THEN 0 ELSE 1 END AS 否 FROM CTE
)A GROUP BY 日期

12. 获取一个存储过程的内容

DECLARE @Content NVARCHAR(max)
SELECT @Content=text
FROM syscomments
WHERE id = ( SELECT id FROM sysobjects WHERE name = 'StoredProcedureName')
PRINT @Content

13. 使用OFFSET/FETCH NEXT获取分页数据[SQL Server 2012]
注:OFFSET是从0开始的

DECLARE @Count int = 10
SELECT * FROM TableName(NOLOCK) WHERE Status&2=2
ORDER BY CreateTime DESC
OFFSET 0 ROW FETCH NEXT @Count rows only

14. top

DECLARE @COUNT INT = 10;
SELECT TOP(@COUNT) FROM T_Name

15. Create View

IF object_id(N'dbo.v_users',N'V') IS NOT NULL
DROP VIEW dbo.v_users
GO CREATE VIEW dbo.v_users
AS
SELECT *
FROM [dbo].[users]

16. 查看SP

sp_helptext spname

17. 获取执行统计信息

DBCC DROPCLEANBUFFERS 清除缓冲区
DBCC FREEPROCCACHE 删除计划高速缓存中的元素 SET STATISTICS TIME ON
SET STATISTICS IO ON SELECT 1 FROM Persons SET STATISTICS TIME OFF
SET STATISTICS IO OFF

相关: http://www.cnblogs.com/xqhppt/p/4041799.html

18. 修改字段

alter table Persons alter column Name nvarchar(12) not null

To Be Continued ...

常用sql语句整理[SQL Server]的更多相关文章

  1. 常用sql语句整理:mysql

    ## 常用sql语句整理:mysql1. 增- 增加一张表```CREATE TABLE `table_name`(  ...  )ENGINE=InnoDB DEFAULT CHARSET=utf8 ...

  2. Oracle数据库常用的Sql语句整理

    Oracle数据库常用的Sql语句整理 查看当前用户的缺省表空间 : select username,default_tablespace from user_users; 2.查看用户下所有的表 : ...

  3. 一个项目涉及到的50个Sql语句(整理版)

    /* 标题:一个项目涉及到的50个Sql语句(整理版) 说明:以下五十个语句都按照测试数据进行过测试,最好每次只单独运行一个语句. */ --1.学生表Student(S,Sname,Sage,Sse ...

  4. mysql copy表或表数据常用的语句整理汇总

    mysql copy表或表数据常用的语句整理汇总. 假如我们有以下这样一个表: id username password ----------------------------------- 1 a ...

  5. 如果一条SQL语句太长,我们可以通过回车键来创建一个新行来编写SQL语句,SQL语句的命令结束符为分号(;)。

    1.如果一条SQL语句太长,我们可以通过回车键来创建一个新行来编写SQL语句,SQL语句的命令结束符为分号(;). 2.select查询的多个字段之间要用逗号“,”分割,如果查询涉及多个表,那多个表之 ...

  6. 基于简单sql语句的sql解析原理及在大数据中的应用

    基于简单sql语句的sql解析原理及在大数据中的应用 李万鸿 老百姓呼吁打土豪分田地.共同富裕,总有一天会实现. 全面了解你所不知道的外星人和宇宙真想:http://pan.baidu.com/s/1 ...

  7. 第15讲:嵌入式SQL语句(动态SQL)

    一.动态SQL概述 1. 静态SQL vs 动态SQL ①动态SQL是相对静态SQL而言的 ②静态SQL特点:SQL语句在程序中已经按要求写好,只需要把一些参数通过变量传递给SQL语句即可 specN ...

  8. mybatis日志,打印sql语句,输出sql

    mybatis日志,打印sql语句,输出sql<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE ...

  9. 常用的一些SQL语句整理,也许有你想要的。

    本篇文章是对一些常用的sql语句进行了总结与分析,需要的朋友参考下,也许会有你需要的. 1.SQL行列转换 问题:假设有张学生成绩表(tb)如下:姓名 课程 分数张三 语文 74张三 数学 83张三 ...

随机推荐

  1. Android -- Apk安装简诉

    安装涉及到如下几个目录 system/app  ​ 系统自带的应用程序,无法删除 data/app   用户程序安装的目录,有删除权限. 安装时把apk文件复制到此目录 ​ data/data  存放 ...

  2. shell 使用

    echo -e "1\t2\t3" #-e echo -e "\e[1;31m This is red text \e[0m" #color echo -e & ...

  3. MyBatis拦截器原理探究

    MyBatis拦截器介绍 MyBatis提供了一种插件(plugin)的功能,虽然叫做插件,但其实这是拦截器功能.那么拦截器拦截MyBatis中的哪些内容呢? 我们进入官网看一看: MyBatis 允 ...

  4. 【Flex】正则表达式

    1.基本语法 . 匹配除换行符"\n"外的任意单个字符. * 匹配前面Flex正则表达式的零次或多次出现.eg:Alert.show("ThisBookIsGoodBoo ...

  5. 奇怪的Js时间计算方法,跨多个月后出现1天的误差

    在项目中要求用计算两个时间相差的天数,通俗的说就是两个时间 相减, 我的方法 先把两个时间转成相应的毫秒,相减后,再除以(1000 * 60 * 60 * 24) 就可以得到对应天数,但天数会比实际少 ...

  6. FlashFXP|FTP

    经典的FTP传输工具FlashFxp,留作几年吧!看和曾经用的软件代表着岁月的流逝和时间的推进性! 洒脱度过生活中的每一天.每一分钟,Mvpbang追随一生! 压缩包中有秘钥文件-flashfxp.k ...

  7. php学习手记

    在学习常量的时候,一直觉得奇怪 为啥常量的时候总是有个“.”在常量的后面,经过学习现在得知该点是 相当于Java当中的“+”用于连接字符 <?php header("Content-t ...

  8. jquery里的on方法使用

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <script src ...

  9. chrome编辑DOM

    来源于:https://developers.google.com/web/tools/chrome-devtools/inspect-styles/edit-dom The DOM tree vie ...

  10. 2016年GitHub 排名前 100 的安卓、iOS项目简介(收藏)

    排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果, 然后过滤了跟 Android 不相关的项目, 所以排名并不具备任何官方效力, 仅供参考学习, 方便初学者 ...