前言

旧没用又忘记了, 又没有 intellisense, 记入这里吧.

Reset Auto Increment

DBCC CHECKIDENT ('TableName'); -- check current
DBCC CHECKIDENT ('TableName', RESEED, 0); -- reset to 0, next is 1

On/Off Auto Increment

Set Identity_Insert [TableName] Off;
Set Identity_Insert [TableName] On; 

很神奇.. On 的时候 insert 需要 Id, Off 反而不需要 Id...这不是反了吗?

官网的解释: Allows explicit values to be inserted into the identity column of a table, On 就是 allow 插入 Id

Int to String with Leading Zero

SELECT FORMAT(1, 'd2') --01

d2 就 2 位数, 3 就 3位数, 以此类推

Declare and Set Value

go
declare @value nvarchar(max) = N'dada';
set @value = N'super';
-- select @value = count(*) from @table;
print @value;
go

If Else

go
declare @value2 nvarchar(30) = 'keatkeat2';
if(@value2 = 'keatkeat')
begin
print 'yes';
end
else
begin
print 'no';
end
go

Ternary Operator

declare @value nvarchar(max) = IIF(1, 'yes', 'no');

For Loop

go
declare @i int = 0;
while(@i < 10)
begin
print @i;
set @i = @i + 1;
end
go

Random String and Number

go

     SELECT CONVERT(INT, 5 * RAND())
SELECT SUBSTRING(CONVERT(varchar(255), NEWID()), 0, 9)
select NEWID();
go

Random Data for Test Performance

create table

CREATE TABLE [dbo].[Test] (
[Id] int NOT NULL IDENTITY,
[FirstName] nvarchar(450) NOT NULL DEFAULT '',
[LastName] nvarchar(450) NOT NULL DEFAULT '',
[Nickname] nvarchar(450) NOT NULL DEFAULT '',
[Age] int NOT NULL DEFAULT 0,
CONSTRAINT [PK_Test] PRIMARY KEY CLUSTERED ([Id] ASC)
);

loop insert data

go
declare @index int = 0;
declare @length int = 1000000; while (@index < @length)
begin
insert into Test
([FirstName], [LastName], [Nickname], [Age])
values
(
SUBSTRING(CONVERT(varchar(255), NEWID()), 0, 9),
SUBSTRING(CONVERT(varchar(255), NEWID()), 0, 9),
SUBSTRING(CONVERT(varchar(255), NEWID()), 0, 9),
CONVERT(INT, 200 * RAND())
);
set @index = @index + 1;
end
go

batch insert data

insert into Test ([FirstName], [LastName], [Nickname], [Age]) select
SUBSTRING(CONVERT(varchar(255), NEWID()), 0, 9),
SUBSTRING(CONVERT(varchar(255), NEWID()), 0, 9),
SUBSTRING(CONVERT(varchar(255), NEWID()), 0, 9),
CONVERT(INT, 200 * RAND())
from Test;

Create Variable Table and Loop

-- create temp table and loop it
go
declare @temp table (name nvarchar(max), [index] int identity(1,1));
insert into @temp (name) values ('keatkeat'), ('xinyao'); declare @i int = 0;
declare @length int;
select @length = count(*) from @temp;
while(@i < @length)
begin
declare @value nvarchar(max)
select @value = name from @temp order by [index] offset @i rows fetch next 1 rows only;
print @value;
set @i = @i + 1;
end
go

Select into + row number

select value, ROW_NUMBER() over(order by (select null)) as [RowNumber] from STRING_SPLIT('a,b,c', ',');

String Contains

declare @value nvarchar(max) = IIF('value' like '%lu%', 'yes', 'no');
--关键 'value' like '%lu%'

Date Format

参考: Stack Overflow – How to display the date as mm/dd/yyyy hh:mm Am/PM using sql server 2008 r2?

select FORMAT(cast('2022-12-01 09:07:02.805 +08:00' as datetimeoffset), 'MM/dd/yyyy hh:mm:s tt');

