一、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两个表关联查询的详细介绍,希望对大家有所帮助。