​数据库原理及应用上机(实验三 SQL数据查询)
作者:mmseoamin日期:2024-04-27

✨作者:命运之光 

✨专栏:数据库原理及应用上机实验

​数据库原理及应用上机(实验三 SQL数据查询),第1张​ 

目录

 ✨一、实验目的和要求

✨二、实验内容及步骤

✨三、实验结果

✨四、附加练习

✨五、实验总结


🍓🍓前言: 数据库原理及应用上机实验报告的一个简单整理后期还会不断完善🍓🍓 


 ✨一、实验目的和要求

1.掌握SQL Server查询分析器的使用方法,加深对SQL查询语句的理解。

2.熟练掌握查询语句的一般格式。

3.熟练掌握数据查询中的排序、分组、统计、计算和集合的操作方法。

4.熟练掌握连接、嵌套和集合查询的使用。

✨二、实验内容及步骤

(一)单表查询

1 无条件查询

例1 查询全体学生的详细记录。这是一个无条件的选择查询,其命令为:

​数据库原理及应用上机(实验三 SQL数据查询),第2张

SELECT  * FROM  Student;          /*这里的“*”等价于ALL*/

其结果为Student表中的全部数据。

例2  查询全体学生的姓名(Sname)、学号(Sno)、所在系(Sdept)。这是一个无条件的投影查询,其命令为:

​数据库原理及应用上机(实验三 SQL数据查询),第3张

SELECT Sname, Sno, Sdept  FROM  Student;

例3  查询全体学生的学号(Sno)、姓名(Sname)及出生年份。由于SELECT子句的<目标列表达式>不仅可以是表中的属性列,也可以是表达式,故可以查询经过计算的值。其命令为:

​数据库原理及应用上机(实验三 SQL数据查询),第4张

SELECT Sno, Sname, 2012-Sage as '2012-Sage' FROM Student;

例4 查询全体学生的学号、姓名、出生年份和所在系,要求用小写字母表示所有系名。其命令为:

​数据库原理及应用上机(实验三 SQL数据查询),第5张

SELECT Sno, Sname, 2012-Sage 'Year of Birth', LOWER(Sdept) Sdept FROM Student;

例5  查询选修了课程的学生学号。其命令为:

​数据库原理及应用上机(实验三 SQL数据查询),第6张

SELECT DISTINCT Sno FROM SC;

2 条件查询

例6  查询数学系(MA)全体学生的学号(Sno)和姓名 (Sname)。其命令为:

​数据库原理及应用上机(实验三 SQL数据查询),第7张

SELECT Sno, Sname
FROM Student
WHERE Sdept='MA';

【题7】查询考试成绩有不及格的学生的学号。

​数据库原理及应用上机(实验三 SQL数据查询),第8张

SELECT DISTINCT Sno
FROM SC
WHERE  Grade<60;

【例8】查询所有年龄在20岁以下的学生姓名(Sname)及年龄(Sage)。其命令为:

​数据库原理及应用上机(实验三 SQL数据查询),第9张

SELECT  Sname, Sage
FROM  Student
WHERE  Sage<20;

【例9】查询所有年龄在18~20岁(包括18岁和20岁)之间的学生姓名(Sname)及年龄(Sage)。其命令为:

​数据库原理及应用上机(实验三 SQL数据查询),第10张

SELECT  Sname, Sage
FROM  Student
WHERE  Sage >=18 AND Sage<=22;

SELECT  Sname, Sage
FROM  Student
WHERE  Sage  BETWEEN 18 AND 22;

【例10】 查询年龄不在18-20岁之间的学生姓名(Sname)及年龄(Sage)。其命令为:

​数据库原理及应用上机(实验三 SQL数据查询),第11张

SELECT  Sname, Sage
FROM  Student
WHERE  Sage  NOT  BETWEEN  18 AND 20;

【例11】 查询计算机系、数学系和信息系学生的学号(Sno)、姓名(Sname)和性别(Ssex)。其命令为:

