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