如何在 SQL 中使用 ANY

在这篇 SQL 文章中,您将学习如何在数据库表中使用“ANY”关键字。

一、SQL 中的 Any 是什么?

ANY 是 SQL 中的运算符。此运算符将给定值与每个子查询值进行比较,并返回满足条件的值。

ANY 运算符主要用于与 INSERT、UPDATE、DELETE 和 UPDATE SQL 语句一起的 HAVING 或 WHERE 子句。

如果至少一个子查询值根据给定条件匹配,它总是评估为 True。

在SQL语言中使用 ANY 运算符的语法:

SELECT Column_Name_1, Column_Name_2, Column_Name_3, ......, Column_Name_N FROM Table_Name WHERE Column_Name Comparison_Operator ANY (SELECT Column_Name FROM Table_Name WHERE [condition]); 

在语法中,ANY 运算符后面是 SQL 比较运算符,它有助于将列值与子查询进行比较。

以下是SQL中与 ANY 运算符一起使用的 SQL 比较运算符:

1. 等号运算符(=)

当列的值等于子查询的任何值时,具有 ANY 运算符的相等比较运算符的计算结果为 TRUE。

语法:

Column_Name = ANY (subquery);  

2.不等于运算符(!=)

当列的值不等于子查询的任何值时,此比较运算符与 ANY 运算符的计算结果为 TRUE。

语法:

Column_Name != ANY (subquery);  

3.大于运算符(>)

当列的值大于子查询的最小值时,此比较运算符与 ANY 运算符的计算结果为 TRUE。

语法:

Column_Name > ANY (subquery);  

4.小于运算符(<)

当列的值小于子查询的最大值时,此比较运算符与 ANY 运算符的计算结果为 TRUE。

语法:

Column_Name < ANY (subquery); 

5. 大于等于运算符 (>=)

当列的值大于或等于子查询的最小值时,此比较运算符与 ANY 运算符的计算结果为 TRUE。

语法:

Column_Name >= ANY (subquery);  

6.小于等于运算符(<=)

当列的值小于或等于子查询的最大值时,此比较运算符与 ANY 运算符的计算结果为 TRUE。

语法:

Column_Name <= ANY (subquery);  

二、SQL 中使用 ANY 的步骤

如果要在表中使用 SQL ANY 运算符来执行操作,则必须以相同的方式执行给定的步骤:

  1. 在系统中创建一个数据库。
  2. 创建两个新表。
  3. 在两个表中插入数据
  4. 查看两个表的插入数据
  5. 使用 ANY 运算符以不同方式查看数据。

现在,我们将通过一个 SQL 示例详细解释这些步骤:

第 1 步:创建简单的新数据库

首先,您必须使用SQL语言创建一个新数据库。那么,让我们开始吧。

以下查询在 SQL Server 中创建新的College数据库:

CREATE Database College;   

第 2 步:创建新表

现在,使用下面的 SQL 语法,它有助于在数据库中创建新表:

CREATE TABLE table_name    
(  
column_Name_1 data type (character_size of the column_1),    
column_Name_2 data type (character_size of the column_2),    
column_Name_3 data type (character_size of the column_3),    
...    
column_Name_N data type (character_size of the column_N)  
);    

以下SQL在College Database中创建Teacher_Info表:

CREATE TABLE Teacher_Info  
(  
Teacher_ID INT NOT NULL PRIMARY KEY,    
Teacher_First_Name VARCHAR (100),    
Teacher_Last_Name VARCHAR (100),    
Teacher_Dept_Id INT NOT NULL,  
Teacher_Address Varchar (80),  
Teacher_City Varchar (80),  
Teacher_Salary INT   
);  

以下SQL在College数据库中创建Department_Info表:

CREATE TABLE Department_Info  
(  
Dept_Id INT NOT NULL,  
Dept_Name Varchar(100),  
Head_Id INT  
);  

第 3 步:插入值

以下 INSERT 语句将教师记录插入到 Teacher_Info 表中:

