连接查询实验

一、实验目的 

1. 掌握连接查询方法。

2. 掌握各种查询的使用方法。

二、实验硬、软件环境

开发环境: Windows XP 操作系统及以上版本

数据库管理系统:SQL Server 2012

运行环境:Windows XP 操作系统及以上版本

三、实验内容及步骤

1. 查询于兰兰的选课信息,列出学号,姓名,课程号(使用两种连接查询方式)。

代码及运行结果如下:

第一种方法:

SELECT STUDENT.SNO,SNAME,CNO

FROM STUDENT,SC

WHERE (STUDENT.SNO = SC.SNO) AND (SNAME= '于兰兰' )

第二种方法:

SELECT STUDENT.SNO,SNAME,CNO

FROM STUDENT INNER JOIN SC

ON STUDENT.SNO = SC.SNO

WHERE  SNAME= '于兰兰' 

2.查询所有学生的学号、姓名、课程名称及成绩(用左连接)。

代码及运行结果如下:

SELECT  STUDENT.SNO,SNAME,CNAME,GRADE

FROM STUDENT

LEFT OUTER JOIN SC

ON STUDENT.SNO = SC.SNO

LEFT OUTER JOIN COURSE

ON SC.CNO = COURSE.CNO

3.查询所有姓“李”的男同学,要求显示其学号、姓名、性别。

代码及运行结果如下:

SELECT STUDENT.SNO,SNAME,SEX

FROM STUDENT

WHERE (SNAME LIKE '李%')AND (SEX='男') 

4.检索张艳同学 同一专业班级的学生学号、姓名。

代码及运行结果如下:

SELECT STUDENT.SNO,SNAME

FROM STUDENT

WHERE SPECIAL= (SELECT SPECIAL 

                FROM  STUDENT

WHERE SNAME='张艳')

 

5.查询选修三门以上(含三门)课程的学生的学号和平均分数。  

代码及运行结果如下:

SELECT SC.SNO,AVG(GRADE) AS Totalcj

FROM SC

GROUP BY SNO

HAVING (COUNT(*)>=3)

6. 查询成绩表中至少有2名学生选修课程的课程号、平均分数、选课人数。

代码及运行结果如下:

SELECT SC.CNO,AVG(GRADE) AS Totalcj,COUNT(*) AS Sc_NUM

FROM SC

GROUP BY CNO

HAVING (COUNT(*)>=2)

 四、实验结果及分析

1.通过此次实验我掌握连接查询方法,多表连接时需满足FROM子句指明进行连接的表名,WHERE子句指明连接的列名及其连接条件;利用关键字JOIN进行连接,当将JOIN 关键词放于FROM子句中时,应有关键词ON与之对应,以表明连接的条件。

2.利用JOIN连接方法有INNER JOIN(内连接)、LEFT(OUTER)JOIN(左外连接)、RIGHT(OUTER)JOIN(右外连接)、FULL(OUTER)JOIN、CROSS JOIN(交叉连接)。

3.第一个和第三个实验中涉及三个表时,WHERE子句中需要有两个连接条件,此时需要用到AND。第五个和第六个实验的GOURP BY是对查询的列的内容进行分组,在查询语句与聚合函数之间用HAVING来连接。

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值