~relax~
這是一個悠閒放鬆的部落格,請用輕鬆的心情閱讀文章,在忙碌工作之餘療癒自己的身心。 (最近發現我的文章被複製轉貼且沒有註明出處,本部落格的文章皆為原創,若有引用參考也會註明,如有需求請留言告知,謝謝!)

目前分類:SQL/SQL Server (14)

瀏覽方式: 標題列表 簡短摘要

工作上突然有一個遞迴的需求

需求並不複雜, 用程式就能簡簡單單的寫完

但是SQL語法非常不熟練的我, 突然想說 來練練SQL語法好了 (加上懶得再改程式...)

所以就來研究了一下SQL的遞迴寫法

 

文章標籤

伊 發表在 痞客邦 留言(0) 人氣()

[T-SQL] Transaction 用法

Transaction(交易,大陸譯名:事务)

將多個資料庫操作的 SQL 指令 group 成一個執行的單元區塊( a single execution unit ),以特定的字串( Begin Transaction )來標記交易開始,一個交易可能包括了多個資料庫操作指令來完成,交易結束時的動作有兩個,若所有的操作全部執行成功,交易才算成功並提交變更( Commit Transaction ),若當中有發生錯誤失敗,則整個交易宣告失敗並回復所有變更( Rollback Transaction )。

例:

DECLARE @chk tinyint

文章標籤

伊 發表在 痞客邦 留言(0) 人氣()

1. DB > Task > Copy Database

2. Next


文章標籤

伊 發表在 痞客邦 留言(0) 人氣()

本文參考自 : http://bigone2000.pixnet.net/blog/post/56194164

1.  對查詢進行優化,應儘量避免全表掃描,首先應考慮在 where 及 order by 涉及的列上建立索引。

2.  應儘量避免在 where 子句中對欄位進行 null 值判斷,否則將導致引擎放棄使用索引而進行全表掃描,如:
   select id from t where num is null
   可以在num上設置預設值0,確保表中num列沒有null值,然後這樣查詢:

文章標籤

伊 發表在 痞客邦 留言(0) 人氣()

SELECT * FROM table WHERE Column LIKE '%test%'

SELECT * FROM table WHERE Contains(Column, "test")>0


文章標籤

伊 發表在 痞客邦 留言(0) 人氣()

需求說明:

1. 如果[A表格]裡面的[aa欄位]有值,比對[B表格的aa欄位]與[A表格的aa欄位]是否相符,相符才顯示B的資料。

2. 如果[A表格]的[aa欄位]沒有值,就不管B表格的aa欄位是否相符。

可用以下的方式:
 

文章標籤

伊 發表在 痞客邦 留言(0) 人氣()

SQL並沒有LastIndexOf語法,但可以用下述方式達到LastIndexOf的效果:

範例:從檔案路徑(C:\backup\2010\file123.txt)取得檔名(file123.txt),分隔字元為「\」。

RIGHT(filepath, CHARINDEX('\',REVERSE(filepath))-1)

 

指令語法說明:

文章標籤

伊 發表在 痞客邦 留言(0) 人氣()

如果你的資料庫,原本是放在SQL 2008 Express裡,後來要改放到客戶的空間,是使用SQL 2005的版本,在匯入時,會無法匯入,並且出現要先降級的訊息,可以利用以下方式,把版本改成2005版。
步驟:

進入Microsoft SQL Server Management Studio
資料庫按右鍵-->工作-->產生指令碼。

伊 發表在 痞客邦 留言(0) 人氣()

相信SQL語法的迴圈While大家都會用。
但遇到要將select過後的資料表的資料錄一筆一筆寫到新資料表時,該怎麼辦呢?

-- 宣告變數
DECLARE @變數1 VARCHAR(50) 
DECLARE @變數2 VARCHAR(50)
DECLARE @變數3 VARCHAR(50)

-- 指定變數, 視個人需要, 也可不指定初始值
SET @變數1 ='字串' 
SET @變數2 ='字串' 
SET @變數3 ='字串' 

-- 重點!! 宣告指標變數
DECLARE 指標變數 CURSOR FOR
SELECT 欄位1 ,欄位2 ,欄位3 FROM TABLE1

-- 啟用指標變數
OPEN 指標變數
-- 以指標變數為基準點, 將取出的欄位值, 設定給我們自訂的變數
FETCH NEXT FROM 指標變數 INTO @變數1,@變數2,@變數3

WHILE @@FETCH_STATUS = 0
BEGIN 
    insert into TABLE2(欄位1 ,欄位2 ,欄位3) values(@變數1,@變數2,@變數3)

    -- 指標變數往下移動, 並將取出的欄位值, 設定給我們自訂的變數
    FETCH NEXT FROM 指標變數 INTO @變數1,@變數2,@變數3
END

-- 關閉指標變數
CLOSE 指標變數
-- 釋放指標變數
DEALLOCATE 指標變數

伊 發表在 痞客邦 留言(1) 人氣()

SELECT INTO 產生資料表並查詢:

語法:
SELECT [TABLE1].FIELD1,[TABLE2]FIELD2,[TABLE2]FIELD3
INTO [TABLE]
FROM [TABLE1] INNER JOIN [TABLE2] ON [TABLE1].FIELD1=[TABLE2].FIELD1

說明:

文章標籤

伊 發表在 痞客邦 留言(0) 人氣()

WHERE條件

SELECT 欄位
FROM 表格名
WHERE Condition(運算式)

文章標籤

伊 發表在 痞客邦 留言(0) 人氣()

https://www.1keydata.com/tw/sql/sql.html


伊 發表在 痞客邦 留言(0) 人氣()

當資料庫越來越肥大...就需要壓縮一下資料庫
SQLServer資料庫壓縮.jpg


伊 發表在 痞客邦 留言(0) 人氣()

GROUP BY應用,計算平均成績:
select 學號, avg(成績) as 平均成績
from 成績表
group by 學號
order by avg(成績) desc

文章標籤

伊 發表在 痞客邦 留言(0) 人氣()