sql server用於運算元據庫的程式語言為transaction-sql,簡稱t-sql。t-sql與pl/sql不同,並沒有固定的程式結構。
t-sql包括以下4個部分:
ddl:定義和管理資料庫及其物件,例如create、alter和drop等。
dml:實現對資料庫表各物件的操作,例如insert、update等。
dcl:資料控制語言,實現對資料庫進行安全管理和許可權管理等控制,例如grant、revoke、deny等。
附加的語言元素。t-sql的附加語言元素,包括變數、運算子、函式、注釋和流程控制語句等。
在t-sql中,命令和語句的書寫是不區分大小寫的。
1、識別符號
①t-sql規則識別符號
②界定識別符號
對於不符合識別符號規則的識別符號,則要使用界定符方括號()或雙引號(「」)將識別符號括起來。如識別符號[my table]、「select」內分別使用了空格和保留字select。
2、資料型別
在sql server中提供了多種系統資料型別。除了系統資料型別外,還可以自定義資料型別。
①系統資料型別
(1)精確數字資料型別
(2)近似數字資料型別
(3)貨幣資料型別
(4)字元資料型別
(3)日期和時間資料型別
(4)二進位制資料型別
(5)專用資料型別
②程式中的資料型別
(1)cursor
資料能夠以駐留記憶體的狀態進行儲存。游標,與表類似,有資料行和列,但它們的相似之處僅限於此。不同之處如:游標沒有索引。通過使用游標來建立資料集,以便一次處理一行資料。
(2)table
table資料型別與游標和表有幾分相似之處。該資料型別用於儲存行和列的資料,但不能在資料上建索引。此時,系統可以「一次處理乙個資料集」的資料,就想處理乙個標準的表那樣。
(3)sql_varint
可以根據儲存的資料改變資料型別,即用來儲存一些不同型別的資料型別。不過強烈不推薦使用這種資料型別。
3、表示式
表示式常指由常量、變數、函式等通過運算子按一定的規則連線起來的有意義的式子。
1.變數
t-sql的變數分為區域性變數和全域性變數。
(1)區域性變數
區域性變數由使用者定義,一般出現在批處理、儲存過程和觸發器中,其作用範圍僅在程式內部。
區域性變數必須先宣告,後使用。t-sql還為區域性變數提供了賦值語句。
①declare變數宣告語句,其語法格式為:
declare @變數1 [as] datatype,@變數2 [as] datatype...
區域性變數的賦值有三種方式:
①在變數定義的時候對其賦值:
declare @變數1 [as] datatype = value,@變數2 [as] datatype = value...
②select賦值語句,其語法格式為:
select @變數1 = 表示式1,@變數2 = 表示式2...
③set賦值語句,其語法格式為:
set @變數 = 表示式
【示例】
declare @sumsal as numeric(10,2),@dno as tinyint select @dno = deptno,@sumsal = sum(sal) from emp where deptno = 10 group by deptno print cast(@dno as varchar)+':'+cast(@sumsal as varchar)
(2)全域性變數
全域性變數由sql server系統定義,通常用來跟蹤伺服器範圍和特定會話期間的資訊,不能被使用者顯式地定義和賦值。可以通過訪問全域性變數來了解系統目前的一些狀態資訊。
全域性變數名以@@開頭。下面給出一些常用的全域性變數。
全域性變數
說明@@error
上一條sql語句報告的錯誤號
@@nestlevel
當前儲存過程或觸發器的巢狀級別
@@rowcount
上一條sql語句處理的行數
@@servername
本地伺服器名稱
@@identity
最後插入的標識值
@@spid
當前使用者程序的會話id
@@fetch_status
上一條游標fetch語句的狀態
@@cpu_busy
sql server自上次啟動後的時間狀態
@@trancount
當前的使用者連線的當前活動事務數
2.邏輯處理
(1)if ... else ...
格式:
if表示式 begin
條件成立處理語句
endelse
begin
條件不成立處理語句
end
例如:
declare@iint
set@i= 1
if@i
>
0begin
select
convert(varchar(10),@i)+
'大於0'as
提示資訊
endelse
begin
select
convert(varchar(10),@i)+
'小於0'as
提示資訊
end
3.函式
函式是用來完成某種特定功能,並返回處理結果的一組t-sql語句,處理結果成為「返回值」,處理過程成為「函式體」。
函式又分為系統內建函式和使用者自動以函式。sql server提供了大量系統內建函式,主要可以分為以下幾類:數學函式、字串函式、日期函式、convert函式、聚合函式。
(1)數學函式
t-sql中提供的常用的數學函式如下:
(2)字串函式
(3)日期和時間函式
首先列出日期時間函式中的重要引數。
日期時間元素
縮寫含義
year
yy,yyyy
年month
m,mm
月day
d,dd
日dayofyear
dy年的天數
week
wk星期數
weekday
dw星期幾
hourhh時
minutemi分
quarterqq刻
secondss秒
millisecond
ms毫秒
t-sql中提供下列日期函式:
涉及日期時間常量時,sql server建議使用與dateformat及語言環境設定無關的字串格式,通常這樣的字串常量符合下面兩種形式:(4)資料型別轉換函式
轉換的方式有隱式轉換和顯式轉換兩種。
隱式轉換是sql server自動地將資料從一種資料型別轉換為另一種資料型別,使用者不可見。
顯式轉換使用convert函式,該函式可以將一種資料型別的表示式強制轉換為另一種資料型別的表示式。兩種資料型別必須能夠進行轉換,例如,char值可以轉換為binary,但不能轉換為image。該函式的主要作用是把數值型或日期型資料轉換為字串,而只包含數字的字串轉換為數值型資料一般隱式轉換。
格式:convert(資料型別(長度),表示式[,n])
函式的第4個引數n是可選的,用於日期時間型資料型別和字元資料型別轉換。引數取值如下表所示。
不帶世紀數字
帶世紀數字格式1
101mm/dd/yyyy
2102
yy.mm.dd
3103
dd/mm/yyyy
4104
dd.mm.yy
5105
dd-mm-yy
8108
hh:mi:ss
20或120
yyyy-mm-dd hh:mi::ss(24h)
【示例】
select ename+''''+'s sal is'+convert(char(7),sal) as 'employee's sal' from emp;
select cid as '客戶id',cname as '客戶名稱' convert(char(10),cregisterationdate,102) as '註冊日期' from customer; 最終顯示的日期格式就會如2006.12.02
3.運算子
算術運算子:+、-、*、/、%(求餘)
字串運算子:+(連線)
比較運算子:=、>、>=、<、<=、<>(不等於)、!>(不大於)、!<(不小於)
邏輯運算子:not、and、or、all(所有)、any(或some,任意乙個)、between...and、exists(存在)、in(在範圍內)、like(匹配)
按位運算子:&(位與)、|(位或)、^(按位異或)
一元運算子:+(正)、-(負)、~(按位取反)
賦值運算子:=(等於)
t-sql 簡介及基本語法
sql server t sql語句總結
1.宣告變數 declare name nvarchar 10 宣告 set name 武大 賦值 print name 輸出 2.檢視全域性變數 print servername select version 檢視當前資料庫版本 select from classinfo insert into ...
SQL server T SQL儲存過程
儲存過程是由一些sql語句和控制語句組成的被封裝起來的過程,它駐留在資料庫中,可以被客戶應用程式呼叫,也可以從另乙個過程或觸發器呼叫。它的引數可以被傳遞和返回。與應用程式中的函式過程類似,儲存過程可以通過名字來呼叫,而且它們同樣有輸入引數和輸出引數 儲存過程的好處 1.由於資料庫執行動作時,是先編譯...
SQLServer TSQL 游標使用語法
t sql api 客戶端游標 開啟游標 open cursor name 檢索游標記錄 fetch cursor name fetch first fetch next fetch prior fetch last fetch absolute n fetch relative n 關閉游標 cl...