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语法查询学生姓名和相对应的课程名称、成绩
学生信息表student_name和学生成绩表score
在关系型数据库中,表与表之间是有联系的,所以在实际应用中,经常使用多表查询。多表查询就是同时查询两个或两个以上的表。
当连接的表之间没有关系时,这时返回结果就是两个表的笛卡尔积,返回结果数量就是两个表的数据行相乘。需要注意的是,如果每个表有 1000 行,那么返回结果的数量就有 1000×1000 = 1000000 行,数据量是非常巨大的。
#1 没有加连接条件,查询结果为笛卡尔积
select * from student_name inner join score;
查询结果为笛卡尔积
#2 使用sql92语法查询学生姓名和相对应的课程名称、成绩
select * from student_name stu score sc where stu.id = sc.sid;
sql92语法
#3 使用内连接查询学生姓名和相对应的课程名称、成绩
select * from student_name stu inner join score sc where stu.id = sc.sid ;
内连接查询
#4 使用左连接在student_name表和score表中查询所有学生姓名和相对应的课程信息,包括没有课程的学生
select * from student_name stu left join score sc on stu.id = sc.sid;
左连接
#5 使用左连接在student_name表和score表中查询没有课程的学生
select * from student_name stu left join score sc on stu.id = sc.sid where sid is null;
#6 使用左连接在student_name表和score表中查询指定学生姓名(张)和相对应的课程信息
select * from student_name stu left join score sc on stu.id = sc.sid where stu.name = '张';
#7使用右连接在student_name表和score表中查询所有学生姓名和相对应的课程信息,包括没有学生的课程
select * from student_name stu right join score sc on stu.id = sc.sid;
#8 使用右连接在student_name表和score表中查询没有学生的课程
select * from student_name stu right join score sc on stu.id = sc.sid where stu.id is null;
#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;
#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;