Date Adjustment

select CreatedDate, ValidHour, DATEADD(HOUR, ValidHour, CreatedDate) as ValidUntil from voucher;

Try Catch Throw

begin try
throw 50000, 'custom error',1;
end try
begin catch
print(ERROR_MESSAGE()); -- custom error.
print(ERROR_SEVERITY()); -- 16
print(ERROR_STATE()); -- 1
end catch

注: 在 if statment 里面 throw 要加分号 ; 哦. 参考: Stack Overflow – SQL only a throw inside if statement

Get First Row After Group By (use CTE)

with cte as
(
select FORMAT(DateCreated, 'dd-MMM hh:mm tt') as [Date], DateCreated, CustomerName, CustomerContact, CustomerEnquiry, CustomerAction, GoogleClickId,
ROW_NUMBER() over (partition by CustomerName, CustomerContact order by DateCreated desc) as RowNumber
from Conversion
where DateCreated >= '2023-02-17' and CustomerContact not like '%test%'
)
select [Date], CustomerName, CustomerContact, CustomerEnquiry, CustomerAction, GoogleClickId
from cte where RowNumber = 1 order by DateCreated desc;

Group by 后那每个 group 的第一条数据

Get All Table Column Name

SELECT STRING_AGG ('['+ COLUMN_NAME +']', ', ') AS [COLUMNS]
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = N'AccountsReceivable';

without computed column

select STRING_AGG ('['+ COLUMN_NAME +']', ', ') AS [COLUMNS]
from INFORMATION_SCHEMA.COLUMNS ColumnTable
left join sys.computed_columns ComputedColumnTable on
OBJECT_NAME(ComputedColumnTable.object_id) = ColumnTable.TABLE_NAME and ComputedColumnTable.[name] = ColumnTable.COLUMN_NAME
WHERE ComputedColumnTable.object_id is null and ColumnTable.TABLE_NAME = 'AccountsReceivable';

Testing Performance

DBCC DROPCLEANBUFFERS --清空执行计划缓存
DBCC FREEPROCCACHE --清空数据缓存
SET STATISTICS IO ON;
SET STATISTICS TIME ON; left join TestChild WITH (INDEX([IX_TestChild_TestId])) --强制使用 index -- 强制 join pattern
left hash join
left merge join
left loop join

Disable Index and Constraints

alter index [IX_IndexName] on [TableName] disable;
alter index [IX_IndexName] on [TableName] rebuild;

