首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

实验6 多表查询(V2.0)

2013-10-17 
实验六多表查询(V2.0)实验六多表查询【实验目的】1. 掌握等值连接和非等值连接2. 掌握自身连接(同一个表之间

实验六 多表查询(V2.0)

                                    实验六  多表查询
【实验目的】

1. 掌握等值连接和非等值连接

2. 掌握自身连接(同一个表之间连接)

3. 掌握外连接

4. 掌握复合条件连接

 

【实验内容】

1. 基本命令:

select <目标列>

from <表1,表2>[,<表3>[,<...>]]

where <条件>

功能:从表1和表2中查询满足条件的目标列。

 

2. 实验内容

【例1】查询选修了3号课程的学生学号和姓名

 

select student.sno,snamefrom student,scwhere student.sno = sc.sno  and cno = '3'


 备注:表1和表2笛卡尔积,是连接的第一步,是第一个表的每一行与第二个表的每一行组成一次连接(元组相连)。表1和表2的笛卡尔积,有M(M=表1行数*表2行数)行,N(N=表1列数+表2列数)列。

笛卡尔积的每一行不一定有意义。例如学生表student和选课表sc的笛卡尔积20行中只有5行有意义。需要我们做筛选条件,就是表1的某一列=表二的某一列。例如student.sno = sc.sno

 

【例2】查询所有课程的先修课课程号,课程名和学分

解释:题目需要查询课程信息,附加先修课信息。

--查询每个课程的先修课学分(课程号,课程名,课程学分,先修课名和先修课学分)select 课程.cno,课程.cname,课程.ccredit,课程.cpno,先修课程.Cname,先修课程.ccreditfrom Course 课程,Course 先修课程where 课程.Cpno = 先修课程.Cno


【例3】查询全体学生的选修课程情况

解释:外连接能够实现表1与表2具有联系的元组显示的同时,可以显示某个表全部元组(左连接全部显示左边表,右连接全部显示右边表)。

比较:select student.*,cno,grade

           from student,sc

          where student.sno = sc.sno

本命令只能够查询具有选修课程的学生,没有显示全部学生。(即没有选修课的学生,在结果中没有显示出来)

实验6  多表查询(V2.0)

 

比较命令:

-- 比较如下查询,查询学生选修情况(只列出具有选课的学生)select student.*,cno,gradefrom student,scwhere student.sno = sc.sno--查询全部学生的选修课程情况,没有选修课程的也要显示出来。select student.*,cno,gradefrom student left join sc   on student.sno = sc.sno


查询效果:

实验6  多表查询(V2.0)

 

 【例4】(复合条件查询)

 

【实验总结】

多表查询,实现过个表的查询。

热点排行