SQL SET运算符

SQL SET运算符

SET运算符是一种特殊类型的运算符,用于合并两个查询的结果。

涵盖在SET运算符下的运算符有:

  1. UNION(合并)
  2. UNION ALL(合并所有)
  3. INTERSECT(交集)
  4. MINUS(差集)

SQL SET运算符

在SQL中使用集合操作符进行操作时,必须遵循一定的规则。规则如下:

  1. 列的数量和顺序必须相同。
  2. 数据类型必须兼容

让我们通过示例更详细地了解每个SET操作符。

所有示例将使用MySQL数据库编写。

考虑以下带有给定数据的表:

表1:t_employees

ID Name Department Salary Year_of_Experience
1 Aakash Singh Development 72000 2
2 Abhishek Pawar Production 45000 1
3 Pranav Deshmukh HR 59900 3
4 Shubham Mahale Accounts 57000 2
5 Sunil Kulkarni Development 87000 3
6 Bhushan Wagh R&D 75000 2
7 Paras Jaiswal Marketing 32000 1

表2:t2_employees

ID Name Department Salary Year_of_Experience
1 Prashant Wagh R&D 49000 1
2 Abhishek Pawar Production 45000 1
3 Gautam Jain Development 56000 4
4 Shubham Mahale Accounts 57000 2
5 Rahul Thakur Production 76000 4
6 Bhushan Wagh R&D 75000 2
7 Anand Singh Marketing 28000 1

表3:t_students

ID Name Hometown Percentage Favourite_Subject
1 Soniya Jain Udaipur 89 Physics
2 Harshada Sharma Kanpur 92 Chemistry
3 Anuja Rajput Jaipur 78 History
4 Pranali Singh Nashik 88 Geography
5 Renuka Deshmukh Panipat 90 Biology
6 Swati Kumari Faridabad 93 English
7 Prachi Jaiswal Gurugram 96 Hindi

表格4: t2_students

ID Name Hometown Percentage Favourite_Subject
1 Soniya Jain Udaipur 89 Physics
2 Ishwari Dixit Delhi 86 Hindi
3 Anuja Rajput Jaipur 78 History
4 Pakhi Arora Surat 70 Sanskrit
5 Renuka Deshmukh Panipat 90 Biology
6 Jayshree Patel Pune 91 Maths
7 Prachi Jaiswal Gurugram 96 Hindi

1. UNION:

  • UNION将用于合并两个select语句的结果。
  • 执行UNION操作后,结果中的重复行将被消除。

示例1:

编写一个查询来执行表t_employees和表t2_employees之间的并集。

查询:

mysql> SELECT *FROM t_employees UNION SELECT *FROM t2_employees;

在这个单一查询中,我们编写了两个SELECT查询。第一个SELECT查询将从t_employees表中获取记录,并与第二个SELECT查询从t2_employees表中获取的记录执行UNION操作。

您将获得以下输出:

ID Name Department Salary Year_of_Experience
1 Aakash Singh Development 72000 2
2 Abhishek Pawar Production 45000 1
3 Pranav Deshmukh HR 59900 3
4 Shubham Mahale Accounts 57000 2
5 Sunil Kulkarni Development 87000 3
6 Bhushan Wagh R&D 75000 2
7 Paras Jaiswal Marketing 32000 1
1 Prashant Wagh R&D 49000 1
3 Gautam Jain Development 56000 4
5 Rahul Thakur Production 76000 4
7 Anand Singh Marketing 28000 1

由于我们在这两个表之间进行了联合操作,所以只显示了第一个和第二个表中的记录,重复记录除外。

示例2:

编写一个查询,执行表t_students和表t2_students之间的联合操作。

查询:

mysql> SELECT *FROM t_students UNION SELECT *FROM t2_students;

在这里,我们用一个查询写了两个SELECT查询。第一个SELECT查询将从t_students表中获取记录,并执行与第二个SELECT查询从t2_students表中获取的记录的UNION操作。

您将获得以下输出:

ID Name Department Salary Year_of_Experience
1 Soniya Jain Udaipur 89 Physics
2 Harshada Sharma Kanpur 92 Chemistry
3 Anuja Rajput Jaipur 78 History
4 Pranali Singh Nashik 88 Geography
5 Renuka Deshmukh Panipat 90 Biology
6 Swati Kumari Faridabad 93 English
7 Prachi Jaiswal Gurugram 96 Hindi
2 Ishwari Dixit Delhi 86 Hindi
4 Pakhi Arora Surat 70 Sanskrit
6 Jayshree Patel Pune 91 Maths

由于我们在两个表之间执行了并集操作,所以只显示来自第一个和第二个表的记录,重复记录除外。

2. UNION ALL

  • 此运算符将合并两个查询的所有记录。
  • 在执行 UNION ALL 操作后,结果中不会消除重复行。

示例1:

在表t_employees和表t2_employees之间执行并集all操作的查询。

查询:

mysql> SELECT *FROM t_employees UNION ALL SELECT *FROM t2_employees;

在这个单个查询中,我们编写了两个SELECT查询。第一个SELECT查询将从t_employees表中获取记录,并通过第二个SELECT查询从t2_employees表中获取记录进行UNION ALL操作。

您将获得以下输出:

