SQL 如何使用ALL关键字
在这个SQL部分,我们将讨论如何在Structured Query Language中使用’ALL’关键字与表格进行操作。为了理解’ALL’关键字的示例,我们首先需要知道它是什么。
SQL中的Any是什么?
ALL是SQL中的一个操作符。该操作符将单个记录与子查询返回的所有记录进行比较。该操作符通常与SQL比较操作符一起使用,后跟内部查询。
在Structured Query Language中使用ALL操作符的语法:
SELECT Column_Name_1, Column_Name_2, Column_Name_3, ……, Column_Name_N FROM Table_Name WHERE Column_Name Comparison_Operator ALL (SELECT Column_Name FROM Table_Name WHERE [condition]);
在ALL语法中,ALL操作符后面跟着SQL比较操作符,用于将列值与子查询进行比较。
我们可以在SQL语句中使用以下比较操作符与ALL操作符一起使用:
1. 等于操作符 (=)
当指定列的值等于返回列表中的任何值时,此比较操作符与ALL操作符的结果为TRUE。
语法:
Column_Name = ALL (subquery);
2. 不等于运算符(!=)
当指定列的值与返回列表的任何值不相等时,此比较运算符与 ALL 运算符一起评估为 TRUE。
语法:
Column_Name != ALL (subquery);
3. 大于运算符( >)
使用ALL运算符的这个比较运算符在指定列的值大于返回列表的最大值时返回TRUE。
语法:
Column_Name > ALL (subquery);
4. 小于运算符( <)
当指定列的值小于返回列表的最小值时,此比较运算符与ALL运算符一起求值为TRUE。
语法:
Column_Name < ALL (subquery);
5. 大于等于运算符( >=)
该使用ALL运算符的比较运算符在指定列的值大于或等于返回列表的最大值时评估为TRUE。
语法:
Column_Name >= ALL (subquery);
6. 小于等于运算符( <=)
此比较运算符与ALL运算符结合使用时,当指定列的值小于或等于返回列表中的最小值时,将返回TRUE。
语法:
Column_Name <= ALL (subquery);
如果您想在SQL的表中执行“ALL”运算符,则必须按照以下步骤一一参照给定方式进行:
- 创建一个数据库。
- 创建两个新的表。
- 向两个表中插入数据。
- 查看两个表中插入的数据。
- 使用ALL运算符以不同方式查看数据。
现在,我们将使用一个SQL示例详细解释这些步骤:
第一步:创建简单的新数据库
首先,您需要使用结构化查询语言创建一个新的数据库。让我们开始吧。
以下查询在SQL服务器中创建新的University数据库:
CREATE Database University;
第二步:创建新表
现在,使用下面的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)
);
下面的查询在 University 数据库中创建 Faculty_Info 表:
CREATE TABLE Faculty_Info
(
Faculty_ID INT NOT NULL PRIMARY KEY,
Faculty_First_Name VARCHAR (100),
Faculty_Last_Name VARCHAR (100),
Faculty_Dept_Id INT NOT NULL,
Faculty_Address Varchar (80),
Faculty_City Varchar (80),
Faculty_Salary INT
);
下面的查询在 University 数据库中创建了 Department_Info 表:
CREATE TABLE Department_Info
(
Dept_Id INT NOT NULL,
Dept_Name Varchar(100),
Head_Id INT
);
步骤3:插入数值
以下INSERT查询将Faculty的记录插入到Faculty_Info表中:
INSERT INTO Faculty_Info (Faculty_ID, Faculty_First_Name, Faculty_Last_Name Faculty_Dept_Id, Faculty_Address, Faculty_City, Faculty_Salary) VALUES (1001, Shivam, Gupta, 4001, 22 street, Kochi, 20000);
INSERT INTO Faculty_Info (Faculty_ID, Faculty_First_Name, Faculty_Last_Name Faculty_Dept_Id, Faculty_Address, Faculty_City, Faculty_Salary) VALUES (1002, Bella, Devgan, 4002, 120 street, Kochi, 38000 );
INSERT INTO Faculty_Info (Faculty_ID, Faculty_First_Name, Faculty_Last_Name Faculty_Dept_Id, Faculty_Address, Faculty_City, Faculty_Salary) VALUES (1004, Saurabh, Gupta, 4001, 221 street, Mumbai, 45000);
INSERT INTO Faculty_Info (Faculty_ID, Faculty_First_Name, Faculty_Last_Name Faculty_Dept_Id, Faculty_Address, Faculty_City, Faculty_Salary) VALUES (1005, Ramika, Singhania, 4001, 501 street, Jaipur, 42000);
INSERT INTO Faculty_Info (Faculty_ID, Faculty_First_Name, Faculty_Last_Name Faculty_Dept_Id, Faculty_Address, Faculty_City, Faculty_Salary) VALUES (1006, Avinash, Gupta, 4002, 12 street, Delhi, 28000);
INSERT INTO Faculty_Info (Faculty_ID, Faculty_First_Name, Faculty_Last_Name Faculty_Dept_Id, Faculty_Address, Faculty_City, Faculty_Salary)VALUES (1007, Yadu, Besas, 4003, 202 street, Chandigarh, 35000);
以下INSERT查询将记录插入Department_Info表中的部门信息:
INSERT INTO Department_Info (Dept_ID, Dept_Name, Head_Id) VALUES ( 4001, Teaching, 1005);
INSERT INTO Department_Info (Dept_ID, Dept_Name, Head_Id) VALUES ( 4002, Account, 1009);
INSERT INTO Department_Info (Dept_ID, Dept_Name, Head_Id) VALUES ( 4003,
Sports, 1007);
克拉(货币单位)
第四步:查看表的数据
下面的查询显示Faculty_Info表的数据。
SELECT * FROM Faculty_Info;
Faculty_Id | Faculty_First_Name | Faculty_Last_Name | Faculty_Dept_Id | Faculty_Address | Faculty_City | Faculty_Salary |
---|---|---|---|---|---|---|
1001 | Shivam | Gupta | 4001 | 22 Street | Kochi | 20000 |
1002 | Bella | Devgan | 4002 | 120 Street | Kochi | 38000 |
1004 | Saurabh | Devgan | 4001 | 221 Street | Mumbai | 45000 |
1005 | Ramika | Singhania | 4001 | 501 Street | Jaipur | 42000 |
1006 | Avinash | Gupta | 4002 | 12 Street | Delhi | 28000 |
1007 | Yadu | Besas | 4003 | 202 Street | Chandigarh | 35000 |
以下查询显示Faculty_Info表的数据。
SELECT * FROM Department_Info;
Dept_Id | Dept_Name | Head_Id |
---|---|---|
4001 | Teaching | 1005 |
4002 | Account | 1009 |
4003 | Sports | 1007 |
第 5 步:使用 ALL 运算符查看表的数据
下面的查询使用 ALL 运算符和等号比较运算符:
SELECT * FROM Faculty_Info WHERE Faculty_Id = ALL (SELECT Head_Id from Department_Info);
这个查询显示Faculty_Info表中那个同时也是Department_Info表头部的Faculty的详细信息。
上述SELECT查询使用的等号运算符的输出结果显示在下表中:
Faculty_Id | Faculty_First_Name | Faculty_Last_Name | Faculty_Dept_Id | Faculty_Address | Faculty_City | Faculty_Salary |
---|---|---|---|---|---|---|
1005 | Ramika | Singhania | 4001 | 501 Street | Jaipur | 42000 |
1007 | Yadu | Besas | 4003 | 202 Street | Chandigarh | 35000 |
以下查询使用ALL运算符与小于运算符和GROUP BY子句:
SELECT * FROM Faculty_Info WHERE Faculty_Salary < ALL (SELECT AVG ( Faculty_Salary ) from Faculty_Info GROUP BY Faculty_Dept_Id );
首先,您需要在结构化查询语言中创建一个新的数据库。所以,让我们开始吧。
以下查询在SQL服务器中创建了新的 大学 数据库:
CREATE Database University;
这个查询显示了所有薪资低于每个部门平均薪资的教职员工的详细信息。
上述带有小于操作符的SELECT查询的输出如下表所示:
Faculty_Id | Faculty_First_Name | Faculty_Last_Name | Faculty_Dept_Id | Faculty_Address | Faculty_City | Faculty_Salary |
---|---|---|---|---|---|---|
1001 | Shivam | Gupta | 4001 | 22 Street | Kochi | 20000 |
1006 | Avinash | Gupta | 4002 | 12 Street | Delhi | 28000 |
1007 | Yadu | Besas | 4003 | 202 Street | Chandigarh | 35000 |
以下查询使用ALL运算符与大于运算符和GROUP BY子句:
SELECT * FROM Faculty_Info WHERE Faculty_Salary > ALL (SELECT AVG ( Faculty_Salary ) from Faculty_Info GROUP BY Faculty_Dept_Id );
此查询显示了工资高于每个部门平均工资的所有教职员工的详细信息。
上述带有大于运算符的SELECT查询的输出显示在下表中:
Faculty_Id | Faculty_First_Name | Faculty_Last_Name | Faculty_Dept_Id | Faculty_Address | Faculty_City | Faculty_Salary |
---|---|---|---|---|---|---|
1001 | Shivam | Gupta | 4001 | 22 Street | Kochi | 20000 |
1002 | Bella | Devgan | 4002 | 120 Street | Kochi | 38000 |
1004 | Saurabh | Devgan | 4001 | 221 Street | Mumbai | 45000 |
1005 | Ramika | Singhania | 4001 | 501 Street | Jaipur | 42000 |
1006 | Avinash | Gupta | 4002 | 12 Street | Delhi | 28000 |
1007 | Yadu | Besas | 4003 | 202 Street | Chandigarh | 35000 |