​数据库原理及应用上机(实验三 SQL数据查询),第12张

SELECT  Sno, Sname, Ssex FROM  Student
WHERE  Sdept  IN ('CS', 'MA', 'IS');

等价于:

SELECT  Sno, Sname, Ssex
FROM  Student
WHERE  Sdept='CS' OR Sdept='MA' OR Sdept='IS';

【例12】  查询既不是信息系(IS)、数学系(MA)、也不是计算机系(CS)的学生的姓名(Sname)和性别(Ssex)。其命令为:

​数据库原理及应用上机(实验三 SQL数据查询),第13张

SELECT  Sname, Ssex
FROM  Student
WHERE  Sdept  NOT  IN ('IS', 'MA', 'CS');

【例13】  查询所有姓刘的学生的姓名(Sname)、学号(Sno)和性别(Ssex)。其命令为:

​数据库原理及应用上机(实验三 SQL数据查询),第14张

SELECT  Sname, Sno, Ssex
FROM  Student
WHERE  Sname  LIKE  '刘%';

【例14】  查询姓“刘”且全名为4个汉字的学生的姓名(Sname)和所在系(Sdept)。其命令为:

​数据库原理及应用上机(实验三 SQL数据查询),第15张

SELECT  Sname, Sdept 
FROM  Student
WHERE  Sname  LIKE  '刘____' AND LEN(Sname)=4;;

【例15】  查询所有不姓刘的学生姓名(Sname)和年龄(Sage)。

​数据库原理及应用上机(实验三 SQL数据查询),第16张

SELECT  Sname, Sage
FROM  Student
WHERE  Sname  NOT  LIKE  '刘%';

【例16】  查询以"DB_"开头,且倒数第2个汉字字符为“设”的课程的详细情况。其命令为:

​数据库原理及应用上机(实验三 SQL数据查询),第17张

SELECT  *
FROM  Course
WHERE  Cname LIKE 'DB\_%设__'ESCAPE'\';

【例17】  假设某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。试查询缺少成绩的学生的学号(Sno)和相应的课程号(Cno)。其命令为:

​数据库原理及应用上机(实验三 SQL数据查询),第18张

SELECT  Sno, Cno
FROM  SC
WHERE  Grade IS NULL;

【例18】  查询所有有成绩的学生学号(Sno)和课程号(Cno)。其命令为:

​数据库原理及应用上机(实验三 SQL数据查询),第19张

SELECT Sno, Cno
FROM  SC
WHERE  Grade IS NOT NULL;

【题19】查询计算机系年龄在20岁以下的学生姓名。

​数据库原理及应用上机(实验三 SQL数据查询),第20张

SELECT Sname
FROM Student
WHERE Sdept='计算机系' and Sage<20;

3 查询结果排序

例24  查询选修了2号课程的学生的学号(Sno)和成绩(Grade),并按成绩降序排列。其命令为:

​数据库原理及应用上机(实验三 SQL数据查询),第21张

SELECT  Sno, Grade
FROM SC
WHERE  Cno='2'
ORDER BY Grade DESC;

【例25】 查询全体学生情况,查询结果按所在系的系名(Sdpet)升序排列,同一系中的学生按年龄(Sage)降序排列。其命令为:

​数据库原理及应用上机(实验三 SQL数据查询),第22张

SELECT  *
FROM  Student
ORDER BY Sdept, Sage DESC;

4 集函数的使用

例26  查询学生总人数。其命令为:

​数据库原理及应用上机(实验三 SQL数据查询),第23张

SELECT  COUNT(*)
FROM  Student;

例27  查询选修了课程的学生人数。其命令为:

​数据库原理及应用上机(实验三 SQL数据查询),第24张

SELECT  COUNT(DISTINCT Sno)
FROM SC;

例28  计算选修2号课程的学生平均成绩。其命令为:

​数据库原理及应用上机(实验三 SQL数据查询),第25张

