Mysql双表联合查询简单实现(mysql两表查询单个)

Mysql双表联合查询简单实现

在实际的开发中,我们经常需要查询多个表的数据,而在Mysql中,使用联合查询可以轻松的完成这个任务。本文将介绍如何使用Mysql进行双表联合查询,并给出一个简单实现的示例。

为了更好的演示,我们将使用两个表:学生表和成绩表。学生表包含三个字段:学生id、姓名和性别;成绩表包含四个字段:成绩id、学生id、科目和分数。

1. 创建表

我们需要创建学生表和成绩表。在此我们假设你已经安装了Mysql,并拥有相应的数据操作权限。以下是创建表的SQL语句:

CREATE TABLE students (id INT PRIMARY KEY,
name VARCHAR(20) NOT NULL,
gender CHAR(1) NOT NULL);

CREATE TABLE scores (id INT PRIMARY KEY,
student_id INT NOT NULL,
subject VARCHAR(20) NOT NULL,
score INT NOT NULL);

2. 插入数据

接下来,我们需要往这两个表中插入一些数据。以下是插入数据的SQL语句:

INSERT INTO students (id, name, gender) VALUES (1, '张三', '男');
INSERT INTO students (id, name, gender) VALUES (2, '李四', '女');
INSERT INTO students (id, name, gender) VALUES (3, '王五', '男');
INSERT INTO scores (id, student_id, subject, score) VALUES (1, 1, '数学', 90);
INSERT INTO scores (id, student_id, subject, score) VALUES (2, 1, '语文', 85);
INSERT INTO scores (id, student_id, subject, score) VALUES (3, 2, '数学', 95);
INSERT INTO scores (id, student_id, subject, score) VALUES (4, 2, '语文', 80);
INSERT INTO scores (id, student_id, subject, score) VALUES (5, 3, '数学', 92);
INSERT INTO scores (id, student_id, subject, score) VALUES (6, 3, '语文', 95);

3. 双表联合查询

现在,我们可以开始进行双表联合查询。以下是联合查询的SQL语句:

SELECT students.id, students.name, scores.subject, scores.score
FROM students JOIN scores ON students.id = scores.student_id;

以上查询会将学生表和成绩表的数据联合在一起,查询结果如下:

+----+--------+---------+-------+
| id | name | subject | score |
+----+--------+---------+-------+
| 1 | 张三 | 数学 | 90 |
| 1 | 张三 | 语文 | 85 |
| 2 | 李四 | 数学 | 95 |
| 2 | 李四 | 语文 | 80 |
| 3 | 王五 | 数学 | 92 |
| 3 | 王五 | 语文 | 95 |
+----+--------+---------+-------+

上述SQL语句中,JOIN关键字表示联合查询,ON关键字表示联合条件。

4. 示例代码

实际开发中,我们通常将Mysql查询语句封装成函数或方法,以便于程序员的使用。以下是一个Python函数示例,用于查询以上两个表的联合数据:

import pymysql
host = 'localhost'
port = 3306
user = 'root'
password = 'root'
database = 'test'

def query_student_scores():
conn = pymysql.connect(host=host, port=port, user=user, password=password, database=database)
cursor = conn.cursor()
sql = """
SELECT students.id, students.name, scores.subject, scores.score
FROM students JOIN scores ON students.id = scores.student_id;
"""
cursor.execute(sql)
result = cursor.fetchall()
conn.close()
return result

if __name__ == '__mn__':
result = query_student_scores()
for row in result:
print(row)

以上代码中,我们使用了Python的pymysql库进行Mysql数据库操作。函数query_student_scores()返回一个二元组列表,每个二元组包含查询结果的每一行数据。我们在主函数中调用该函数并输出查询结果。

总结

本文介绍了如何使用Mysql进行双表联合查询,并给出了一个简单实现的示例代码。双表联合查询可以将多个表的数据联合在一起,提高数据查询的效率。在实际开发中,可以封装查询函数或方法,以便于程序员的使用。


数据运维技术 » Mysql双表联合查询简单实现(mysql两表查询单个)