实验四:多表查询及数据库设计

    xiaoxiao2024-11-10  67

    1.实验目的

    1)熟悉SQL Server 2005查询分析器环境。 2)掌握基本的SELECT查询及其相关子句的使用。 3)掌握复杂的SELECT查询,如多表查询、子查询、连接和联合查询。

    2.实验内容

    1)启动SQL Server 2005 查询分析器环境。 2)涉及多表的简单查询。 3)涉及多表的复杂查询。

    3. 实验过程

    3.1多表的简单查询

    1)在KC表中查询学分高于3的课程信息,并按课程号升序排列。

    SELECT * FROM KC WHERE 学分>'3' ORDER BY 课程号 ASC

    2)在XS_KC表中按学号分组汇总学生的平均分,并按平均分的降序排列。

    SELECT 学号,AVG(成绩) AS 平均分 FROM XS_KC GROUP BY 学号 ORDER BY 平均分 DESC

    3)在XS_KC表中查询选修了3门以下课程的学生学号。

    SELECT 学号 FROM XS_KC GROUP BY 学号 HAVING(COUNT(*)<=3)

    4)按学号对不及格的成绩记录进行明细汇总。

    SELECT 学号,成绩 FROM XS_KC WHERE(成绩<=60) ORDER BY 学号 DESC

    5)分别用嵌套查询和连接查询,求107号课程不及格的学生信息。

    SELECT XS_KC.学号,成绩,姓名,出生日期 FROM XS_KC,XSQK WHERE XS_KC.学号=(SELECT 学号 FROM XS_KC WHERE 课程号='107' AND 成绩<='60' )

    6)用连接查询在XSQK表中查询住在同一寝室的学生,即其联系电话相同

    SELECT Y.姓名,X.联系电话 AS 联系 FROM XSQK AS X,XSQK AS Y WHERE X.联系电话=Y.联系电话 AND X.姓名!=Y.姓名

    7)查询XSQK表中所有的系名。

    SELECT DISTINCT 所在系 FROM XSQK

    8)查询有多少同学选修了课程。

    SELECT DISTINCT 学号 FROM XS_KC

    9)查询有多少同学没有选课。

    SELECT 学号 FROM XSQK WHERE (NOT EXISTS(SELECT * FROM XS_KC WHERE XSQK.学号=XS_KC.学号 ))

    10)查询与杨颖同一个系的同学姓名。

    SELECT 姓名,所在系 FROM XSQK WHERE 所在系=(SELECT 所在系 FROM XSQK WHERE 姓名='杨颖')

    11)查询选修了课程的学生的姓名、课程名与成绩。

    SELECT 姓名,课程号,成绩 FROM XSQK,XS_KC WHERE (EXISTS(SELECT * FROM XS_KC WHERE XSQK.学号=XS_KC.学号 ))

    12)统计每门课程的选课人数和最高分。

    SELECT 课程号,COUNT(课程号) AS 选课人数,MAX(成绩) AS 最高分 FROM XS_KC GROUP BY 课程号

    13)统计每个学生的选课门数和考试总成绩,并按选课门数的降序排列。

    SELECT 学号,COUNT(课程号) AS 选课门数,SUM(成绩) AS 考试总成绩 FROM XS_KC GROUP BY 学号 ORDER BY 选课门数 DESC

    最新回复(0)