SELECT  AVG(Grade)
FROM  SC
WHERE  Cno='2';

例29  查询选修2号课程的学生最高分数。其命令为:

​数据库原理及应用上机(实验三 SQL数据查询),第26张

SELECT  MAX(Grade)
FROM  SC
WHERE  Cno='2';

例30  查询学生200215122选修课程的总学分数。其命令为:

​数据库原理及应用上机(实验三 SQL数据查询),第27张

SELECT  SUM(Ccredit)
FROM  SC,Course
WHERE  Sno='200215122' AND SC.Cno=Course.Cno;

5 查询结果分组

例31  求各个课程号(Cno)及相应的选课人数。其命令为:

​数据库原理及应用上机(实验三 SQL数据查询),第28张

SELECT  Cno , COUNT(Sno) CntSno
FROM  SC
GROUP  BY Cno;

例32  查询选修了3门或3门以上课程的学生学号(Sno)。其命令为:

​数据库原理及应用上机(实验三 SQL数据查询),第29张

SELECT  Sno
FROM  SC
GROUP  BY Sno
HAVING  COUNT(Cno)>3

✨三、实验结果

(一)单表查询

1 无条件查询

例1 查询全体学生的详细记录。

​数据库原理及应用上机(实验三 SQL数据查询),第30张

例2  查询全体学生的姓名(Sname)、学号(Sno)、所在系(Sdept)。

​数据库原理及应用上机(实验三 SQL数据查询),第31张

例3  查询全体学生的学号(Sno)、姓名(Sname)及出生年份。

​数据库原理及应用上机(实验三 SQL数据查询),第32张

例4 查询全体学生的学号、姓名、出生年份和所在系,要求用小写字母表示所有系名。

​数据库原理及应用上机(实验三 SQL数据查询),第33张

例5  查询选修了课程的学生学号。

​数据库原理及应用上机(实验三 SQL数据查询),第34张

2 条件查询

例6  查询数学系(MA)全体学生的学号(Sno)和姓名 (Sname)。

​数据库原理及应用上机(实验三 SQL数据查询),第35张

【题7】查询考试成绩有不及格的学生的学号。

​数据库原理及应用上机(实验三 SQL数据查询),第36张

【例8】查询所有年龄在20岁以下的学生姓名(Sname)及年龄(Sage)。

​数据库原理及应用上机(实验三 SQL数据查询),第37张

【例9】查询所有年龄在18~20岁(包括18岁和20岁)之间的学生姓名(Sname)及年龄(Sage)。

​数据库原理及应用上机(实验三 SQL数据查询),第38张

【例10】 查询年龄不在18-20岁之间的学生姓名(Sname)及年龄(Sage)。

​数据库原理及应用上机(实验三 SQL数据查询),第39张

【例11】 查询计算机系、数学系和信息系学生的学号(Sno)、姓名(Sname)和性别(Ssex)。

​数据库原理及应用上机(实验三 SQL数据查询),第40张

【例12】  查询既不是信息系(IS)、数学系(MA)、也不是计算机系(CS)的学生的姓名(Sname)和性别(Ssex)。

​数据库原理及应用上机(实验三 SQL数据查询),第41张

【例13】  查询所有姓刘的学生的姓名(Sname)、学号(Sno)和性别(Ssex)。

​数据库原理及应用上机(实验三 SQL数据查询),第42张

【例14】  查询姓“刘”且全名为4个汉字的学生的姓名(Sname)和所在系(Sdept)。

​数据库原理及应用上机(实验三 SQL数据查询),第43张【例15】  查询所有不姓刘的学生姓名(Sname)和年龄(Sage)。

​数据库原理及应用上机(实验三 SQL数据查询),第44张

【例16】  查询以"DB_"开头,且倒数第2个汉字字符为“设”的课程的详细情况。

​数据库原理及应用上机(实验三 SQL数据查询),第45张

【例17】  假设某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。

​数据库原理及应用上机(实验三 SQL数据查询),第46张

