T-SQL 是 SQL Server 的核心查詢語言,提供以下功能:
資料庫物件是資料庫中的實體實體,擁有唯一名稱,儲存資料與關聯資訊。SQL Server 定義以下物件類型:
| 物件 | 說明 |
|---|---|
| 資料表 | 二維陣列儲存資料,由列與行組成。欄位即表屬性/欄位,每欄有唯一名稱與資料型別。 |
| 檢視表 | 虛擬表格,僅包含基底表部分資料。資料非實體儲存,由基底表衍生。定義儲存於資料庫中。 |
| 條件約束 | 定義資料完整性與有效性規則。類型包含:NOT NULL (禁止空值)、CHECK (指定合法值域)、PRIMARY KEY (唯一識別列)、FOREIGN KEY (定義父子關聯/參考完整性)、UNIQUE (非 NULL 值唯一)。查詢最佳化器利用約束產生低成本計畫。 |
| 預設值 | 插入列未指定值時自動使用。可為常數、數學運算式、內建函數。 |
| 規則 | 功能同 CHECK 約束,但為獨立物件可跨表使用。屬相容性功能,建議改用約束。 |
| 觸發器與預存程序 | T-SQL 命令集,作為物件儲存於資料庫中。 |
SQL Server 使用 <資料庫名>.<擁有者名>.<物件名> 三段式命名。前兩部分可省略,預設值分別為目前資料庫與 dbo。
| 資料型別 | 說明 | 同義字 |
|---|---|---|
| Bit | 1 位元,值 0 或 1 | |
| Int / Integer | 4 位元組,-2^31 ~ 2^31-1 | |
| Smallint | 2 位元組,-2^15 ~ 2^15-1 | |
| Tinyint | 1 位元組,0 ~ 255 | |
| Decimal(p,s) / Numeric | 固定精度 p、小數位數 s 的數值 | |
| Money | 8 位元組,貨幣類型,-2^63 ~ 2^63-1 | |
| Smallmoney | 4 位元組,貨幣類型,-214748.3648 ~ +214748.3647 | |
| Float(n) | n=1~24 為 4 位元組/7 位精度 (real);n=25~53 為 8 位元組/15 位精度 | |
| Datetime | 8 位元組,日期+時間,精度 1/300 秒 | |
| Smalldatetime | 4 位元組,日期+時間,精度至分鐘 | |
| Cursor | 游標參考 | |
| Timestamp | 8 位元組,資料庫內唯一二進位數,每列更新自動更新 | |
| Uniqueidentifier | 16 位元組,全域唯一識別碼 (GUID) | |
| Char(n) | 固定長度非 Unicode 字串,n=1~8000 | Character(n) |
| Varchar(n) | 可變長度非 Unicode 字串,n=1~8000 | Char varying(n) |
| Text | 可變長度非 Unicode 資料,最大 2^31-1 字元 | |
| Nchar(n) | 固定長度 Unicode 字串,n=1~4000 | National char(n) |
| Nvarchar(n) | 可變長度 Unicode 字串,n=1~4000 | National char varying(n) |
| Ntext | 可變長度 Unicode 資料,最大 2^30-1 字元 | National text |
| Binary(n) | 固定長度二進位,n=1~8000,儲存 n+4 位元組 | |
| Varbinary(n) | 可變長度二進位,n=1~8000 | Binary varying(n) |
| Image | 可變長度二進位,0 ~ 2^31-1 位元組 |
Money 與 Smallmoney 儲存小數位數固定為 4 位。Timestamp 欄位值於每列更新時自動更新,不可作為索引鍵或鍵的一部分。Uniqueidentifier 僅支援相等比較,不支援算術運算。Unicode 儲存空間為非 Unicode 兩倍。