前言
Transact-SQL語言是結構化查詢語言的增強版本,與多種ANSI SQL標準兼容,而且在標準的基礎上還進行了許多的擴展。Transact-SQL代碼是SQL Server的核心,使用Transact-SQL可以實現關係數據庫中的數據查詢、操作和添加功能。本篇博客將詳細講解Transact-SQL語言的基礎中的標識符起名規則以及常量和變量的使用方法。
內容導航:
- Transact-SQL概述
- 標識符起名規則
- 常量的使用方法
- 變量的使用方法
Transact-SQL概述
什麼是Transact-SQL?
在SQL Server中,所有與服務器實例的通信,都是通過發送Transact-SQL語句到服務器來實現的。根據其完成的功能,可以分成4大類,分別爲數據庫操作語句、數據定義語句、數據控制語句和一些附加的語言元素。
1、數據操作語句:
SELECT,INSERT,DELETE,UPDATE
2、數據定義語句:
CREATE TABLE,DROP TABLE,ALTER TABLE,CREATE VIEW,DROP VIEW,CREATE INDEX,DROP INDEX,CREARE PROCEDURE,
ALTER PROCEDURE,DROP PROCEDURE,CREATE TRIGGER,DROP TRIGGER,ALTER TRIGGER
3、數據控制語句:
GRANT,DENY,REVOKE
4、附加的語言元素:
BEGIN TRANSACTION/COMMIT,ROLLBACK,SET TRANSACTION,DECLARE OPEN,FETCH,CLOSE,EXECUTE
Transact-SQL語法的約定
語法約定
約定 | 用於 |
---|---|
大寫 | Transact-SQL關鍵字 |
斜體 | 用戶提供的Transact-SQL語法的參數 |
粗體 | 數據庫名、表名、列名、索引名、存儲過程、實用工具、數據類型名以及必須按所顯示的原樣輸入的文本 |
下劃線 | 指示當語句中省略了帶下劃線的值的子句中,應用的默認值 |
| (豎線) | 分割括號或大括號中語法項。只能使用其中一項 |
[ ] (方括號) | 可選語法項。不要輸入方括號 |
{ }(大括號) | 必選語法項。不要輸入大括號 |
[,…n] | 指示前面的項可以重複n次。各項之間以逗號分隔 |
[…n] | 指示前面的項目可以重複n次。每一項由空格分隔 |
; | Transact-SQL語句終止符。雖然在此版本的 SQL Server 中大部分語句不需要分號,但將來的版本中需要 |
<label>::= | 語法塊的名稱。此約定用於對可在語句中的多個位置使用的過長語法段或語法單元進行分組和標記。可使用語法塊的每個位置,由括在尖括號內的標籤指示:<標籤> |
引用對象名格式
引用對象名格式 | 說明 |
---|---|
server.database.schema.object | 4個部分的名稱 |
server.database…object | 省略架構名稱 |
server…schema.object | 省略數據庫名稱 |
server…object | 省略數據庫和架構名稱 |
database.schema.object | 省略服務器名 |
database…object | 省略服務器名和架構名稱 |
schema.object | 省略服務器名和數據庫名稱 |
object | 省略服務器、數據庫和架構名稱 |
標識符起名規則
1.標識符分類
SQL Server 定義了兩種類型的標識符:規則標識符和界定標識符。
2.規則標識符
在Transact-SQL中凡是規則標識符都不必使用界定符,對於不符合標識符格式的標識符要使用界定符[ ] 或則單引號 ‘ ’。
3.界定標識符
界定標識符是那些使用瞭如 [ ] 和‘ ’ 等界定符號來進行位置限定的標識符,使用界定標識符既可以遵守標識符命名規則,也可以不遵守標識符命名規則。
4.標識符規則
標識符的首字母必須是以下2種情況之一:
- 第一種情況:所有在Unicode 2.0 標準規定的字符,包括26個英文字母 a~z 和 A~Z,以及其他一些語言字符,如漢字。
- 第二種情況:“_”、“@”或“#”。
標識符首字母后的字符必須是以下3種情況之一:
- 第一種情況:所有在Unicode 2.0 標準規定的字符,包括26個英文字母 a~z 和 A~Z,以及其他一些語言字符,如漢字。
- 第二種情況:“_”、“@”或“#”。
- 第三種情況:0,1,2,3,4,5,6,7,8,9。
標識符不允許是Transact-SQL的保留字:Transact-SQL不區分大小寫,所以無論是保留字的大寫還是小寫都不允許使用。
5.對象命名規則
SQL Server 數據庫管理系統中的數據庫對象名稱由1~128個字符組成,不區分大小寫。在一個數據庫中創建了一個數據庫對象後,應該由服務器名、數據庫名、包含對象的架構名和對象名4個部分組成。
6.實例的命名規則
在SQL Server 數據庫管理系統中,默認實例的名字採用計算機名,實例的名字一般由計算機名和實例名兩部分組成。
常量的使用方法
常量也稱爲文字值或標量值,是表示一個特定數據值的符號。常量的格式取決於它所表示的值的數據類型。一個常量通常有一種數據類型和長度,這二者取決於常量格式。根據數據類型的不同,常量可以分爲如下幾類:數字常量、字符串常量、日期和時間常量和符號常量。
數字常量
數字常量包括有符號和無符號的整數、定點數和浮點小數。
integer 整數
2000
2
decimal 小數
200.022
2.0
float 和real 使用科學計數法
100.2E2
0.3E-2
money
$ 100
¥ 5000.52
字符串常量
1.字符串常量
字符串常量括在單引號內幷包含字母和數字字符(a~z,A~Z,0~9)以及特殊字符,如感嘆號(!)、at(@)和數字號(#)。
2.Unicode字符串
Unicode字符串的格式與普通字符串相似,但它前面有一個N標識符。
日期和時間常量
日期和時間常量使用特定格式字符日期值來表示,並用單引號括起來。
'December 5,1994'
'5 December,1994'
'941205'
'12/5/94'
符號常量
1.分隔符
Transact-SQL中,雙引號有兩層意思。除了引用字符串之外,雙引號還能夠用來做分隔符。
2.標識符
Transact-SQL中,標識符用於識別數據庫對象,如數據庫,表和索引。
變量的使用方法
全局變量
全局變量是SQL Server系統內部使用的變量,其作用範圍並不僅僅侷限於某一程序,而是任何程序均可以隨時調用。全局變量通常存儲一些SQL Server的配置設定值和統計數據。用戶可以在程序中用全局變量來測試系統的設定值或者是Transact-SQL命令執行後的狀態值。
使用全局變量時應該注意以下幾點:
- 全局變量不是由用戶的程序定義的,它們是在服務器級定義的。
- 用戶只能使用預先定義的全局變量。
- 引用全局變量時,必須以標記符“@@”開頭。
- 局部變量的名稱不能與全局變量的名稱相同,否則會在應用程序中出現不可預測的結果。
SELECT @@ERROR 返回最後執行的 Transact-SQL 語句的錯誤代碼(integer) (0,表示沒錯誤;1,表示有錯誤)
SELECT APP_NAME ( ) as w --當前會話的應用程序
SELECT @@IDENTITY --返回最後插入的標識值
SELECT USER_NAME() --返回用戶數據庫用戶名
SELECT @@CONNECTIONS --返回自上次SQL啓動以來連接或試圖連接的次數。
SELECT GETDATE() --當前時間
SELECT @@CPU_BUSY/100 --返回自上次啓動SQL 以來 CPU 的工作時間,單位爲毫秒
USE tempdb SELECT @@DBTS as w --爲當前數據庫返回當前 timestamp 數據類型的值。這一 timestamp 值保證在數據庫中是唯一的。
select @@IDENTITY as w --返回最後插入的標識值
SELECT @@IDLE as w --返回SQL自上次啓動後閒置的時間,單位爲毫秒
SELECT @@IO_BUSY AS w --返回SQL自上次啓動後用於執行輸入和輸出操作的時間,單位爲毫秒
SELECT @@LANGID AS w --返回當前所使用語言的本地語言標識符(ID)。
SELECT @@LANGUAGE AS w --返回當前使用的語言名
SELECT @@LOCK_TIMEOUT as w --當前會話的當前鎖超時設置,單位爲毫秒。
SELECT @@MAX_CONNECTIONS as w --返回SQL上允許的同時用戶連接的最大數。返回的數不必爲當前配置的數值
EXEC sp_configure --顯示當前服務器的全局配置設置
SELECT @@MAX_PRECISION as w --返回 decimal 和 numeric 數據類型所用的精度級別,即該服務器中當前設置的精度。默認最大精度38。
select @@OPTIONS as w --返回當前 SET 選項的信息。
SELECT @@PACK_RECEIVED as w --返回SQL自啓動後從網絡上讀取的輸入數據包數目。
SELECT @@PACK_SENT as w --返回SQ自上次啓動後寫到網絡上的輸出數據包數目。
SELECT @@PACKET_ERRORS as w --返回自SQL啓動後,在SQL連接上發生的網絡數據包錯誤數。
SELECT @@SERVERNAME as w --返回運行SQL服務器名稱。
SELECT @@SERVICENAME as w --返回SQL正在其下運行的註冊表鍵名
SELECT @@TIMETICKS as w --返回SQL服務器一刻度的微秒數
SELECT @@TOTAL_ERRORS AS w --返回 SQL服務器自啓動後,所遇到的磁盤讀/寫錯誤數。
SELECT @@TOTAL_READ as w --返回 SQL服務器自啓動後讀取磁盤的次數。
SELECT @@TOTAL_WRITE as w --返回SQL服務器自啓動後寫入磁盤的次數。
SELECT @@TRANCOUNT as w --返回當前連接的活動事務數。
SELECT @@VERSION as w --返回SQL服務器安裝的日期、版本和處理器類型。
局部變量
局部變量是一個能夠擁有特定數據類型的對象,它的作用範圍僅限制在程序內部。局部變量可以作爲計數器來計算循環執行的次數,或是控制循環執行的次數。另外,利用局部變量還可以保存數據值,以供控制流語句測試以及保存由存儲過程返回的數據值等。局部變量被引用時要在其名稱前加上標誌“@”,而且必須先用DECLARE命令定義後纔可以使用。