SQL AND和OR连接运算符
运算符是SQL中的保留字或字符,主要用于操作和检索数据库对象中的数据。它们与SQL查询一起在WHERE子句中使用,根据使用的运算符执行二元或一元操作。在一元操作中,使用单个运算符和单个操作数执行操作;而在二元操作中,使用单个运算符和两个操作数执行操作。
这些运算符用于在SQL语句中指定条件,目的是过滤数据或作为语句中多个条件的连接词。
SQL中的AND和OR是逻辑运算符,用作连接运算符,用于将多个条件组合在一个SQL语句中,以过滤数据库表中的数据。
这些运算符提供了一种在同一SQL语句中使用不同运算符进行多重比较的方法。
AND运算符
AND运算符允许在SQL语句的WHERE子句中存在多个条件。所有这些条件必须为真,整体条件才为真。
语法
带有WHERE子句的AND运算符的基本语法如下 –
WHERE [condition1] AND [condition2]...AND [conditionN];
其中, condition1, condition2, … 是我们要应用于查询的条件。每个条件都由AND运算符分隔。
您可以使用AND运算符组合任意数量的条件。对于SQL语句所采取的操作,无论是事务还是查询,所有通过AND分隔的条件都必须为TRUE。
示例
假设我们使用下面的CREATE TABLE语句在SQL数据库中创建了一个名为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);
insert INTO CUSTOMERS VALUES(2, 'Khilan', 25, 'Delhi', 1500.00);
insert INTO CUSTOMERS VALUES(3, 'kaushik', 23, 'Kota', 2000.00);
insert INTO CUSTOMERS VALUES(4, 'Chaitali', 25, 'Mumbai', 6500.00);
insert INTO CUSTOMERS VALUES(5, 'Hardik', 27, 'Bhopal', 8500.00);
insert INTO CUSTOMERS VALUES(6, 'Komal', 22, 'MP', 4500.00);
insert INTO CUSTOMERS VALUES(7, 'Muffy', 24, 'Indore', 10000.00);
使用以下SELECT查询,您可以验证记录是否正确插入到表中 –
SELECT * from CUSTOMERS;
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 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 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+
以下是一个示例,可以从CUSTOMERS表中提取ID、姓名和薪水字段,其中薪水大于2000且年龄小于25岁。
SELECT ID, NAME, SALARY
FROM CUSTOMERS
WHERE SALARY > 2000 AND age < 25;
输出
这将产生以下结果 –
+----+-------+----------+
| ID | NAME | SALARY |
+----+-------+----------+
| 6 | Komal | 4500.00 |
| 7 | Muffy | 10000.00 |
+----+-------+----------+
多个AND运算符
您也可以在查询中使用多个“AND”运算符将多个条件或表达式组合在一起。与这些多个“AND”运算符组合的条件从左到右进行评估。如果任何条件评估为false,则整个复合条件将为false,并且记录将不包含在结果集中。
示例
在下面的查询中,我们选择所有名字以“K”开头并且年龄大于或等于22岁、工资小于3742的客户表中的记录。
SELECT * FROM CUSTOMERS
WHERE NAME LIKE 'k%' AND AGE >= 22 AND SALARY < 3742
输出
以下是生成的结果−
+----+---------+-----+---------+---------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+---------+-----+---------+---------+
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
+----+---------+-----+---------+---------+
与其他逻辑运算符一起使用
“AND”运算符可以与其他逻辑运算符结合使用,以更严格地从数据库表中筛选记录。
需要注意的是,在使用多个逻辑运算符时,操作的顺序很重要。可以使用括号控制操作的顺序,确保条件按照正确的顺序进行评估。此外,使用过多的逻辑运算符或复杂的表达式可能会对查询性能产生负面影响,因此在处理大型数据集时,需要仔细考虑WHERE子句的设计。
示例
在这里,我们将AND运算符与NOT运算符结合使用,创建一个NAND操作。’NAND’操作返回真值,如果至少一个输入条件为假,返回假值,如果两个输入条件都为真,则返回假值。
在以下查询中,我们选择CUSTOMERS表中所有记录,其中条件(薪水大于4500且年龄小于26)为假。”NOT”运算符否定整个条件,而”AND”运算符结合了两个条件。
SELECT * FROM CUSTOMERS
WHERE NOT (SALARY > 4500 AND AGE < 26);
输出
以下是上述查询的输出结果 –
+----+---------+-----+-----------+---------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+---------+-----+-----------+---------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
+----+---------+-----+-----------+---------+
AND 与 UPDATE 语句
“AND” 运算符可与 “UPDATE” 语句一起使用,以修改符合特定条件的表中的行。
语法
下面是使用 AND 运算符与 UPDATE 语句的语法 −
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition1 AND condition2 AND ...;
其中, table_name 是我们想要更新的表的名称, column1, column2 等是我们想要修改的列, value1, value2 等是我们想要为这些列设置的新值。
示例
在以下查询中,我们试图使用UPDATE语句将所有年龄大于27岁的客户的工资更新为‘55000’。
UPDATE CUSTOMERS
SET salary = 55000
WHERE AGE > 27;
输出
我们得到了以下结果。我们可以观察到1个客户的薪水已经被修改了−
(1 row affected)
验证
为验证更改是否反映在表中,我们可以使用SELECT语句打印表格。
要显示Customers表格,请使用以下查询语句−
select * from customers;
表格显示如下 –
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 55000.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 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+
如上表所示,由于‘Ramesh’的年龄是32岁,大于27岁,所以他的薪水已经更新为‘55000’。
OR操作符
OR操作符用于在SQL语句的WHERE子句中组合多个条件。如果至少一个条件为真,则返回true;如果所有条件都为假,则返回false。
语法
带有WHERE子句的OR操作符的基本语法如下所示−
WHERE [condition1] OR [condition2]...OR [conditionN]
where, condition1, condition2, …是我们要应用于查询的条件。每个条件都由OR运算符分隔。
您可以使用OR运算符组合N个条件。对于SQL语句(无论是事务还是查询)执行操作,只有OR分隔的条件中的任何一个条件必须为真。
示例
以下查询从CUSTOMERS表中获取ID、Name和Salary字段,其中Salary大于2000或Age小于25岁。
SELECT ID, NAME, SALARY
FROM CUSTOMERS
WHERE SALARY > 2000 OR age < 25;
输出
这将产生以下结果−
+----+----------+----------+
| ID | NAME | SALARY |
+----+----------+----------+
| 3 | kaushik | 2000.00 |
| 4 | Chaitali | 6500.00 |
| 5 | Hardik | 8500.00 |
| 6 | Komal | 4500.00 |
| 7 | Muffy | 10000.00 |
+----+----------+----------+
多个OR运算符
在SQL中,常常使用多个’OR’运算符将多个条件或表达式组合在一起。当使用多个”OR”运算符时,任何满足条件之一的行都将被返回。
示例
在以下查询中,我们选择了所有CUSTOMERS表中满足以下条件之一的记录:客户名以’l’结尾,或客户的薪水大于10560,或其年龄小于25。
SELECT * FROM CUSTOMERS
WHERE NAME LIKE '%l' OR SALARY > 10560 OR AGE < 25
输出
下面是所得到的结果 –
+----+---------+-----+---------+---------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+---------+-----+---------+---------+
| 3 | kaushik | 23 | Kota | 2000.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore |10000.00 |
+----+---------+-----+---------+---------+
或使用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 | kaushik | 23 | Kota | 2000.00 |
+----+----------+-----+-----------+----------+
或者与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
输出
We get the following result −
(2 rows affected)
验证
要验证更改是否反映在表中,我们可以使用SELECT语句来打印表格。
要显示Customers表格,请使用以下查询 −
select * from customers;
表格显示如下 −
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 55000.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+