1.T-SQL註解方式:

  a.單行 --

  b.多行 /* */

 

2.批次處理(batch processing)

  將數個操作及何在一起,在一次給系統處理。

  會在批次處理加GO表示為結束點。

 

3.區域變數與全域變數使用

  a.T-SQL中區域變數是給user定義和使用的。用@開頭

  b.全域變數是給系統做使用的。用@@開頭

  EX:區域變數宣告,指派值與輸出

 

4.撰寫T-SQL遵循步驟

--宣告區
DECLARE @MyIntVariable int
DECLARE @TodayDate date,
@Mychar char(20),
@MyVarChar varchar(20),
@OutStr01 varchar(40),
@OutStr02 varchar(40)

--指派區
SET @MyIntVariable = 10
SET @TodayDate = GETDATE()
SET @Mychar = 'sql sERVER'
SET @MyVarChar = '正在學習'

--運算區
SET @MyIntVariable = @MyIntVariable + 8
SET @OutStr01 = @MyChar + @MyVarChar
SET @OutStr02 = @MyVarChar + @MyChar

--輸出區
SELECT @MyIntVariable
SELECT @TodayDate
SELECT @OutStr01
SELECT @OutStr02

 

5.利用select 對區域變數指派及運算

--宣告變數

declare @EmpName varchar(10), @EmpBirthday date

--利用select 指派區域變數

select @EmpName = 'Melo' ,  @EmpBirthday = '1988-10-26'

--輸出變數區

select @EmpName + '先生' , @EmpBirthday

GO

 

6.從資料表取出資料,指派給區域變數

declare @EmpNo int , @EmpName varchar(10)

--從資料表取出資料存入區域變數,從資料表找 員工編號 姓名 再給區變

select @EmpNo = 員工編號 , @EmpName = 姓名

from 員工

where 員工編號 = 1

--利用select 輸出, 另外員工編號 姓名是指定欄位名稱

select @EmpNo as 員工編號, @EmpName as 員工姓名

go

note-1:

請注意上述是where 員工編號 = 1,所以只會Select 出一筆資料

如果去掉where 員工編號 = 1,那麼會select 出所有資料,那麼這個員工編號與姓名會不斷被replace,

直到最後一筆資料為止。

因此如果要輸出所有員工姓名可以如下:

declare @EmpName varchar(200) = ''
--將從資料表找出之資料給區域變數
select @EmpName = @EmpName + '[' + 姓名 + ']'
from 員工
--用SELECT 輸出
select @EmpName AS 所有員工姓名
GO

note-2:

NULL是一個很特別的值,與任何字串串連都會變成空值

--@my_str沒給值,所以預設給null

DECLARE @my_str varchar(10)

set @my_str = @my_str + 'Melo'

select @my_str

go

 

7.使用Table資料型別之區域變數

--宣告一個區域變數是一張資料表

declare @vFemaleEmp Table (EmpNo int Primary key,
EmpName varchar(20) not null,
EmpGender varchar(2))

--用select 查資料再塞入上述宣告資料表
insert @vFemaleEmp
select 員工編號,姓名,性別
from 員工
where 性別 = '女'

--將上述資料表與訂單合併
--這裡F再from有宣告是@vFemaleEm這張資料表
select F.* , 訂單.訂單編號 , 訂單.訂貨日期
from @vFemaleEmp as F , 訂單
where F.EmpNo = 訂單.員工編號 and
YEAR(訂貨日期) = 2006
order by F.EmpNo
go

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 melomelo1988 的頭像
    melomelo1988

    melo 唐

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