如何在 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 运算符来执行操作,则必须以相同的方式执行给定的步骤:
- 在系统中创建一个数据库。
- 创建两个新表。
- 在两个表中插入数据
- 查看两个表的插入数据
- 使用 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 |
热门文章
优秀文章