ID Name Department Salary Year_of_Experience
1 Aakash Singh Development 72000 2
2 Abhishek Pawar Production 45000 1
3 Pranav Deshmukh HR 59900 3
4 Shubham Mahale Accounts 57000 2
5 Sunil Kulkarni Development 87000 3
6 Bhushan Wagh R&D 75000 2
7 Paras Jaiswal Marketing 32000 1
1 Prashant Wagh R&D 49000 1
2 Abhishek Pawar Production 45000 1
3 Gautam Jain Development 56000 4
4 Shubham Mahale Accounts 57000 2
5 Rahul Thakur Production 76000 4
6 Bhushan Wagh R&D 75000 2
7 Anand Singh Marketing 28000 1

因为我们在两个表之间执行了union all操作,所以显示了来自第一个和第二个表的所有记录,包括重复的记录。

例子2:

编写一个查询,执行表t_students和表t2_students之间的union all操作。

查询:

mysql> SELECT *FROM t_students UNION ALL SELECT *FROM t2_students;

在这里,我们通过一个查询同时写入了两个SELECT查询。第一个SELECT查询会从t_students表中获取记录,并通过UNION ALL操作与从t2_students表中获取的记录进行合并。

你将获得以下输出结果:

ID Name Hometown Percentage Favourite_Subject
1 Soniya Jain Udaipur 89 Physics
2 Harshada Sharma Kanpur 92 Chemistry
3 Anuja Rajput Jaipur 78 History
4 Pranali Singh Nashik 88 Geography
5 Renuka Deshmukh Panipat 90 Biology
6 Swati Kumari Faridabad 93 English
7 Prachi Jaiswal Gurugram 96 Hindi
1 Soniya Jain Udaipur 89 Physics
2 Ishwari Dixit Delhi 86 Hindi
3 Anuja Rajput Jaipur 78 History
4 Pakhi Arora Surat 70 Sanskrit
5 Renuka Deshmukh Panipat 90 Biology
6 Jayshree Patel Pune 91 Maths
7 Prachi Jaiswal Gurugram 96 Hindi

由于我们在两个表之间执行了union all操作,所以显示了第一个表和第二个表的所有记录,包括重复的记录。

3. 交集:

  • 它用于组合两个SELECT语句,但它只返回两个SELECT语句中共同的记录。

示例1:

编写查询来执行表t_employees和表t2_employees之间的交集操作。

查询:

mysql> SELECT *FROM t_employees INTERSECT SELECT *FROM t2_employees;

在这里,我们一次查询中编写了两个SELECT查询。第一个SELECT查询将取回t_employees表中的记录,并与第二个SELECT查询从t2_employees表中取回的记录执行INTERSECT操作。

您将得到以下输出:

ID Name Hometown Percentage Favourite_Subject
2 Abhishek Pawar Production 45000 1
4 Shubham Mahale Accounts 57000 2
6 Bhushan Wagh R&D 75000 2

自从我们在这两个表之间执行了交集操作,所以只有来自这两个表的公共记录会显示出来。

示例2:

编写一个查询,在表格t_students和表格t2_students之间执行交集操作。

查询:

mysql> SELECT *FROM t_students INTERSECT SELECT *FROM t2_students;

在这个单一的查询中,我们编写了两个SELECT查询语句。第一个SELECT查询语句将从t_students表中提取记录,并与第二个SELECT查询语句从t2_students表中提取的记录执行UNION操作。

你将得到以下输出:

ID Name Hometown Percentage Favourite_Subject
1 Soniya Jain Udaipur 89 Physics
3 Anuja Rajput Jaipur 78 History
5 Renuka Deshmukh Panipat 90 Biology
7 Prachi Jaiswal Gurugram 96 Hindi

由于我们在两个表之间执行了交集操作,所以只显示了两个表中的公共记录。

  1. MINUS
  • 它显示了在第一个查询中存在但在第二个查询中不存在的行,且没有重复。

示例 1:

编写一个查询,在表t_employees和表t2_employees之间执行MINUS操作。

查询:

mysql> SELECT *FROM t_employees MINUS SELECT *FROM t2_employees;

在这个查询中,我们编写了两个SELECT查询。第一个SELECT查询将从t_employees表中获取记录,并执行MINUS操作,从t2_employees表中获取的记录中进行操作。

你将得到以下输出:

ID Name Department Salary Year_of_Experience
1 Aakash Singh Development 72000 2
3 Pranav Deshmukh HR 59900 3
5 Sunil Kulkarni Development 87000 3
7 Paras Jaiswal Marketing 32000 1

由于我们在两个表之间执行了Minus操作,所以只显示了两个表中不匹配的记录。

示例2:

编写一个查询来执行表t_students和表t2_students之间的Minus操作。

查询:

mysql> SELECT *FROM t_students MINUS SELECT *FROM t2_students;

在这个查询中,我们编写了两个SELECT查询。第一个SELECT查询将从t_employees表中获取记录,并在第二个SELECT查询从t2_employees表中获取的记录上执行UNION操作。

您将获得以下输出:

ID Name Hometown Percentage Favourite_Subject
2 Harshada Sharma Kanpur 92 Chemistry
4 Pranali Singh Nashik 88 Geography
6 Swati Kumari Faridabad 93 English

由于我们在两个表之间执行了减法运算,所以仅显示来自两个表的不匹配的记录。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程