【例18】  查询所有有成绩的学生学号(Sno)和课程号(Cno)。

​数据库原理及应用上机(实验三 SQL数据查询),第47张【题19】查询计算机系年龄在20岁以下的学生姓名。

​数据库原理及应用上机(实验三 SQL数据查询),第48张

3 查询结果排序

例24  查询选修了2号课程的学生的学号(Sno)和成绩(Grade),并按成绩降序排列。

​数据库原理及应用上机(实验三 SQL数据查询),第49张

【例25】 查询全体学生情况,查询结果按所在系的系名(Sdpet)升序排列,同一系中的学生按年龄(Sage)降序排列。

​数据库原理及应用上机(实验三 SQL数据查询),第50张

4 集函数的使用

例26  查询学生总人数。

​数据库原理及应用上机(实验三 SQL数据查询),第51张

例27  查询选修了课程的学生人数。

​数据库原理及应用上机(实验三 SQL数据查询),第52张

例28  计算选修2号课程的学生平均成绩。

​数据库原理及应用上机(实验三 SQL数据查询),第53张

例29  查询选修2号课程的学生最高分数。

​数据库原理及应用上机(实验三 SQL数据查询),第54张

例30  查询学生200215122选修课程的总学分数。

​数据库原理及应用上机(实验三 SQL数据查询),第55张

5 查询结果分组

例31  求各个课程号(Cno)及相应的选课人数。

​数据库原理及应用上机(实验三 SQL数据查询),第56张

例32  查询选修了3门或3门以上课程的学生学号(Sno)。

​数据库原理及应用上机(实验三 SQL数据查询),第57张

✨四、附加练习

查询学分为4分的课程的课程号及课程名;

​数据库原理及应用上机(实验三 SQL数据查询),第58张

查询选修课课程号为3且得分为90分以上的学生学号;

​数据库原理及应用上机(实验三 SQL数据查询),第59张

将课程表按学分升序排列,学分相同的按课程号升级排列

​数据库原理及应用上机(实验三 SQL数据查询),第60张

查询姓“李“的学生的学号、姓名、年龄,并且以年龄降序排列;

​数据库原理及应用上机(实验三 SQL数据查询),第61张

查询选修课程号为3的最低分;

​数据库原理及应用上机(实验三 SQL数据查询),第62张

查询所有学生的平均年龄;

​数据库原理及应用上机(实验三 SQL数据查询),第63张

查询不同学分的课程数量

​数据库原理及应用上机(实验三 SQL数据查询),第64张

查询不同年龄的男生人数及女生人数;

​数据库原理及应用上机(实验三 SQL数据查询),第65张

查询课程表中的课程数量;

​数据库原理及应用上机(实验三 SQL数据查询),第66张

查询课程号为的不及格的学生学号及分数

​数据库原理及应用上机(实验三 SQL数据查询),第67张

✨五、实验总结

本次实验主要学习了 SQL Server 查询分析器的使用方法,以及 SQL 查询语句的基本格式和常用操作方法。在实验过程中,我们深入了解了数据查询中的排序、分组、统计、计算和集合的操作方法,并熟练掌握了连接、嵌套和集合查询的使用。

通过本次实验,我深刻认识到 SQL 查询语句对于数据库操作的重要性。在实际应用中,SQL 查询语句可以帮助我们快速有效地获取所需数据,从而进行数据分析和处理。通过本次实验的学习,我不仅掌握了 SQL 查询语句的基本语法和使用方法,还学会了如何优化查询语句,提高查询效率和准确性。

在实验过程中,我遇到了一些问题,如语法错误、数据类型不匹配等等。通过反复尝试和查找相关资料,我最终解决了这些问题,并对 SQL 查询语句的使用有了更深入的理解和掌握。

总之,本次实验对我的学习和成长非常有益。通过实践操作,我深入了解了 SQL 查询语句的使用方法,提高了对 SQL 数据库的理解和掌握,为今后的工作和学习打下了坚实的基础。