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 UNCOMMITTED 、READ COMMITTED 、REPEATABLE READ 和 SERIALIZABLE 。 |
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 查詢中處理運行時的錯誤,防止查詢崩潰或中斷。 |