INSERT INTO Teacher_Info (Teacher_ID, Teacher_First_Name, Teacher_Last_NameTeacher_Dept_Id, Teacher_Address, Teacher_City, Teacher_Salary) VALUES (1001, Arush, Sharma, 4001, 22 street, New Delhi, 20000);  
INSERT INTO Teacher_Info (Teacher_ID, Teacher_First_Name, Teacher_Last_NameTeacher_Dept_Id, Teacher_Address, Teacher_City, Teacher_Salary) VALUES (1002, Bulbul, Roy, 4002, 120 street, New Delhi, 38000 );  
INSERT INTO Teacher_Info (Teacher_ID, Teacher_First_Name, Teacher_Last_NameTeacher_Dept_Id, Teacher_Address, Teacher_City, Teacher_Salary) VALUES (1004, Saurabh, Sharma, 4001, 221 street, Mumbai, 45000);  
INSERT INTO Teacher_Info (Teacher_ID, Teacher_First_Name, Teacher_Last_NameTeacher_Dept_Id, Teacher_Address, Teacher_City, Teacher_Salary) VALUES (1005, Shivani, Singhania, 4001, 501 street, Kolkata, 42000);  
INSERT INTO Teacher_Info (Teacher_ID, Teacher_First_Name, Teacher_Last_NameTeacher_Dept_Id, Teacher_Address, Teacher_City, Teacher_Salary) VALUES (1006, Avinash, Sharma, 4002, 12 street, Delhi, 28000);  
INSERT INTO Teacher_Info (Teacher_ID, Teacher_First_Name, Teacher_Last_NameTeacher_Dept_Id, Teacher_Address, Teacher_City, Teacher_Salary)VALUES (1007, Shyam, Besas, 4003, 202 street, Lucknow, 35000);  

以下 INSERT 语句在 Department_Info 表中插入部门的记录:

INSERT INTO Department_Info (Dept_ID, Dept_Name, Head_Id) VALUES ( 4001, Arun, 1005);  
INSERT INTO Department_Info (Dept_ID, Dept_Name, Head_Id) VALUES ( 4002, Zayant, 1009);  
INSERT INTO Department_Info (Dept_ID, Dept_Name, Head_Id) VALUES ( 4003,   
Manish, 1007);  

第 4 步:查看表的数据

以下SQL显示了 Teacher_Info 表的数据。

SELECT * FROM Teacher_Info;   

输出结果为:

Teacher_Id Teacher_First_Name Teacher_Last_Name Teacher_Dept_Id Teacher_Address Teacher_City Teacher_Salary
1001 Arush Sharma 4001 22 Street New Delhi 20000
1002 Bulbul Roy 4002 120 Street New Delhi 38000
1004 Saurabh Roy 4001 221 Street Mumbai 45000
1005 Shivani Singhania 4001 501 Street Kolkata 42000
1006 Avinash Sharma 4002 12 Street Delhi 28000
1007 Shyam Besas 4003 202 Street Lucknow 35000

以下SQL显示了 Teacher_Info 表的数据。

SELECT * FROM Department_Info;   

第 5 步:使用 ANY 运算符查看表的数据

SELECT * FROM Teacher_Info WHERE Teacher_Id = ANY (SELECT Head_Id from Department_Info);  

此查询显示 Teacher_Info 表中教师的详细信息。在这里,老师也是 Department_Info 表中的部门负责人。

上面带有 Equal 运算符的 SELECT 查询的输出如下表所示:

Teacher_Id Teacher_First_Name Teacher_Last_Name Teacher_Dept_Id Teacher_Address Teacher_City Teacher_Salary
1005 Shivani Singhania 4001 501 Street Kolkata 42000
1007 Shyam Besas 4003 202 Street Lucknow 35000

以下查询使用具有小于运算符和 GROUP BY 子句的 ANY 运算符: 

SELECT * FROM Teacher_Info WHERE Teacher_Salary > ANY (SELECT AVG ( Teacher_Salary ) from Teacher_Info GROUP BY Teacher_Dept_Id );  

此查询显示所有工资低于每个部门平均工资的教师的详细信息。

上述带有小于运算符的 SELECT 查询的输出如下表所示:

Teacher_Id Teacher_First_Name Teacher_Last_Name Teacher_Dept_Id Teacher_Address Teacher_City Teacher_Salary
1001 Arush Sharma 4001 22 Street New Delhi 20000
1002 Bulbul Roy 4002 120 Street New Delhi 38000
1004 Saurabh Roy 4001 221 Street Mumbai 45000
1005 Shivani Singhania 4001 501 Street Kolkata 42000
1006 Avinash Sharma 4002 12 Street Delhi 28000
1007 Shyam Besas 4003 202 Street Lucknow 35000

热门文章

优秀文章