您的位置:

SQL两个表关联查询

一、sql两个表关联查询where

在进行两个表关联查询时,where条件语句是必不可少的一部分。where语句可以用来过滤掉不需要的数据,达到快速准确的查询的目的。

例如,我们有一张名为student的表,内容如下:

+----+-------+------+------+---------+
| id | name  | age  | city | country |
+----+-------+------+------+---------+
|  1 | Tom   |   20 | 北京 | 中国    |
|  2 | Jack  |   21 | 上海 | 中国    |
|  3 | Lily  |   20 | 北京 | 中国    |
|  4 | Kate  |   23 | 北京 | 美国    |
|  5 | David |   22 | 上海 | 美国    |
+----+-------+------+------+---------+

再有一张名为score的表,内容如下:

+----+---------+-------+
| id | student | score |
+----+---------+-------+
|  1 |       1 |    90 |
|  2 |       2 |    80 |
|  3 |       3 |    95 |
|  4 |       4 |    78 |
|  5 |       5 |    87 |
+----+---------+-------+

现在我们需要查询出选了“北京”这个城市的学生的成绩。

sql语句如下:

SELECT student.name, score.score FROM student, score WHERE student.id=score.student AND student.city="北京"

执行结果如下:

+------+-------+
| name | score |
+------+-------+
| Tom  |    90 |
| Lily |    95 |
| Kate |    78 |
+------+-------+

二、sql关联查询两个表

在进行两个表关联查询时,我们需要用到join关键字。join关键字用于将两个表进行连接,以实现数据查询。

例如,我们需要查询每个学生的成绩,sql语句如下:

SELECT student.name, score.score FROM student INNER JOIN score ON student.id=score.student

执行结果如下:

+-------+-------+
| name  | score |
+-------+-------+
| Tom   |    90 |
| Jack  |    80 |
| Lily  |    95 |
| Kate  |    78 |
| David |    87 |
+-------+-------+

三、sql两个表关联查询显示中文

sql两表关联查询时,如果需要在结果集中显示中文,需要对中文进行转义。

例如,我们要查询每个学生的单位和国籍,sql语句如下:

SELECT student.name, CONCAT(student.city,", ",student.country) as unit, score.score, score.date FROM student INNER JOIN score ON student.id=score.student

执行结果如下:

+-------+--------+-------+------------+
| name  | unit   | score | date       |
+-------+--------+-------+------------+
| Tom   | 北京, 中国 |    90 | 2022-06-18 |
| Jack  | 上海, 中国 |    80 | 2022-06-18 |
| Lily  | 北京, 中国 |    95 | 2022-06-18 |
| Kate  | 北京, 美国 |    78 | 2022-06-18 |
| David | 上海, 美国 |    87 | 2022-06-18 |
+-------+--------+-------+------------+

四、sql两个表关联查询分别查一部分

在两个表关联查询时,有时候需要只查询一个表中的部分数据,例如只查询学生表中“北京”学生的成绩。

sql语句如下:

SELECT student.name, score.score FROM student INNER JOIN score ON student.id=score.student WHERE student.city="北京"

执行结果如下:

+------+-------+
| name | score |
+------+-------+
| Tom  |    90 |
| Lily |    95 |
| Kate |    78 |
+------+-------+

五、sql三个表关联查询

在进行三个表关联查询时,我们需要用到多个join关键字,以实现三个表之间的数据查询。

例如,我们有一张名为teacher的表,内容如下:

+----+------+--------+
| id | name | course |
+----+------+--------+
|  1 | 张老师 | 语文    |
|  2 | 李老师 | 数学    |
|  3 | 王老师 | 英语    |
+----+------+--------+

现在我们需要查询每个学生的成绩和所选课程的老师的名字。

sql语句如下:

SELECT student.name, score.score, course.name, teacher.name FROM student, score, course, teacher WHERE student.id=score.student AND score.course=course.id AND course.teacher=teacher.id

执行结果如下:

+-------+-------+--------+--------+
| name  | score | name   | name   |
+-------+-------+--------+--------+
| Tom   |    90 | 语文    | 张老师 |
| Jack  |    80 | 数学    | 李老师 |
| Lily  |    95 | 英语    | 王老师 |
| Kate  |    78 | 语文    | 张老师 |
| David |    87 | 数学    | 李老师 |
+-------+-------+--------+--------+

六、两张表关联查询sql语句

在两张表关联查询时,我们可以使用内连接(inner join)进行关联查询。

例如,我们查询每个学生的成绩和所在城市,sql语句如下:

SELECT student.name, student.city, score.score FROM student INNER JOIN score ON student.id=score.student

执行结果如下:

+-------+--------+-------+
| name  | city   | score |
+-------+--------+-------+
| Tom   | 北京 |    90 |
| Jack  | 上海 |    80 |
| Lily  | 北京 |    95 |
| Kate  | 北京 |    78 |
| David | 上海 |    87 |
+-------+--------+-------+

七、多表关联查询sql规则

在进行多表关联查询时,我们必须要遵守一些规则,例如:

1、关联条件必须存在,且尽量唯一确定一行数据。

2、避免使用笛卡尔积,即尽量避免使用多个左连接,调整查询顺序,使查询结果较小。

3、尽量使用内连接,防止结果集中存在大量null值。

八、数据库两个表关联查询语句

针对不同的数据库,两个表关联查询的语句也有一些差异。

例如,在MySQL中,我们可以使用join关键字来进行关联查询,如下:

SELECT student.name, score.score FROM student INNER JOIN score ON student.id=score.student

而在Oracle数据库中,则使用“+”运算符进行关联查询,如下:

SELECT student.name, score.score FROM student, score WHERE student.id=score.student(+)

在SQL Server中,可以使用left/right join关键字进行关联查询,如下:

SELECT student.name, score.score FROM student LEFT JOIN score ON student.id=score.student
以上是关于SQL两个表关联查询的详细介绍,希望对大家有所帮助。