原创 使用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