SQL Server – 我常用语句的更多相关文章

  1. SQL Server性能常用语句

    查看各表的数据行数 SELECT o.name, i. ROWS FROM sysobjects o, sysindexes i WHERE o.id = i.id AND o.Xtype = ORD ...

  2. SQL server 查询常用语句 2019.3.20

    SQL查询语句 select ...列名 from 表名 投影查询 select sno num,2019-sage as birthday // 给列起别名 from student: 在每个学生姓 ...

  3. SQL Server中常用的SQL语句(转):

    SQL Server中常用的SQL语句 转自:http://www.cnblogs.com/rainman/archive/2013/05/04/3060428.html 1.概述 名词 笛卡尔积.主 ...

  4. 处理SQL Server 异常常用步骤

    处理SQL Server 异常常用步骤 SQL Server常见的问题主要是SQL问题造成,常见的主要是CPU过高和阻塞. 一.CPU过高的问题 1.查询系统动态视图查询执行时间长的sql语句 WIT ...

  5. SQL Server数据库常用函数

    好久没学习新知识了.今天学了下sql的一些常用语句.人还是需要不断学习进步的 否则只能停滞不前. 先从最简单的一句开始说起吧. select *from 表名 这里*的含义 表示了表的各字段,以逗号隔 ...

  6. 【转载】SQL Server - 使用 Merge 语句实现表数据之间的对比同步

    原文地址:SQL Server - 使用 Merge 语句实现表数据之间的对比同步 表数据之间的同步有很多种实现方式,比如删除然后重新 INSERT,或者写一些其它的分支条件判断再加以 INSERT ...

  7. Sql server的Merge语句,源表中如果有重复数据会导致执行报错

    用过sql server的Merge语句的开发人员都应该很清楚Merge用来做表数据的插入/更新是非常方便的,但是其中有一个问题值得关注,那就是Merge语句中的源表中不能出现重复的数据,我们举例来说 ...

  8. SQL server 查看什么语句在使用临时表

    SQL server 查询那些语句在使用临时表 最近在日常的性能测试工作中发现,数据库端的IO读写比较大,有规律的2-8M的波动,数据库的版本为 SQL server 2008 sp3. 这些IO操作 ...

  9. SQL Server中常用的SQL语句

    1.概述 名词 笛卡尔积.主键.外键 数据完整性 实体完整性:主属性不能为空值,例如选课表中学号和课程号不能为空 参照完整性:表中的外键取值为空或参照表中的主键 用户定义完整性:取值范围或非空限制,例 ...

  10. MS SQL SERVER 2000 常用 Tran-SQL 语句

    一.创建数据库:create database mydb-创建数据库mydbon primary-在primary文件组中( name = mydb_data1,filename = 'd:\sql ...

随机推荐

  1. webpack4.15.1 学习笔记(七) — 懒加载(Lazy Loading)

    懒加载或者按需加载,是一种很好的优化网页或应用的方式.实际上是先把代码在一些逻辑断点处分离开,然后在一些代码块中完成某些操作后,立即引用或引用另外一些新的代码块.这样加快了应用的初始加载速度,减轻了它 ...

  2. Odoo 增加web后端的响应能力

    实践环境 Odoo 14.0-20221212 (Community Edition) web_responsive-14.0.1.2.1.zip https://apps.odoo.com/apps ...

  3. ComfyUI进阶:Comfyroll插件 (七)

    前言: 学习ComfyUI是一场持久战,而Comfyroll 是一款功能强大的自定义节点集合,专为 ComfyUI 用户打造,旨在提供更加丰富和专业的图像生成与编辑工具.借助这些节点,用户可以在静态图 ...

  4. 使用 useRequestEvent Hook 访问请求事件

    title: 使用 useRequestEvent Hook 访问请求事件 date: 2024/7/23 updated: 2024/7/23 author: cmdragon excerpt: 摘 ...

  5. 如何免费提取PDF里的图片-pdfimages使用教程

    写在前面 本随笔是非常菜的菜鸡写的.如有问题请及时提出. 可以联系:1160712160@qq.com GitHhub:https://github.com/WindDevil (目前啥也没有 动机 ...

  6. MySQL原始密码登录出现错误

    1.首先查看自己的MySQL安装目录下有没有data文件夹,和bin目录是同级的.要是有就删除,然后执行下列操作.没有就直接执行操作: 2. 以管理员身份运行 cmd.遇到个同学,可能我强调的不够明显 ...

  7. mybatis源码分析:Mapper接口是什么

    在<mybatis源码分析:启动过程>中分析了mybatis的启动过程,mybatis的启动过程主要集中在解析其核心配置文件(mybatis-config.xml)上,把配置文件中的配置全 ...

  8. cgroup限制进程cpu

    编写一个死循环脚本 [root@workstation ~]# cat circle.sh #!/bin/bash a=1 while true do let a++ done 查看top 使用cgr ...

  9. 使用Git bash切换Gitee、GitHub多个Git账号

    使用Git bash切换Gitee.GitHub多个Git账号 ​ Git是分布式代码管理工具,使用命令行的方式提交commit.revert回滚代码.这里介绍使用Git bash软件来切换Gitee ...

  10. 【Mybatis-Plus】制作逆向工具

    官方文档可参考: https://baomidou.com/pages/779a6e/#快速入门 工具需要的依赖 <?xml version="1.0"?> <p ...