數據類型
字符字符串 字符常量使用引號進行分隔。
char 存固定大小的字符串,最大8000個字符。不足將用空格填滿。
varchar 最大8000字符。不足不用空格填滿,按原樣記錄。占用2個額外字節。
text 存儲大型數據,最大為2GB。
Unicode字符字符串 字符常量使用引號進行分隔,並用N為前綴。比如:values(N''CODSD'')
nchar 存固定大小的字符串,最大4000個字符。不足將用空格填滿。
nvarchar 最大4000字符。不足不用空格填滿,按原樣記錄。
ntext 存儲大型數據,最大為1GB。
日期和時間的數據類型
datetime 占8字節,精度3.33ms 日期范圍1753年1月1日到9999年12月31日
smalldatetime 占4字節,精度1ms,日期范圍1900年1月1日到2079年6月6日
日期和時間常量在SQL中用引號分隔符分隔。Set DateOfBirth=''2/21/1983 10:10 AM''
整數
int
smallint
tinyint
bigint
bit邏輯真或邏輯假
近似數字(近似計算) 避免使用''='',而是使用''<'',''>''等符號。
real單精度,精度最多7位。
float雙精度,精度最多15位。
精確數字(非近似計算,必須指定小數位數和精度)
decimal 精度最大為38位。Weight decimal(10,3) 小數位數為3位,小數之前最多7位。
numeric
未定數據類型sql_variant
可以存儲除text,ntext,image,timestamp,sql_variant這些類型以外的任何數據類型。
但使用它們時必須限制為:
·鍵中數據總長度小於900個字節,可以在索引和唯一鍵中使用sql_variant列。
·不能具有identity屬性。
·不能是計算列的一部分。
·在Like謂詞中不受支持。
·不支持全文索引。
·不可使用+運算符進行串聯運算。
·有些函數不支持sql_variant類型的參數比如AVG,IDENTITY,ISNUMBER,POWER,ROUND,SIGN,SUM,VAR,VARP,RADIANS
局部變量 必須以@開頭
Declare @LastName varchar(50),
@FirstName varchar(30)
全局變量 必須以@@開頭
@@identity
SCOPE_IDENTITY、IDENT_CURRENT 和 @@IDENTITY 是相似的函數,因為它們都返回插入到標識列中的值。
IDENT_CURRENT 不受作用域和會話的限制,而受限於指定的表。IDENT_CURRENT 返回為任何會話和作用域中的特定表所生成的值。有關詳細信
息,請參閱 IDENT_CURRENT (Transact-SQL)。
SCOPE_IDENTITY 和 @@IDENTITY 返回在當前會話中的任何表內所生成的最後一個標識值。但是,SCOPE_IDENTITY 只返回插入到當前作用域中
的值;@@IDENTITY 不受限於特定的作用域。
@@error 記錄錯誤編碼。
@@rowcount 記錄該語句影響到的總的記錄條數,用來確認選擇操作的成功與否。
table 變量[表變量] 變量具有下列優點:
A. table 變量的行為類似於局部變量,有明確定義的作用域。這就是在其中聲明該變量的函數、存儲過程或批處理。
在其作用域內,table 變量可像常規表那樣使用。該變量可應用於 SELECT、INSERT、UPDATE 和 DELETE 語句中用到表或表的表達式的任何地
方。但是,table 不能用於以下語句中:
SELECT select_list INTO table_variable
在定義 table 變量的函數、存儲過程或批處理結束時,會自動清除此變量。
table 類型聲明中的 CHECK 約束、DEFAULT 值和計算列不能調用用戶定義函數。
在存儲過程中使用 table 變量與使用臨時表相比,減少了存儲過程的重新編譯量。
涉及 table 變量的事務只在 table 變量更新期間存在。因此減少了 table 變量對鎖定和記錄資源的需求。