SQL Server中的存儲過程 什麼是存儲過程? 存儲過程是一段預先編寫好的 SQL 代碼,可以保存在資料庫中以供反覆使用。它允許將一系列 SQL 語句組合成一個邏輯單元,併為其分配一個名稱,以便在需要時調用執行。存儲過程可以接受參數,使其更加靈活和通用。 存儲過程語法 創建存儲過程的語法如下: ...
SQL Server中的存儲過程
什麼是存儲過程?
存儲過程是一段預先編寫好的 SQL 代碼,可以保存在資料庫中以供反覆使用。它允許將一系列 SQL 語句組合成一個邏輯單元,併為其分配一個名稱,以便在需要時調用執行。存儲過程可以接受參數,使其更加靈活和通用。
存儲過程語法
創建存儲過程的語法如下:
CREATE PROCEDURE 存儲過程名稱
AS
SQL語句
GO;
執行存儲過程的語法如下:
EXEC 存儲過程名稱;
演示資料庫
以下是 Northwind 示例資料庫中 "Customers" 表的部分內容:
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
存儲過程示例
以下 SQL 語句創建了一個名為 "SelectAllCustomers" 的存儲過程,用於從 "Customers" 表中選擇所有記錄:
CREATE PROCEDURE SelectAllCustomers
AS
SELECT * FROM Customers
GO;
執行上述存儲過程的方法如下:
EXEC SelectAllCustomers;
帶有一個參數的存儲過程
以下 SQL 語句創建了一個存儲過程,該過程從 "Customers" 表中選擇特定城市的客戶:
CREATE PROCEDURE SelectAllCustomers @City nvarchar(30)
AS
SELECT * FROM Customers WHERE City = @City
GO;
執行上述存儲過程的方法如下:
EXEC SelectAllCustomers @City = 'London';
帶有多個參數的存儲過程
設置多個參數非常簡單。只需逐個列出每個參數及其數據類型,用逗號分隔。
以下 SQL 語句創建了一個存儲過程,該過程從 "Customers" 表中選擇特定城市和特定郵政編碼的客戶:
CREATE PROCEDURE SelectAllCustomers @City nvarchar(30), @PostalCode nvarchar(10)
AS
SELECT * FROM Customers WHERE City = @City AND PostalCode = @PostalCode
GO;
執行上述存儲過程的方法如下:
EXEC SelectAllCustomers @City = 'London', @PostalCode = 'WA1 1DP';
SQL 註釋用於提供對 SQL 語句的解釋,或者在調試和維護過程中臨時禁用某些語句。註釋不會被資料庫執行。
單行註釋
單行註釋以 --
開頭,後面的文本將被註釋掉。
-- 這是單行註釋
SELECT * FROM Customers;
在單行註釋中,--
後面的文本會被忽略。
單行註釋在語句末尾
SELECT * FROM Customers -- WHERE City='Berlin';
在這個例子中,--
後面的文本和語句末尾的內容都被忽略。
多行註釋
多行註釋以 /*
開頭,以 */
結尾,之間的所有文本都被註釋掉。
/* 這是
多行註釋 */
SELECT * FROM Customers;
在多行註釋中,/*
和 */
之間的文本都被忽略。
多行註釋忽略多條語句
/* SELECT * FROM Customers;
SELECT * FROM Products;
SELECT * FROM Orders;
SELECT * FROM Categories; */
SELECT * FROM Suppliers;
在這個例子中,/*
和 */
之間的所有語句都被註釋掉。
部分註釋
要僅忽略語句的一部分,可以在適當位置使用 /* */
註釋。
SELECT CustomerName, /*City,*/ Country FROM Customers;
在這個例子中,/*
和 */
之間的 City
列會被註釋掉,而其他部分保持不變。
部分註釋語句
SELECT * FROM Customers WHERE (CustomerName LIKE 'L%'
OR CustomerName LIKE 'R%' /*OR CustomerName LIKE 'S%'
OR CustomerName LIKE 'T%'*/ OR CustomerName LIKE 'W%')
AND Country='USA'
ORDER BY CustomerName;
在這個例子中,/*
和 */
之間的部分條件被註釋掉,但其他條件保持不變。
SQL 算術運算符
加法 (+
): 用於將兩個值相加。
SELECT column1 + column2 AS SumResult FROM tableName;
減法 (-
): 用於從第一個值中減去第二個值。
SELECT column1 - column2 AS Difference FROM tableName;
乘法 (*
): 用於將兩個值相乘。
SELECT column1 * column2 AS Product FROM tableName;
除法 (/
): 用於將第一個值除以第二個值。
SELECT column1 / column2 AS Quotient FROM tableName;
取模 (%
): 返回除法的餘數。
SELECT column1 % column2 AS Modulus FROM tableName;
SQL 位運算符
按位與 (&
): 對二進位數進行按位與運算。
SELECT column1 & column2 AS BitwiseAND FROM tableName;
按位或 (|
): 對二進位數進行按位或運算。
SELECT column1 | column2 AS BitwiseOR FROM tableName;
按位異或 (^
): 對二進位數進行按位異或運算。
SELECT column1 ^ column2 AS BitwiseXOR FROM tableName;
SQL 比較運算符
等於 (=
): 判斷兩個值是否相等。
SELECT column1 FROM tableName WHERE column1 = column2;
大於 (>
): 判斷一個值是否大於另一個值。
SELECT column1 FROM tableName WHERE column1 > column2;
小於 (<
): 判斷一個值是否小於另一個值。
SELECT column1 FROM tableName WHERE column1 < column2;
大於等於 (>=
): 判斷一個值是否大於或等於另一個值。
SELECT column1 FROM tableName WHERE column1 >= column2;
小於等於 (<=
): 判斷一個值是否小於或等於另一個值。
SELECT column1 FROM tableName WHERE column1 <= column2;
不等於 (<>
或 !=
): 判斷兩個值是否不相等。
SELECT column1 FROM tableName WHERE column1 <> column2;
SQL 複合運算符
複合運算符是一組用於執行多個操作的運算符。
加等於 (+=
): 將右側的值添加到左側的值,並將結果分配給左側的值。
UPDATE tableName SET column1 += 10 WHERE condition;
減等於 (-=
): 從左側的值中減去右側的值,並將結果分配給左側的值。
UPDATE tableName SET column1 -= 5 WHERE condition;
乘等於 (*=
): 將左側的值乘以右側的值,並將結果分配給左側的值。
UPDATE tableName SET column1 *= 2 WHERE condition;
除等於 (/=
): 將左側的值除以右側的值,並將結果分配給左側的值。
UPDATE tableName SET column1 /= 3 WHERE condition;
取模等於 (%=
): 將左側的值除以右側的值並取餘數,結果分配給左側的值。
UPDATE tableName SET column1 %= 4 WHERE condition;
SQL 邏輯運算符
邏輯運算符用於連接和改變條件語句的邏輯關係。
AND: 如果由 AND
分隔的所有條件都為 TRUE
,則為 TRUE
。
SELECT * FROM tableName WHERE condition1 AND condition2;
OR: 如果由 OR
分隔的任何條件都為 TRUE
,則為 TRUE
。
SELECT * FROM tableName WHERE condition1 OR condition2;
NOT: 如果條件不為 TRUE
,則顯示記錄。
SELECT * FROM tableName WHERE NOT condition;
以上 AND
、OR
和 NOT
可以結合使用,以滿足更複雜的查詢需求。
最後
為了方便其他設備和平臺的小伙伴觀看往期文章:公眾號搜索Let us Coding
,或者掃描下方二維碼,關註公眾號,即可獲取最新文章。
看完如果覺得有幫助,歡迎點贊、收藏和關註