
T-SQL系列
文章平均质量分 68
黑暗中的光芒
为数据生为数据死
展开
-
监控数据库事物运行情况
SELECT DBT.DATABASE_ID, DB_NAME(DBT.DATABASE_ID) '数据库名', DBT.TRANSACTION_ID, AT.NAME, AT.TRANSACTION_BEGIN_TIME, CASE AT.TRANSACTION_TYPE原创 2015-01-29 09:36:28 · 979 阅读 · 0 评论 -
sql常用作业定义的T-SQL模板
--定义创建作业DECLARE @jobid uniqueidentifierEXEC msdb.dbo.sp_add_job @job_name = N'作业名称', @job_id = @jobid OUTPUT --定义作业步骤DECLARE @sql nvarchar(400),@dbname sysnameSELECT @dbname=DB_N原创 2014-09-29 11:43:35 · 1348 阅读 · 0 评论 -
sql分级汇总
--测试数据create table tb([DB-ID] varchar(10),ENTITY varchar(10),DATE varchar(10),[CUST-NO] int,AMOUNT decimal(10,2),TAX decimal(10,2))insert tb select 'RCHQ','001','2004-11-10',200000,100.00,17.00u原创 2014-09-29 11:30:08 · 2018 阅读 · 0 评论 -
生成索引信息及索引创建脚本
create proc p_helpindex @tbname sysname ='' ,@type char(1) = '1'as--生成索引信息及索引创建脚本--@tbname 表名,空返回所有表索引--@type 是否显示聚集索引,1显示聚集索引,2不显示聚集索引--调用:p_helpindex 'dbo.customers','1'with t as (select r原创 2014-09-25 17:28:22 · 1577 阅读 · 0 评论 -
Group by ALL
Group by ALL 。和不加ALL差别就是加了ALL后包含所有组和结果集,甚至包含那些其中任何行都不满足 WHERE 子句指定的搜索条件的组和结果集。注意的是指定了 ALL,将对组中不满足搜索条件的汇总列返回空值。declare @t table(id int,col char(2))insert @t select 1,'a'insert @t select 1,'a'inser原创 2014-09-25 13:41:23 · 1843 阅读 · 1 评论 -
SQL四个排名函数的区别
/*四个排名函数的区别:RANK()返回结果集的分区内每行的排名。行的排名是相关行之前的排名数加一。如果两个或多个行与一个排名关联,则每个关联行将得到相同的排名。 DENSE_RANK()返回结果集分区中行的排名,在排名中没有任何间断。行的排名等于所讨论行之前的所有排名数加一。如果有两个或多个行受同一个分区中排名的约束,则每个约束行将接收相同的排名。 ROW_NUMBER()原创 2014-09-24 14:27:29 · 1470 阅读 · 0 评论 -
sql日期补全
IF OBJECT_ID('TBL')IS NOT NULLDROP TABLE TBLGOCREATE TABLE TBL(日期 DATE)GOINSERT TBLSELECT '2014-09-30' UNION ALLSELECT '2014-10-06'goDECLARE @DATE DATESELECT @DATE=MAX(日期) FROM TBL;WITH原创 2014-09-23 11:14:42 · 2323 阅读 · 0 评论 -
CTE 通用表表达式
概念:Common Table Expression,简称CTE,中文可以叫做,通用表表达式. 用处:处理以前版本中SQL不好现实,不好理解,复杂的查询问题.比如:分页,递归查询... 基本用法: WITH ()AS() SELECT * FROM 示例一(基本用法): with MyCTE(ID, Name)as( select原创 2014-09-01 17:54:32 · 848 阅读 · 0 评论 -
SQL SERVER 表结构信息查询(详细)
SELECT 表名=CASE WHEN a.colorder = 1 THEN d.name ELSE '' END, 表说明=CASE WHEN a.colorder = 1 THEN isnull(f.value, '') ELSE '' END , 字段序号=a.colorder , 字段名=a.name , 标识=CASE WHEN COLUMNPR原创 2014-09-01 17:36:58 · 815 阅读 · 0 评论 -
比较两个数据库中的视图/存储过程的结构(结构比较,不是功能比较)
CREATE PROC P_COMPDB@DB1 SYSNAME, --第一个库@DB2 SYSNAME --第二个库ASEXEC('SELECT 类型=CASE ISNULL(A.XTYPE,B.XTYPE) WHEN ''V'' THEN ''视图'' ELSE ''存储过程'' END ,匹配情况=CASE WHEN A.NAME原创 2014-09-29 11:42:07 · 811 阅读 · 0 评论 -
SQL Server数据库表锁定原理以及如何解除表的锁定
1. 数据库表锁定原理1.1 目前的C/S,B/S结构都是多用户访问数据库,每个时间点会有成千上万个user来访问DB,其中也会同时存取同一份数据,会造成数据的不一致性或者读脏数据. 1.2 事务的ACID原则 1.3 锁是关系数据库很重要的一部分, 数据库必须有锁的机制来确保数据的完整和一致性.1.3.1 SQL Server中可以原创 2014-10-09 13:10:35 · 1979 阅读 · 0 评论 -
数据库中临时表,表变量和CTE使用优势极其区别
数据库中临时表,表变量和CTE使用优势极其区别原创 2014-10-09 12:48:09 · 1210 阅读 · 0 评论 -
SQL Server 触发器
触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程。触发器主要是通过事件进行触发被自动调用执行的。而存储过程可以通过存储过程的名称被调用。Ø 什么是触发器 触发器对表进行插入、更新、删除的时候会自动执行的特殊存储过程。触发器一般用在check约束更加复杂的约束上面。触发器和普通的存储过程的区别是:触发器是当对某一个表进行操作。诸如:update、insert、del原创 2014-11-07 17:19:42 · 914 阅读 · 0 评论 -
Select * 一定不走索引是否正确?
select * 一定不走索引是否正确?原创 2014-10-21 15:22:36 · 3676 阅读 · 0 评论 -
sql进制之间的转换
-----二进制转换十进制-----------------select sum(data1)from ( select substring('11011', number, 1)*power(2,len('11011')-number)data1 from (select number from master.dbo.spt_values where type='p原创 2014-11-27 10:55:30 · 2243 阅读 · 0 评论 -
sql日期处理以及转换
DECLARE @dt datetime SET @dt=GETDATE() DECLARE @number int SET @number=3 --1.指定日期该年的第一天或最后一天 --A. 年的第一天 SELECT CONVERT(char(5),@dt,120)+ '1-1 ' --B. 年的最后一天 SELECT CONVERT(char(5)原创 2014-11-27 09:22:14 · 1229 阅读 · 1 评论 -
sql生成1000W数据
declare @d datetimeset @d=getdate()select * from dbo.ChunkSegmentMappingselect [语句执行花费时间(毫秒)]=datediff(ms,@d,getdate())USE tempdbGOCREATE TABLE tb(id char(8))CREATE UNIQUE INDEX IX_tb ON tb(id原创 2014-11-27 09:19:41 · 1404 阅读 · 0 评论 -
sql查询表大小行数以及使用空间
DECLARE @D DATETIMESET @D=GETDATE()SET NOCOUNT ON EXEC SP_MSFOREACHTABLE @PRECOMMAND=N'CREATE TABLE ##(ID INT IDENTITY,表名 SYSNAME,字段数 INT,记录数 INT,保留空间 NVARCHAR(20),使用空间 VARCHAR(20),索引使用空间原创 2014-10-14 18:23:40 · 2145 阅读 · 0 评论 -
SQL生成n位随机字符串
--1、借助newid() go --创建视图(因为在函数中无法直接使用newid()) create view vnewid as select newid() N'MacoId'; go --创建函数 create function getrandstr(@n int) returns varchar(max) as begin decla原创 2014-09-30 12:44:21 · 6004 阅读 · 0 评论 -
数据库大型应用解决方案总结
随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的互联网应用,每天百万级甚至上亿的PV无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题。一、负载均衡技术负载均衡集群是由一组相互独立的计算机系统构成,通过常规网络或专用网络进行连接,由路由器衔接在一起,各节点相互协作、共同负载、均衡压力,对客户端来说,整个群集可以视为一台具有超高原创 2014-10-09 13:34:09 · 717 阅读 · 1 评论 -
SQL查询和删除重复记录
--处理表重复记录(查询和删除)/******************************************************************************************************************************************************1、Num、Name相同的重复值记录,没有大小关系只保留一条原创 2014-09-01 16:46:29 · 1262 阅读 · 0 评论 -
SQL使用递归实现数据的累加
--关于递归累计求和 if OBJECT_ID('test')is not null drop table test go create table test( id int identity(1,1), deptid char(3), empid char(4), salary int ) go insert test(deptid,empid,sala原创 2014-09-01 18:07:00 · 1993 阅读 · 0 评论 -
SQL使用apply进行拆分列值
--SQL2005以上版本可以结合apply进行拆分列值IF OBJECT_ID('tb') IS NOT NULL DROP TABLE tbGOCREATE TABLE tb (id INT,col VARCHAR(30))INSERT INTO tb VALUES(1,'aa,bb')INSERT INTO tb VALUES(2,'aaa,bbb,ccc')GO S原创 2014-09-01 17:22:03 · 720 阅读 · 0 评论 -
用SQL语句生成某个库下所有存储过程脚本,并每个存为一个文件
DECLARE @s VARCHAR(4000),@n INT,@i INT,@s1 VARCHAR(100)SELECT IDENTITY(INT) id,text INTO ## FROM syscommentsSELECT @n=@@ROWCOUNT,@i=0WHILE @i<@n BEGIN SELECT @i=@i+1,@s=''原创 2014-08-27 13:41:48 · 897 阅读 · 0 评论 -
查询 SQL Server 系统目录常见问题
查询 SQL Server 系统目录常见问题SQL Server 2014其他版本此主题尚未评级 - 评价此主题本主题包含一个常见问题列表。 这些问题的答案是基于目录视图的查询。常见问题下列部分按类别列出常见问题。数据类型如何找到指转载 2014-08-27 12:50:05 · 882 阅读 · 0 评论 -
使用MERGE语句同步表
先建好测试环境: USE TEMPDBGOIF OBJECT_ID('T1') IS NOT NULL DROP TABLE T1IF OBJECT_ID('T2') IS NOT NULL DROP TABLE T2GOCREATE TABLE T1(ID1 INT,VAL1 VARCHAR(50))CREATE TABLE T2(ID2 INT,VAL2 VARCHAR(5原创 2014-08-27 13:06:19 · 1649 阅读 · 0 评论 -
T-SQL系列之附加数据库
--附加数据库sp_attach_db '数据库名','数据库全路径','数据库日志全路径'GOUSE 数据库名--添加一个登录前指定默认数据库EXEC sp_addlogin '登录名','密码','数据库名'GO--处理空登录名(使登录用户和数据库的孤立用户对应起来,在这个用户有对象时用)sp_change_users_login 'update_one','登录原创 2014-08-27 12:18:19 · 1029 阅读 · 0 评论 -
T-SQL系列之合并多行查询数据到一行:FOR XML PATH
/*FOR XML PATH之前已经说了一些FOR XML (AUTO,RAW)的使用,下面说一说FOR XML PATH 模式的使用.AUTO,RAW模式可以满足大多数的XML格式需求,PATH模式可以提供其他的一些格式功能.*/--1.控制层次/*使用PATH模式,你可以生成XML节点的层次结构.XML的层次是通过列的别名来控制的.下面的查询中增加了一个新的包含了NAME,Ph原创 2014-08-25 18:55:58 · 919 阅读 · 0 评论 -
T-SQL系列之MSSQL_未公开的扩展存储过程
--sqlserver_未公开的扩展存储过程(dba常用语句) 2013-5-23 -- 1、查看当前SQL版本 EXEC master..sp_MSgetversion EXEC master..xp_msver -- 2、列出C:\盘下所有文件夹,包括二级目录,省略第二个参数时,默认为(显示根目录下文件夹) EXEC master..xp_dirtree 'c原创 2014-08-20 16:20:31 · 627 阅读 · 0 评论 -
T-SQL系列之查看所有数据库大小、恢复模式等信息(MSSQL)
-- 查看所有数据库大小、恢复模式等信息SELECT substring (DatabaseName,0,20) as DatabaseName,DataSize,LogSize,DataSize+LogSize AS TotalSize, Collation, RecoveryType,AutoClose,AutoShrinkFROM (SELECT DBID,CASE Sum(siz原创 2014-08-19 17:14:00 · 824 阅读 · 0 评论 -
T-SQL系列之所有数据库备份情况(MSSQL)
--所有数据库备份情况set nocount ongodeclare @counter smallintdeclare @dbname varchar(100)declare @db_bkpdate varchar(100)declare @status varchar(20)declare @svr_name varchar(100)declare @me原创 2014-08-19 17:15:50 · 624 阅读 · 0 评论 -
SQL生成n位随机字符串
--1、借助newid()go--创建视图(因为在函数中无法直接使用newid())create view vnewidasselect newid() N'MacoId';go--创建函数create function getrandstr(@n int)returns varchar(max)asbegin declare @i int set @i=ce原创 2014-08-27 14:20:38 · 844 阅读 · 0 评论 -
使用邮件发送运行时间久的SQL语句
ALTER proc [dbo].[usp_EmailLongRunningSQL]asbegindeclare@LongRunningQueries AS TABLE( lrqId int IDENTITY(1,1) PRIMARY KEY, spid int NULL, batch_duration bigintNULL, program_namenvarchar(50原创 2014-08-27 12:45:44 · 1358 阅读 · 0 评论 -
MSSQL 行转列
测试数据[sql] view plaincopy在CODE上查看代码片派生到我的代码片if object_id('tb')is not null drop table tb go create table tb([年度] varchar(4),[部门] varchar(10), [考核] int) insert tb values('2012','业务部',86) inse原创 2014-08-27 13:24:08 · 1059 阅读 · 0 评论 -
SQL合并统一数据(相同的在一行显示)
/*问题描述表Library有字段 表EmployeeInfo 字段LibraryId EmpIdEmpIdLibraryTitleLibraryOwner Name测试表Library数据为insert into Library(EmpId,LibraryTitle,Nam原创 2014-09-01 17:27:37 · 3810 阅读 · 0 评论 -
T-SQL系列之查看各个数据库性能负载(MSSQL)
-- 查看各个数据库性能负载SELECTsubstring (a.name,0,20) as [数据库名],[连接数] = (SELECT COUNT(*)FROM master..sysprocesses bWHEREa.dbid = b.dbid),[阻塞进程] = (SELECT COUNT(*)FROM master..sysprocesses bWHEREa.dbi原创 2014-08-19 17:16:05 · 1940 阅读 · 0 评论 -
快速生成数据库字典
快速生成数据库字典原创 2014-09-12 14:59:58 · 2586 阅读 · 0 评论 -
快速生成100W数据
declare @d datetimeset @d=getdate()select * from dbo.ChunkSegmentMappingselect [语句执行花费时间(毫秒)]=datediff(ms,@d,getdate())USE tempdbGOCREATE TABLE tb(id char(8))CREATE UNIQUE INDEX IX_tb ON tb(id原创 2014-09-12 14:54:39 · 1024 阅读 · 0 评论 -
除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询
top 100 percent原创 2014-09-12 14:54:55 · 5193 阅读 · 0 评论 -
SQL检查存储过程是否包含关键字
SELECT A.NAME FROM SYS.ALL_OBJECTS A,SYS.SQL_MODULES B WHERE A.IS_MS_SHIPPED=0 AND A.OBJECT_ID = B.OBJECT_ID AND A.[TYPE] IN ('P','V','AF') AND [DEFINITION] LIKE '% %'--存储过程包含的关键字ORDER BY A.[NAME]原创 2014-09-11 09:09:38 · 1903 阅读 · 0 评论