使用Python解释和展示MySQL中UNION的用法
在MySQL中,我们可以使用UNION关键字将两个或多个SELECT语句的结果合并成一个结果集。它将去除掉重复的记录,但是要注意,UNION的结果是按照第一个SELECT语句的列顺序排序的。
更多Python教程,请阅读:Python 教程
下面我们将使用Python语言连接到MySQL数据库,并使用UNION关键字来合并两个表的数据。假设我们有两个表:employees和customers,它们均具有以下结构:
CREATE TABLE employees(
emp_id INT PRIMARY KEY,
emp_name VARCHAR(50),
emp_salary DOUBLE
);
CREATE TABLE customers(
cust_id INT PRIMARY KEY,
cust_name VARCHAR(50),
cust_address VARCHAR(255)
);
现在我们将使用Python来连接到MySQL,并使用UNION关键字合并这两个表。首先,我们需要安装pymysql模块,让我们输入以下命令:
!pip install pymysql
接下来,我们将使用以下代码连接到MySQL数据库:
import pymysql
# 打开数据库连接
db = pymysql.connect("localhost","username","password","database_name" )
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
我们可以使用以下代码创建employees和customers表,并将数据存储在其中:
# 创建employees表
cursor.execute("CREATE TABLE employees(emp_id INT PRIMARY KEY, emp_name VARCHAR(50), emp_salary DOUBLE)")
# 插入数据到employees表
cursor.execute("INSERT INTO employees VALUES (1,'Alice',5000),(2,'Bob',6000),(3,'Charlie',7000)")
# 创建customers表
cursor.execute("CREATE TABLE customers(cust_id INT PRIMARY KEY, cust_name VARCHAR(50), cust_address VARCHAR(255))")
# 插入数据到customers表
cursor.execute("INSERT INTO customers VALUES (1,'David','123 Main St.'),(2,'Emma','456 Broadway'),(3,'Frank','789 Park Ave.')")
现在,我们可以使用以下代码使用UNION关键字从这两个表中检索数据:
# 使用UNION关键字检索数据
cursor.execute("SELECT emp_name, emp_salary FROM employees UNION SELECT cust_name, NULL FROM customers")
# 获取查询结果
result = cursor.fetchall()
# 输出结果
for row in result:
print(row)
在以上代码中,我们使用了UNION关键字将employees表中的emp_name和emp_salary列与customers表中的cust_name列合并,并将cust_address列替换为NULL。最终,我们通过fetchall()方法获取整个结果集,并使用for循环输出结果。
完整的Python代码如下:
import pymysql
# 打开数据库连接
db = pymysql.connect("localhost","username","password","database_name" )
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
# 创建employees表
cursor.execute("CREATE TABLE employees(emp_id INT PRIMARY KEY, emp_name VARCHAR(50), emp_salary DOUBLE)")
# 插入数据到employees表
cursor.execute("INSERT INTO employees VALUES (1,'Alice',5000),(2,'Bob',6000),(3,'Charlie',7000)")
# 创建customers表
cursor.execute("CREATE TABLE customers(cust_id INT PRIMARY KEY, cust_name VARCHAR(50), cust_address VARCHAR(255))")
# 插入数据到customers表
cursor.execute("INSERT INTO customers VALUES (1,'David','123 Main St.'),(2,'Emma','456 Broadway'),(3,'Frank','789 Park Ave.')")
# 使用UNION关键字检索数据
cursor.execute("SELECT emp_name, emp_salary FROM employees UNION SELECT cust_name, NULL FROM customers")
# 获取查询结果
result = cursor.fetchall()
# 输出结果
for row in result:
print(row)
# 断开数据库连接
db.close()
结论
在MySQL中,我们可以使用UNION关键字将两个或多个SELECT语句的结果合并成一个结果集。在Python中,我们可以通过安装pymysql模块并使用以上代码来连接到MySQL数据库,并使用UNION关键字来合并两张表的数据。