關鍵字 定義 用法範例 相關連結
SELECT 查詢資料 SELECT * FROM TableName WHERE ColumnName = 'Value'; 用於從資料表中查詢數據。
INSERT 插入資料 INSERT INTO TableName (Column1, Column2) VALUES (Value1, Value2); 用於向資料表中插入新行。
UPDATE 更新資料 UPDATE TableName SET ColumnName = 'NewValue' WHERE Condition; 用於更新資料表中的現有數據。
DELETE 刪除資料 DELETE FROM TableName WHERE Condition; 用於刪除資料表中的指定行。
CREATE TABLE 創建新資料表 CREATE TABLE TableName (Column1 DataType, Column2 DataType); 用於創建一個新的資料表。
ALTER TABLE 修改資料表結構 ALTER TABLE TableName ADD NewColumn DataType; 用於修改現有資料表的結構,例如新增、刪除欄位。
DROP TABLE 刪除資料表 DROP TABLE TableName; 用於刪除資料表及其所有數據。
JOIN 聯接資料表 SELECT * FROM Table1 INNER JOIN Table2 ON Table1.ID = Table2.ID; 用於從多個資料表中查詢數據,基於共同的欄位。
GROUP BY 分組查詢 SELECT ColumnName, COUNT(*) FROM TableName GROUP BY ColumnName; 用於對查詢結果進行分組。
ORDER BY 排序查詢結果 SELECT * FROM TableName ORDER BY ColumnName ASC/DESC; 用於對查詢結果進行排序。
HAVING 條件過濾分組結果 SELECT ColumnName, COUNT(*) FROM TableName GROUP BY ColumnName HAVING COUNT(*) > 1; 用於對分組結果進行條件過濾。
BEGIN 開始一個 SQL 區塊,通常與 TRANSACTION 一起使用,表示開始一個事務處理區段。 BEGIN TRANSACTION;
TRANSACTION 表示一個 SQL 事務,允許對多個 SQL 操作進行批量處理,保證操作的原子性、完整性與一致性。 BEGIN TRANSACTION;<br>UPDATE TableName SET Column1 = '新值' WHERE ConditionColumn = '條件';<br>COMMIT;
SELECT @@TRANCOUNT 顯示當前交易的活動事務層數。 SELECT @@TRANCOUNT; 用於顯示當前交易的筆數。
SET TRANSACTION ISOLATION LEVEL READ COMMITTED 設定事務的隔離級別為「已提交讀取」,避免讀取未提交的數據。 SET TRANSACTION ISOLATION LEVEL READ COMMITTED; 用於防止讀取到未提交的數據,以保證讀取的數據已被其他事務提交。
DECLARE 宣告一個變數並指定其數據類型。 DECLARE @MyVariable INT; <br> SET @MyVariable = 10; 用於在 SQL 腳本或存儲過程中宣告和初始化變數。
ISOLATION LEVEL 用於設定事務的隔離級別,以控制事務之間的數據可見性。 SET TRANSACTION ISOLATION LEVEL <隔離級別>; <br> 例如:<br>SET TRANSACTION ISOLATION LEVEL READ COMMITTED; 控制事務的行為和可見性,影響數據的讀取和寫入。常見的隔離級別包括 READ UNCOMMITTEDREAD COMMITTEDREPEATABLE READSERIALIZABLE
WITH (XLOCK) 用於鎖定查詢的行,防止其他事務在事務完成前修改這些行。 SELECT * FROM TableName WITH (XLOCK); 防止其他事務對查詢中選定的行進行更改,以確保數據一致性。
READ UNCOMMITTED 允許讀取未提交的數據,可能讀取到其他事務尚未提交的數據(「髒數據」)。 SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; 提高查詢性能,但可能讀取到其他事務未提交的數據(髒讀),適用於對數據一致性要求較低的場景。
WITH (SLOCK) 用於鎖定查詢的行,防止其他事務對這些行進行修改或刪除。 SELECT * FROM TableName WITH (SLOCK); 防止其他事務修改或刪除查詢中選定的行,以保持讀取一致性。
WITH (NOLOCK) 允許讀取未提交的數據,避免加鎖,可能讀取到「髒數據」。 SELECT * FROM TableName WITH (NOLOCK); 提高查詢性能,但可能讀取到其他事務未提交的數據。
READ COMMITTED 確保只讀取已提交的數據,避免讀取到未提交的變更。 SET TRANSACTION ISOLATION LEVEL READ COMMITTED; 防止讀取到未提交的數據,避免「臨時讀取」問題,保證讀取的數據已被其他事務提交。
REPEATABLE READ 確保事務中的讀取操作在整個事務期間返回相同的數據,防止「非重複讀取」,但不防止「幻影讀取」。 SET TRANSACTION ISOLATION LEVEL REPEATABLE READ; 保證在事務執行期間多次讀取同一數據時,結果保持一致。防止在事務執行期間讀取數據的變化。
SERIALIZABLE 提供最高級別的隔離,保證事務的執行完全互不干擾,防止「非重複讀取」和「幻影讀取」。 SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; 保證事務在執行期間完全隔離,避免所有類型的並發問題,包括「非重複讀取」和「幻影讀取」。
TRY...CATCH 用於捕獲 SQL 語句中的錯誤,並在 CATCH 區塊中處理錯誤。 BEGIN TRY <br> -- SQL 語句 <br> END TRY <br> BEGIN CATCH <br> -- 錯誤處理 <br> END CATCH; 在 SQL 查詢中處理運行時的錯誤,防止查詢崩潰或中斷。