快捷搜索:  汽车  科技

mysql多表连接的方式有哪些(MySQL中多表连接查询)

mysql多表连接的方式有哪些(MySQL中多表连接查询)sql92语法select * from student_name stu score sc where stu.id = sc.sid;select * from student_name inner join score;查询结果为笛卡尔积#2 使用sql92语法查询学生姓名和相对应的课程名称、成绩

mysql多表连接的方式有哪些(MySQL中多表连接查询)(1)

学生信息表student_name和学生成绩表score

在关系型数据库中,表与表之间是有联系的,所以在实际应用中,经常使用多表查询。多表查询就是同时查询两个或两个以上的表。

当连接的表之间没有关系时,这时返回结果就是两个表的笛卡尔积,返回结果数量就是两个表的数据行相乘。需要注意的是,如果每个表有 1000 行,那么返回结果的数量就有 1000×1000 = 1000000 行,数据量是非常巨大的。

#1 没有加连接条件,查询结果为笛卡尔积

select * from student_name inner join score;

mysql多表连接的方式有哪些(MySQL中多表连接查询)(2)

查询结果为笛卡尔积

#2 使用sql92语法查询学生姓名和相对应的课程名称、成绩

select * from student_name stu score sc where stu.id = sc.sid;

mysql多表连接的方式有哪些(MySQL中多表连接查询)(3)

sql92语法

#3 使用内连接查询学生姓名和相对应的课程名称、成绩

select * from student_name stu inner join score sc where stu.id = sc.sid ;

mysql多表连接的方式有哪些(MySQL中多表连接查询)(4)

内连接查询

#4 使用左连接在student_name表和score表中查询所有学生姓名和相对应的课程信息,包括没有课程的学生

select * from student_name stu left join score sc on stu.id = sc.sid;

mysql多表连接的方式有哪些(MySQL中多表连接查询)(5)

左连接

#5 使用左连接在student_name表和score表中查询没有课程的学生

select * from student_name stu left join score sc on stu.id = sc.sid where sid is null;

mysql多表连接的方式有哪些(MySQL中多表连接查询)(6)

#6 使用左连接在student_name表和score表中查询指定学生姓名(张)和相对应的课程信息

select * from student_name stu left join score sc on stu.id = sc.sid where stu.name = '张';

mysql多表连接的方式有哪些(MySQL中多表连接查询)(7)

#7使用右连接在student_name表和score表中查询所有学生姓名和相对应的课程信息,包括没有学生的课程

select * from student_name stu right join score sc on stu.id = sc.sid;

mysql多表连接的方式有哪些(MySQL中多表连接查询)(8)

#8 使用右连接在student_name表和score表中查询没有学生的课程

select * from student_name stu right join score sc on stu.id = sc.sid where stu.id is null;

mysql多表连接的方式有哪些(MySQL中多表连接查询)(9)

#9使用union合并结果集在student_name表和score表中查询所有学生姓名和相对应的课程信息,包括没有课程的学生和没有学生的课程

select * from student_name stu left join score sc on stu.id = sc.sid

union

select * from student_name stu right join score sc on stu.id = sc.sid;

mysql多表连接的方式有哪些(MySQL中多表连接查询)(10)

#10使用union合并结果集在student_name表和score表中查询没有课程的学生和没有学生的课程

select * from student_name stu left join score sc on stu.id = sc.sid where sid is null

union

select * from student_name stu right join score sc on stu.id = sc.sid where stu.id is null;

mysql多表连接的方式有哪些(MySQL中多表连接查询)(11)

猜您喜欢: