我们可以基于两个表之间的公共列或基于某些指定条件在 SQL 中连接两个表。有不同类型的 JOIN 可用于连接两个 SQL 表。
在这里,我们将讨论两个表上的 FULL 连接。在 FULL JOIN 中,来自两个表的所有记录都包含在结果中。对于未找到匹配项的记录,在两侧插入 NULL。
SELECT column1, column2... FROM table_1 FULL JOIN table_2 ON condition;
让有两个表,“学生”和“部门”如下 -
学生
+----------+--------------+-----------+ | id | Student_name | Dept_id | +----------+--------------+-----------+ | 1 | Rahul | 120 | | 2 | Rohit | 121 | | 3 | Kirat | 121 | | 4 | Inder | 123 | +----------+--------------+-----------+
部
+----------+-----------------+ | Dept_id | Department_name | +----------+-----------------+ | 120 | CSE | | 121 | Mathematics | | 122 | Physics | +----------+-----------------+
我们将根据两个表中通用的 dept_id 对上述表执行完全连接。
导入 MySQL 连接器
使用连接器建立连接 connect()
使用cursor()方法创建游标对象
使用适当的 mysql 语句创建查询
使用execute()方法执行 SQL 查询
关闭连接
import mysql.connector db=mysql.connector.connect(host="your host", user="your username", password="yourpassword",database="database_name") cursor=db.cursor() query="SELECT Students.Id,Students.Student_name,Department.Department_name FROM Students FULL JOIN Department ON Students.Dept_Id=Department.Dept_Id" cursor.execute(query) rows=cursor.fetchall() for x in rows: print(x) db.close()输出结果
(1, ‘Rahul’, ‘CSE’) (2, ‘Rohit’, ‘Mathematics’) (3, ‘Kirat’, ‘Mathenatics’) (4, ‘Inder’, None) (None, ‘Physics’)
请注意,即使某些记录没有匹配的记录,这两个表中的所有记录都包含在结果中。