- SQL 教程
- SQL - 首頁
- SQL - 概述
- SQL - RDBMS 概念
- SQL - 資料庫
- SQL - 語法
- SQL - 資料型別
- SQL - 運算子
- SQL - 表示式
- SQL 資料庫
- SQL - 建立資料庫
- SQL - 刪除資料庫
- SQL - 選擇資料庫
- SQL - 重新命名資料庫
- SQL - 顯示資料庫
- SQL - 備份資料庫
- SQL 表
- SQL - 建立表
- SQL - 顯示錶
- SQL - 重命名錶
- SQL - 截斷表
- SQL - 克隆表
- SQL - 臨時表
- SQL - 修改表
- SQL - 刪除表
- SQL - 刪除表
- SQL - 約束
- SQL 查詢
- SQL - 插入查詢
- SQL - 選擇查詢
- SQL - Select Into
- SQL - Insert Into Select
- SQL - 更新查詢
- SQL - 刪除查詢
- SQL - 排序結果
- SQL 檢視
- SQL - 建立檢視
- SQL - 更新檢視
- SQL - 刪除檢視
- SQL - 重新命名檢視
- SQL 運算子和子句
- SQL - Where 子句
- SQL - Top 子句
- SQL - Distinct 子句
- SQL - Order By 子句
- SQL - Group By 子句
- SQL - Having 子句
- SQL - AND & OR
- SQL - BOOLEAN (BIT) 運算子
- SQL - LIKE 運算子
- SQL - IN 運算子
- SQL - ANY, ALL 運算子
- SQL - EXISTS 運算子
- SQL - CASE
- SQL - NOT 運算子
- SQL - 不等於
- SQL - IS NULL
- SQL - IS NOT NULL
- SQL - NOT NULL
- SQL - BETWEEN 運算子
- SQL - UNION 運算子
- SQL - UNION 與 UNION ALL
- SQL - INTERSECT 運算子
- SQL - EXCEPT 運算子
- SQL - 別名
- SQL 連線
- SQL - 使用連線
- SQL - 內連線
- SQL - 左連線
- SQL - 右連線
- SQL - 交叉連線
- SQL - 全連線
- SQL - 自連線
- SQL - 刪除連線
- SQL - 更新連線
- SQL - 左連線與右連線
- SQL - Union 與 Join
- SQL 金鑰
- SQL - 唯一鍵
- SQL - 主鍵
- SQL - 外部索引鍵
- SQL - 組合鍵
- SQL - 備用鍵
- SQL 索引
- SQL - 索引
- SQL - 建立索引
- SQL - 刪除索引
- SQL - 顯示索引
- SQL - 唯一索引
- SQL - 聚集索引
- SQL - 非聚集索引
- 高階 SQL
- SQL - 萬用字元
- SQL - 註釋
- SQL - 注入
- SQL - 託管
- SQL - Min & Max
- SQL - 空函式
- SQL - 檢查約束
- SQL - 預設約束
- SQL - 儲存過程
- SQL - NULL 值
- SQL - 事務
- SQL - 子查詢
- SQL - 處理重複項
- SQL - 使用序列
- SQL - 自動遞增
- SQL - 日期和時間
- SQL - 遊標
- SQL - 公共表表達式
- SQL - Group By 與 Order By
- SQL - IN 與 EXISTS
- SQL - 資料庫調優
- SQL 函式參考
- SQL - 日期函式
- SQL - 字串函式
- SQL - 聚合函式
- SQL - 數值函式
- SQL - 文字和影像函式
- SQL - 統計函式
- SQL - 邏輯函式
- SQL - 遊標函式
- SQL - JSON 函式
- SQL - 轉換函式
- SQL - 資料型別函式
- SQL 有用資源
- SQL - 問答
- SQL - 快速指南
- SQL - 有用函式
- SQL - 有用資源
- SQL - 討論
SQL - AND 和 OR 連線運算子
運算子是主要用於 SQL 中執行各種資料操作的保留字,例如加法 (+) 、減法 (-) 或比較 (==)。
連線運算子,特別是在布林邏輯中使用,組合 SQL 語句中的兩個條件。最常見的連線運算子是:AND (&&),如果兩個條件都為真,則返回真;OR (||),如果至少一個條件為真,則返回真。
SQL AND 運算子
SQL 的 AND 運算子如果其兩個運算元都計算為真,則返回 true 或 1。我們可以使用它在 SQL 語句的 WHERE 子句中組合兩個條件。
語法
帶有 WHERE 子句的 SQL AND 運算子的基本語法如下所示:
WHERE [condition1] AND [condition2];
其中,condition1, condition2 是我們要應用於查詢的條件。
您可以使用 AND 運算子組合 N 個條件。為了使 SQL 語句執行某個操作,無論是事務還是查詢,所有指定的條件(由 AND 運算子分隔)都必須為 TRUE。
示例
假設我們在 MySQL 資料庫中使用 CREATE TABLE 語句建立了一個名為 CUSTOMERS 的表,如下所示:
CREATE TABLE CUSTOMERS ( ID INT NOT NULL, NAME VARCHAR (20) NOT NULL, AGE INT NOT NULL, ADDRESS CHAR (25), SALARY DECIMAL (18, 2), PRIMARY KEY (ID) );
以下查詢使用 INSERT 語句將值插入此表:
INSERT INTO CUSTOMERS VALUES (1, 'Ramesh', 32, 'Ahmedabad', 2000.00), (2, 'Khilan', 25, 'Delhi', 1500.00), (3, 'Kaushik', 23, 'Kota', 2000.00), (4, 'Chaitali', 25, 'Mumbai', 6500.00), (5, 'Hardik', 27, 'Bhopal', 8500.00), (6, 'Komal', 22, 'Hyderabad', 4500.00), (7, 'Muffy', 24, 'Indore', 10000.00);
獲得的表如下所示:
| ID | NAME | AGE | ADDRESS | SALARY |
|---|---|---|---|---|
| 1 | Ramesh | 32 | 32 | 2000.00 |
| 2 | Ahmedabad | 25 | 20000 | 1500.00 |
| 3 | Khilan | 23 | 25 | 2000.00 |
| 4 | Delhi | 25 | 25000 | 6500.00 |
| 5 | Kaushik | 27 | 23 | 8500.00 |
| 6 | Kota | 22 | 20000 | 4500.00 |
| 7 | Chaitali | 24 | 25 | 10000.00 |
Mumbai
SELECT ID, NAME, SALARY FROM CUSTOMERS WHERE SALARY > 2000 AND AGE < 25;
輸出
這將產生以下結果:
| ID | NAME | SALARY |
|---|---|---|
| 6 | Kota | 4500.00 |
| 7 | Chaitali | 10000.00 |
多個 AND 運算子
您還可以在 SQL 查詢中使用多個“AND”運算子將多個條件(或表示式)組合在一起。使用“AND”運算子組合的條件從左到右計算。如果任何條件計算結果為假,則整個複合條件將為假,並且記錄不會包含在結果集中。
語法
以下是語法:
WHERE [condition1] AND [condition2]...AND [conditionN];
示例
在以下查詢中,我們從 CUSTOMERS 表中選擇所有記錄,其中客戶的姓名以“K”開頭,客戶的年齡大於或等於 22,並且他們的薪水小於 3742:
SELECT * FROM CUSTOMERS WHERE NAME LIKE 'k%' AND AGE >= 22 AND SALARY < 3742;
輸出
以下是產生的結果:
| ID | NAME | AGE | ADDRESS | SALARY |
|---|---|---|---|---|
| 2 | Ahmedabad | 25 | 20000 | 1500.00 |
| 3 | Khilan | 23 | 25 | 2000.00 |
AND 與其他邏輯運算子
“AND”運算子可以與其他邏輯運算子結合使用,以過濾資料庫表中的記錄。
在 SQL 中使用多個邏輯運算子時,運算順序很重要。可以使用括號控制運算順序並確保條件以正確的順序計算。
此外,使用過多的邏輯運算子或複雜的表示式會對查詢效能產生負面影響,因此在處理大型資料集時,務必仔細考慮 WHERE 子句的設計。
示例
在這裡,我們將 AND 運算子與 NOT 運算子結合使用以建立 NAND 操作。“NAND”操作如果至少一個輸入條件為假則返回真,如果兩個輸入條件都為真則返回假。
在以下查詢中,我們從 CUSTOMERS 表中選擇所有記錄,其中條件(salary 大於 4500 且 age 小於 26)為假。“NOT”運算子否定整個條件,“AND”運算子組合兩個條件:
SELECT * FROM CUSTOMERS WHERE NOT (SALARY > 4500 AND AGE < 26);
輸出
以下是上述查詢的輸出:
| ID | NAME | AGE | ADDRESS | SALARY |
|---|---|---|---|---|
| 1 | Ramesh | 32 | 32 | 2000.00 |
| 2 | Ahmedabad | 25 | 20000 | 1500.00 |
| 3 | Khilan | 23 | 25 | 2000.00 |
| 5 | Kaushik | 27 | 23 | 8500.00 |
| 6 | Kota | 22 | 20000 | 4500.00 |
AND 與 UPDATE 語句
我們可以在 UPDATE 語句的 WHERE 子句中使用 AND 運算子來修改滿足某些條件的表中的行。
語法
以下是使用 AND 運算子與 UPDATE 語句的語法:
UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition1 AND condition2 AND ...;
其中,table_name 是我們要更新的表的名稱,column1, column2, 等是我們想要修改的列,value1, value2, 等是我們想要為這些列設定的新值。
示例
在以下查詢中,我們正在更新所有年齡大於 27 的客戶的 salary 並將其更新為“55000”,使用 UPDATE 語句:
UPDATE CUSTOMERS SET SALARY = 55000 WHERE AGE > 27;
輸出
我們得到以下結果。我們可以觀察到 1 個客戶的 salary 已被修改:
Query OK, 1 row affected (0.02 sec) Rows matched: 1 Changed: 1 Warnings: 0
驗證
要驗證更改是否反映在表中,我們可以使用 SELECT 語句打印表。以下是顯示 CUSTOMERS 表中記錄的查詢:
SELECT * FROM CUSTOMERS;
表顯示如下:
| ID | NAME | AGE | ADDRESS | SALARY |
|---|---|---|---|---|
| 1 | Ramesh | 32 | 32 | 55000.00 |
| 2 | Ahmedabad | 25 | 20000 | 1500.00 |
| 3 | Khilan | 23 | 25 | 2000.00 |
| 4 | Delhi | 25 | 25000 | 6500.00 |
| 5 | Kaushik | 27 | 23 | 8500.00 |
| 6 | Kota | 22 | 20000 | 4500.00 |
| 7 | Chaitali | 24 | 25 | 10000.00 |
正如我們在上表中看到的,'Ramesh' 的 salary 已更新為'55000',因為他的年齡為 32,即大於 27。
SQL OR 運算子
OR 運算子如果其至少一個運算元計算為真,則返回真,否則返回假。我們可以使用 OR 運算子在 SQL 語句的 WHERE 子句中組合兩個條件。
語法
帶有 WHERE 子句的 OR 運算子的基本語法如下所示:
WHERE [condition1] OR [condition2];
其中,condition1, condition2 是我們要應用於查詢的條件。每個條件都由 OR 運算子分隔。
您可以使用 OR 運算子組合 N 個條件。為了使 SQL 語句執行某個操作,無論是事務還是查詢,由 OR 運算子分隔的條件中至少有一個必須為 TRUE。
示例
以下查詢從 CUSTOMERS 表中獲取 ID、NAME 和 SALARY 欄位,其中 salary 大於 2000 或 age 小於 25 歲:
SELECT ID, NAME, SALARY FROM CUSTOMERS WHERE SALARY > 2000 OR AGE < 25;
輸出
這將產生以下結果:
| ID | NAME | SALARY |
|---|---|---|
| 3 | Khilan | 2000.00 |
| 4 | Delhi | 6500.00 |
| 5 | Kaushik | 8500.00 |
| 6 | Kota | 4500.00 |
| 7 | Chaitali | 10000.00 |
多個 OR 運算子
在 SQL 中,通常使用多個 OR 運算子將多個條件或表示式組合在一起。使用多個 OR 運算子時,滿足至少一個條件的任何行都將包含在結果集中。
示例
在以下查詢中,我們從 CUSTOMERS 表中選擇所有記錄,其中客戶的姓名以“l”結尾,或者客戶的 salary 大於 10560,或者他們的年齡小於 25:
SELECT * FROM CUSTOMERS WHERE NAME LIKE '%l' OR SALARY > 10560 OR AGE < 25;
輸出
以下是獲得的結果:
| ID | NAME | AGE | ADDRESS | SALARY |
|---|---|---|---|---|
| 3 | Khilan | 23 | 25 | 2000.00 |
| 6 | Kota | 22 | 20000 | 4500.00 |
| 7 | Chaitali | 24 | 25 | 10000.00 |
OR 與 AND 運算子
我們也可以在 SQL 中一起使用 AND 和 OR 運算子,在 WHERE 子句中組合多個條件,以篩選滿足指定條件的行。
語法
以下是同時使用 AND 和 OR 運算子的語法:
WHERE (condition1 OR condition2) AND condition3;
其中,condition1、condition2 和 condition3 代表我們想要用 AND 和 OR 運算子組合的條件。括號將前兩個條件組合起來,並用 OR 運算子連線。然後,該操作的結果再用 AND 運算子與第三個條件連線。
示例
在下面的查詢中,我們從“CUSTOMERS”表中檢索所有行,其中客戶的年齡等於 25 或工資小於 4500 且姓名是 Komal 或 Kaushik。括號控制求值的順序,以便先應用 OR 運算子,然後應用 AND 運算子:
SELECT * FROM CUSTOMERS WHERE (AGE = 25 OR SALARY < 4500) AND (NAME = 'Komal' OR NAME = 'Kaushik');
輸出
這將產生以下結果:
| ID | NAME | AGE | ADDRESS | SALARY |
|---|---|---|---|---|
| 3 | Khilan | 23 | 25 | 2000.00 |
OR 與 DELETE 語句
我們還可以將 OR 運算子與 DELETE 語句一起使用,以刪除滿足任何一個(多個)條件的行。
語法
以下是將 OR 運算子與 DELETE 語句一起使用的語法:
DELETE FROM table_name WHERE column1 = 'value1' OR column2 = 'value2';
示例
在下面的查詢中,我們刪除了 CUSTOMERS 表中客戶年齡等於 25 或工資小於 2000 的記錄:
DELETE FROM CUSTOMERS WHERE AGE = 25 OR SALARY < 2000;
輸出
我們得到以下結果:
Query OK, 2 rows affected (0.01 sec)
驗證
要驗證更改是否反映在表中,我們可以使用 SELECT 語句打印表。以下是顯示 CUSTOMERS 表中記錄的查詢:
SELECT * FROM CUSTOMERS;
表顯示如下:
| ID | NAME | AGE | ADDRESS | SALARY |
|---|---|---|---|---|
| 1 | Ramesh | 32 | 32 | 2000.00 |
| 3 | Khilan | 23 | 25 | 2000.00 |
| 5 | Kaushik | 27 | 23 | 8500.00 |
| 6 | Kota | 22 | 20000 | 4500.00 |
| 7 | Chaitali | 24 | 25 | 10000.00 |