欢迎大家来到IT世界,在知识的湖畔探索吧!
学生信息表student_name和学生成绩表score
在关系型数据库中,表与表之间是有联系的,所以在实际应用中,经常使用多表查询。多表查询就是同时查询两个或两个以上的表。
当连接的表之间没有关系时,这时返回结果就是两个表的笛卡尔积,返回结果数量就是两个表的数据行相乘。需要注意的是,如果每个表有 1000 行,那么返回结果的数量就有 1000×1000 = 行,数据量是非常巨大的。
#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;
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/83741.html