原创 使用MERGE語句同步表

先建好測試環境: USE TEMPDB GO IF OBJECT_ID('T1') IS NOT NULL DROP TABLE T1 IF OBJECT_ID('T2') IS NOT NULL DROP TABLE T2

原创 MSSQL 行轉列

測試數據 if object_id('tb')is not null drop table tb go create table tb([年度] varchar(4),[部門] varchar(10), [考覈] int)

原创 如果碰到日誌文件過大的問題,用SHIRNK DATABASE, TRUNCATE LOG FILE不是很有效時,可以考慮試下下面的腳本

/* 如果碰到日誌文件過大的問題,用SHIRNK DATABASE, TRUNCATE LOG FILE不是很有效時,可以考慮試下下面的腳本。把代碼COPY到查詢分析器裏,然後修改其中的3個參數(數據庫名,日誌文件名,和目標日誌文件的大

原创 除非另外還指定了 TOP 或 FOR XML,否則,ORDER BY 子句在視圖、內聯函數、派生表、子查詢

報錯: 除非另外還指定了 TOP 或 FOR XML,否則,ORDER BY 子句在視圖、內聯函數、派生表、子查詢和公用表表達式中無效。 只要我們在嵌套子查詢視圖裏面加入:top 100 percent即可 例如: sele

原创 sql日期處理以及轉換

DECLARE @dt datetime SET @dt=GETDATE() DECLARE @number int SET @number=3 --1.指定日期該年的第一天或最後一天 --A. 年的第一天

原创 SQL Server數據庫表鎖定原理以及如何解除表的鎖定

1. 數據庫表鎖定原理 1.1 目前的C/S,B/S結構都是多用戶訪問數據庫,每個時間點會有成千上萬個user來訪問DB,其中也會同時存取同一份數據,會造成數據的不一致性或者讀髒數據.   1.2 事務的ACID原則

原创 Select * 一定不走索引是否正確?

走索引指的是:SQL語句的執行計劃用到了1、聚集索引查找  2、索引查找  ,並且查詢語句中需要有where子句 根據where子句的過濾條件,去聚集索引或非聚集索引那裏查找記錄 一張表只有一列的情況: 聚集索引   USE [te

原创 監控數據庫事物運行情況

SELECT DBT.DATABASE_ID, DB_NAME(DBT.DATABASE_ID) '數據庫名', DBT.TRANSACTION_ID, AT.NAME,

原创 SQL Server 觸發器

觸發器是一種特殊類型的存儲過程,它不同於之前的我們介紹的存儲過程。觸發器主要是通過事件進行觸發被自動調用執行的。而存儲過程可以通過存儲過程的名稱被調用。 Ø 什麼是觸發器     觸發器對錶進行插入、更新、刪除的時候會自動執行的特殊存儲

原创 生成索引信息及索引創建腳本

create proc p_helpindex @tbname sysname ='' ,@type char(1) = '1' as --生成索引信息及索引創建腳本 --@tbname 表名,空返回所有表索引 --@type 是

原创 數據庫中臨時表,表變量和CTE使用優勢極其區別

1 在寫SQL時經常會用到臨時表,表變量和CTE,這三者在使用時各有優勢: 1. 臨時表:分爲局部臨時表和全局臨時表.   1.1局部臨時表,創建時以#開頭,在系統數據庫tempdb中存儲. 在當前的鏈接可

原创 SQL生成n位隨機字符串

--1、藉助newid() go --創建視圖(因爲在函數中無法直接使用newid()) create view vnewid as select newid() N'MacoId'; go --創建函數 c

原创 sql生成1000W數據

declare @d datetime set @d=getdate() select * from dbo.ChunkSegmentMapping select [語句執行花費時間(毫秒)]=datediff(ms,@d,getdate

原创 sql進制之間的轉換

-----二進制轉換十進制----------------- select sum(data1) from ( select substring('11011', number, 1)*power(2,len('11011')-num

原创 sql查詢表大小行數以及使用空間

DECLARE @D DATETIME SET @D=GETDATE() SET NOCOUNT ON EXEC SP_MSFOREACHTABLE @PRECOMMAND=N' CREATE TABLE ##( ID INT ID