数据库原理与应用 实验报告 单表查询.docx
- 文档编号:26589503
- 上传时间:2023-06-20
- 格式:DOCX
- 页数:30
- 大小:571.61KB
数据库原理与应用 实验报告 单表查询.docx
《数据库原理与应用 实验报告 单表查询.docx》由会员分享,可在线阅读,更多相关《数据库原理与应用 实验报告 单表查询.docx(30页珍藏版)》请在冰豆网上搜索。
数据库原理与应用实验报告单表查询
《数据库原理及应用》电子实验报告
题目:
SQL语言数据查询--单表查询
日期
姓名
实验环境:
Windows7,SqlServer2005
实验目的:
1.掌握基本的select语句
2.掌握表中列的查询
3.掌握表中元组的选择
实验内容:
1.基本的select语句格式及说明
SQL提供了SELECT语句进行数据库的查询,该语句具有灵活的使用方法和丰富的功能。
其一般格式为:
SELECT[ALL|DISTINCT]<目标列表达式>[,<目标列表达式>]…
FROM<表名或视图名>[,<表名或视图名>]…
[WHERE<条件表达式>]
[GROUPBY<列名1>[HAVING<条件表达式>]]
[ORDERBY<列名2>[ASC|DESC]];
说明:
整个SELECT语句的含义是,根据WHERE子句的条件表达式,从FROM子句指定的基本表或视图中找出满足条件的元组,再按SELECT子句中的目标列表达式,选出元组中的属性值形成结果表。
如果有GROUPBY子句,将结果按<列名1>的值进行分组,该属性列值性等的元祖为一个组。
通常会在每个组中作用聚集函数。
如果GROUPBY子句带HAVING短语,则只有满足指定条件的组才给予输出。
如果有ORDERBY子句,则将结果按<列名2>的值的升序或降序排列。
SELECT语句既可以完成简单的单表查询,也可以完成复杂的连接查询和嵌套查询。
2.表中列的查询
1)表中若干列的查询(写出题目、关系代数表达式和sql语句)
【实例1】从学生表查询学生的学号。
代码如下:
SELECTSno
FROMStudent;
结果如图所示:
【实例2】从学生表查询学生的姓名。
代码如下:
SELECTSname
FROMStudent;
结果如图所示:
【实例3】从课程表查询课程名。
代码如下:
SELECTCname
FROMCourse;
结果如图所示:
2)掌握表中全部列的查询(写出题目、关系代数表达式和sql语句)
【实例4】查询全体学生的详细信息。
代码如下:
SELECT*
FROMStudent;
结果如图所示:
【实例5】查询课程表的详细信息。
代码如下:
SELECT*
FROMCourse;
结果如图所示:
【实例6】查询选课表的详细信息。
代码如下:
SELECT*
FROMSC;
结果如图所示:
3)掌握表中经过计算的列的查询(写出题目、关系代数表达式和sql语句)
【实例7】查询全体学生的姓名及其出生年份
代码如下:
SELECTSname,2013-Sage
FROMStudent;
结果如图所示:
【实例8】查询全体学生的姓名及所在院系,用小写字母表示所有系名
代码如下:
SELECTSnameLOWER(Sdept)
FROMStudent;
结果如图所示:
【实例9】从课程表查询课程名和课程号(10-Cno)代码如下:
SELECTCname,10-Cno
FROMCourse;
结果如图所示:
3.表中元组的选择
1)消除取值重复的行(写出题目、关系代数表达式和sql语句)
【实例10】查询选修了课程的学生学号
代码如下:
SELECTSno
FROMSC;
结果如图所示:
【实例11】查询选修了课程的学生学号,去掉重复行
代码如下:
SELECTDISTINCTSno
FROMSC;
结果如图所示:
【实例12】查询学生表姓名。
代码如下:
SELECTSname
FROMStudent;
结果如图所示:
2)查询满足条件的元祖(写出题目、关系代数表达式和sql语句)
(1)比较大小
【实例13】从学生表查询在信息系的所有学生的姓名。
代码如下:
SELECTSname
FROMStudent;
WHERESdept=’IS’
结果如图所示:
【实例14】查询成绩在60分以下的学生的学号和成绩。
代码如下:
SELECTSno,Grade
FROMSC
WHEREGrade<60;
结果如图所示:
【实例15】从学生表查询年龄小于20岁的学生的学号和所在系。
代码如下:
SELECTSno,Sdept
FROMstudent
WHERESage<20;
结果如图所示:
(2)确定范围
【实例16】从学生表查询年龄在18岁到20岁之间的学生的姓名、所在系及年龄。
代码如下:
SELECTSname,Sdept,Sage
FROMstudent
WHERESageBETWEEN18AND20;
结果如图所示:
【实例17】从选课表查询成绩在60到80之间的学生的学号、课程号及成绩。
代码如下:
SELECTSno,Cno,Grade
FROMsc
WHEREGradeBETWEEN60AND80;
结果如图所示:
【实例18】从学生表查询学号950010002到950010007之间的学生的姓名和性别。
代码如下:
SELECTsname,ssex
FROMstudent
WHEREsnoBETWEEN950010002AND950010007;
结果如图所示:
(3)确定集合
【实例19】从学生表查询计算机科学系(CS)和数学系(MA)学生的姓名和性别。
代码如下:
SELECTsname,ssex
FROMstudent
WHEREsdeptIN(‘CS’,’MA’);
结果如图所示:
【实例20】从选课表查询课程号是3和5的学生的学号和成绩。
代码如下:
SELECTsno,Grade
FROMsc
WHEREcnoIN(‘3’,’5’);
结果如图所示:
【实例21】从学生表查询所有女生的年龄和所在系。
代码如下:
SELECTsage,sdept
FROMstudent
WHEREssexIN(‘女’);
结果如图所示:
(4)字符匹配
【实例22】从学生表查询学号为950010001的学生的所有信息。
代码如下:
SELECT*
FROMstudent
WHEREsnoLIKE‘950010001’;
结果如图所示:
【实例23】从学生表查询姓张的学生的姓名,年龄和学号。
代码如下:
SELECTsname,sage,sno
FROMstudent
WHEREsnameLIKE‘张%’;
结果如图所示:
【实例24】从选课表查询课程号不为4的学生的学号和成绩。
代码如下:
SELECTsno,Grade
FROMsc
WHEREcnoNOTLIKE‘4’;
结果如图所示:
(5)设计空值的查询
【实例25】从学生表查询性别不为空的学生的详细信息。
代码如下:
SELECT*
FROMstudent
WHEREssexISNOTNULL;
结果如图所示:
【实例26】从选课表查询成绩不为空的学生的学号和课程号。
代码如下:
SELECTsno,cno
FROMsc
WHEREGradeISNOTNULL,
结果如图所示:
【实例27】从课程表查询课程号不为空的学生的课程名。
代码如下:
SELECTCname
FROMCourse
WHERECnoISNOTNULL;
结果如图所示:
(6)多重条件查询
【实例28】从学生表查询在信息系且年龄为18学的学生的姓名和性别。
代码如下:
SELECTsname,ssex
FROMstudent
WHEREsdept='IS'ANDsage='18';
结果如图所示:
【实例29】从学生表查询在信息系或计算机科学系或数学系的全体学生的详细信息。
代码如下:
SELECT*
FROMstudent
WHEREsdept='IS'ORsdept='CS'OR;sdept='MA';
结果如图所示:
【实例30】从学生表查询全体学生的详细信息。
代码如下:
SELECT*
FROMstudent
WHEREssex=‘男’OR;ssex=‘女’;
结果如图所示:
4orderby子句
【实例31】查询选修了3号课程的学生的学号及其成绩,查询结果按分数的降序排列。
SELECTsno,Grade
FROMsc
WHEREcno=’3’;
ORDERBYGradeDESC;
结果如图所示:
【实例32】查询全体学生的详细情况,查询结果按所在系的系号升序排列,同一系中的学生按年龄升序排列。
SELECT*
FROMstudent
ORDERBYsdept,sageASC;
结果如图所示:
【实例33】查询课程表的详细情况,查询结果按学分升序排列,同一学分的课程按课程号降序排列。
SELECT*
FROMCourse
ORDERBYCcredit,CnoDESC;
结果如图所示:
5聚集函数
【实例34】查询学生总人数。
SELECTCOUNT(*)
FROMstudent;
结果如图所示:
【实例35】查询学号为950010001的学生的平均成绩。
SELECTAVG(Grade)
FROMsc
WHEREsno=‘950010001’;
结果如图所示:
【实例36】查询选修1号课程的学生的最高分。
SELECTMAX(Grade)
FROMsc
WHEREcno=‘1’;
结果如图所示:
6groupby子句
【实例37】求各课程号及相应的选课人数。
SELECTcno,COUNT(sno)
FROMsc
GROUPBYcno;
结果如图所示:
【实例38】查询选修了3门以上课程的学生学号。
SELECTsno
FROMsc
GROUPBYsno
HAVINGCOUNT(*)>3;
结果如图所示:
【实例39】查询相同学分的课程的课程号。
SELECTCcredit,COUNT(Cname)
FROMCourse
GROUPBYcno;
结果如图所示:
完成情况:
1完成了表中列的查询、表中元组的选择。
2完成了orderby子句、聚集函数、groupby子句。
出现的问题:
(小四宋体)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库原理与应用 实验报告 单表查询 数据库 原理 应用 实验 报告 查询