MySQL数据库学习之去重与连接查询详解
在使用MySQL时,去重和连接查询是两个常用的操作,本篇文章将详细讲解它们的使用方法。
去重查询
在MySQL中,使用DISTINCT
关键字可以去重查询,示例代码如下:
SELECT DISTINCT column1, column2, ... FROM table_name;
其中,column1, column2, ...
代表需要查询的字段名,多个字段之间用逗号隔开;table_name
代表需要查询的表名。
为了更好的说明,接下来以学生表为例进行说明,学生表结构如下:
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
id | int(11) | NO | PRI | NULL | auto_increment |
name | varchar(20) | YES | NULL | ||
score | int(11) | YES | NULL |
在学生表中,查询学生的所有姓名时,可以使用以下SQL语句:
SELECT DISTINCT name FROM student;
将会返回不重复的学生姓名。
连接查询
连接查询用于连接多个表进行查询,MySQL中提供了三种连接方式:内连接、左连接和右连接。
内连接
内连接(Inner Join)用于查询两个表中满足条件的记录,假设有两个表A和B,内连接查询语句如下:
SELECT column1, column2, ... FROM tableA INNER JOIN tableB ON condition;
其中,tableA
和tableB
代表需要连接的两个表,condition
代表连接条件。
以学生表和课程表为例,学生表包含学生的姓名和课程表包含课程的名称和对应学生姓名,现在需要查询学生名字和各自所选的课程名字,可以使用以下SQL语句:
SELECT student.name, course.course_name FROM student INNER JOIN course ON student.name = course.student_name;
左连接
左连接(Left Join)用于查询左表中所有记录以及与右表满足条件的记录,假设有两个表A和B,左连接查询语句如下:
SELECT column1, column2, ... FROM tableA LEFT JOIN tableB ON condition;
其中,tableA
和tableB
代表需要连接的两个表,condition
代表连接条件。
以学生表和课程表为例,现在需要查询所有学生以及所选的课程,如果学生没有所选课程也需要显示出来,可以使用以下SQL语句:
SELECT student.name, course.course_name FROM student LEFT JOIN course ON student.name = course.student_name;
右连接
右连接(Right Join)用于查询右表中所有记录以及与左表满足条件的记录,假设有两个表A和B,右连接查询语句如下:
SELECT column1, column2, ... FROM tableA RIGHT JOIN tableB ON condition;
其中,tableA
和tableB
代表需要连接的两个表,condition
代表连接条件。
以学生表和课程表为例,现在需要查询所有选课以及对应的学生,如果课程没有被学生选也需要显示出来,可以使用以下SQL语句:
SELECT student.name, course.course_name FROM student RIGHT JOIN course ON student.name = course.student_name;
通过上述示例,相信大家对用于去重和连接查询的SQL语句有了更好的理解。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySQL数据库学习之去重与连接查询详解 - Python技术站