SQL - AND 和 OR 連線運算子



運算子是主要用於 SQL 中執行各種資料操作的保留字,例如加法 (+) 、減法 (-) 或比較 (==)。

連線運算子,特別是在布林邏輯中使用,組合 SQL 語句中的兩個條件。最常見的連線運算子是:AND (&&),如果兩個條件都為真,則返回真;OR (||),如果至少一個條件為真,則返回真。

SQL AND 運算子

SQL 的 AND 運算子如果其兩個運算元都計算為真,則返回 true1。我們可以使用它在 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
廣告

© . All rights reserved.