【推荐下载】实验报告四 (500字)-范文word版 (7页)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!
== 本文为word格式,下载后可方便编辑和修改! ==
实验报告四 (500字)
《数据库原理》实验报告
实验名称:数据查询 (一)
班级名称:计算机科学与技术
数学与计算机学院
201X年4月25日
一、实验目的:
数据查询语句是SQL语句的重要组成部分,合理使用数据查询语句,可以极大
的简化应用程序编制、快速的定位分析数据库系统的故障,查询语句是编程人
员与数据库管理人员必不可少的工具,通过试验,加深学生对查询语句基本概
念的理解与掌握,最终达到以下目的。
通过实验达到以下目的:
(1)掌握SELECT 语句的基本语法,加深学生对查询语句基本概念的理解
(2)掌握简单的单表查询:选择表中的若干列、对表和列使用别名、查询计算列、选择表中的若干元组、对查询结果排序、使用集函数、对查询结果分组
(3)掌握简单的连接查询
二、实验内容及要求:
实验数据:dept、class、student、course和SC五个表及实验三插入到表中
的数据。
create database cx
use cx
Create table dept (
Deptno CHAR(8) primary key ,
Deptname varCHAR(20) unique,
Dpho varCHAR(15) ,
Deptadd CHAR(40))
select *from dept
Create table class (
classno char(8) primary key,
classname varchar(10) unique ,
deptno char(8) foreign key references dept )
select *from class
create table Student(
SNO CHAR(10) PRIMARY KEY check (left (sno,2)='20'),
SNAME VARCHAR(20) NOT NULL,
SEX VARCHAR(2) check (sex in ('男','女')),
Classno VARCHAR(8) NOT NULL,
AGE SMALLINT )
select *from Student
Create table Course(
CNO CHAR(4) PRIMARY KEY,
CNAME VARCHAR(32) NOT NULL UNIQUE,
SCORE SMALLINT NOT NULL DEFAULT 4 check (score in (1,2,3,4,5))) select *from Course
Create table SC(
SNO CHAR(10) FOREIGN KEY references student ,
CNO CHAR(4) FOREIGN KEY references course,
GRADE INT CHECK (Grade >= 0 and Grade <= 100)
PRIMARY KEY(sno,cno))
select *from SC
insert into dept values ('jsj', '计算机系', '3370001 ', '励志楼') insert into dept values ('dx1', '电信系', '3370002', '励志楼') insert into dept values ('null', '机电系', '3370005', 'Null') insert into dept values ('jsjxy', 'Null', 'a2334', 'Null')
insert into dept values ('xx', '信息系', '3370004', '明德楼') insert into class values ('201X1080', '12计本班', 'jsj')
insert into class values ('201X1080', '13计本班', 'jsj')
insert into class values ('201X1084', '13软本班', 'jsj')
insert into class values ('201X1087', '14软本班', 'jsj')
insert into student values ('201X108001', '张三', '男', '201X1080', 17) insert into student values ('201X108002', '李四', '男', '201X1080 ', 18) insert into student values ('201X108003', '李刚', '男',
'201X1080 ', 21) insert into student values ('201X108004', '王五', '
男', '201X1080 ', 24) insert into student values ('201X108006', '李青', '女', '201X1087 ', 23) insert into student values ('201X108008', '王武', '男', '201X1084', 18) insert into student values ('201X108002', '郑艳', '女', '201X1080', 16) insert into student values
('201X108011', '王阳', '女', '201X1080', 22) insert into student values ('201X108003', '刘莉', '女', '201X1080', 18) insert into Student values('201X108009','张国','男','201X1084',17) insert into Student values('201X108007','李强','男','201X1087',18) insert into Course (cno,cname) values('C001','数据库原理')
insert into course values ('C002', '自动控制原理', 3)
insert into course values ('C003', '专业英语', 2)
insert into course values ('C004', '数字电路', 3)
insert into sc (sno, cno, grade) values ('201X108002', 'C002', 79) insert into sc (sno, cno, grade) values ('201X108001', 'C003', 69) insert into sc (sno, cno, grade) values ('201X108002', 'C004', 88) insert into sc (sno, cno, grade) values ('201X108003', 'C002', 72) insert into sc (sno, cno, grade) values ('201X108004', 'C003', 70) insert into sc (sno, cno, grade) values ('201X108009', 'C002', null)
掌握 *、 distinc的用法及表中若干列或行的选择,对查询结果排序和分组、
计算列、常量或空值的查询、对表和列使用别名、模糊查询( like的用法)、between…and… 、 in等运算符的使用,聚合函数的使用。
完成以下查询要求:
1. 查询全体学生的学号与姓名
select sno,sname from Student
2. 查询全体学生的全部信息,并为学生表命名别名
select *from Student ss
3. 查全体学生的学号、姓名与出生年份,并为年份加上标题(别名)
select sno,sname,year(getdate())-age nianfen from student
4. 查询选修了课程的学生学号,要求消除重复行
select distinct sno from Student
5. 查询所有年龄在岁以下的学生姓名及其年龄
select SNAME,age from Student where AGE<20
6. 查询年龄在~23岁的学生信息(要求至少使用两种方式完成查询) select *from Student where age between 20 and 23
select *from Student where AGE>=20 and AGE<=23
7. 查询信息系班、201X1084班和班的学生(要求使用IN关键字)
select *from Student where Classno
in('201X1080','201X1084','201X1087')
8. 查询既不是信息系、数学系,也不是计算机科学系的学生的姓名和性别。
select sname ,sex from student where deptname not in('信息系','数学系','计算机科学系')
9. 查询所有姓刘学生的姓名、学号和性别
select sname,sno,sex from Student where SNAME like'刘
%'
10. 查询姓在刘与李之间的学生的姓名、学号和性别
select sname,sno,sex from Student where SNAME like '[李-刘
]%'
11. 查询名字中第个字为"阳"字的学生的姓名和学号
select sname,sno from Student where SNAME like '_阳
%'
12. 查询数据库原理课程的课程号和学分
select cno,score from Course where CNAME like '数据库原理
'
13. 查询没有考试成绩的学生学号和课程号
select sno,cno from SC where GRADE is null
14. 查询年龄在岁以下的女生姓名
select sname from Student where AGE<20 and SEX='女'
15. 查询全体学生情况,查询结果按班级编号升序排列,同一个班中的学生按年龄降序排列
select *from student order by Classno ,age desc
16. 查询学生总人数
select COUNT(*)from Student
17. 查询选修了课程的学生人数
Select distinct count(SNO)from SC
where CNO in('C001','C002','C003','C004') group by SNO
18. 计算c002号课程的学生平均成绩
select AVG(grade) from SC where CNO='C002'
19. 查询选修c002号课程的学生最高分数
select MIN(grade) from SC where CNO='C002'
20. 求各个课程号及相应的选课人数
select cno,COUNT(sno) from SC group by CNO
21. 查询选修了3门以上课程的学生学号(提示用Having字句)
select sno from sc group by sno having count(*)>3
22. 查询有门以上课程是分以上的学生的学号及(90分以上的)课程数。
select sno,cno from sc where sno in (select sno from sc where grade>90 group by sno having count(sno)>3)
23. 查询全体学生的学号、姓名、选修的课程名及成绩
select student.sno,sname,cno,grade from Student,sc
24. 查询每个学生及其选修课程情况的所有信息(用*表示字段)
select *,cno from Student,Course
25. 查询选修cn01号课程且成绩在分以上的所有学生的学号、姓名和成绩
select student.sno,sname,grade from Student,SC where CNO='c001'and GRADE>90
26. 查询学生总人数
select COUNT(*) from Student
27. 查询学号为‘201X0101’学生的平均成绩和总成绩,并为总成绩和平均成绩取别名
select AVG(grade) from SC where SNO='201X1083'
select sum(grade) from SC where SNO='201X1083'
28. 查询cn01号课程的最高分数和最低分
select MAX(GRADE),MIN(grade) from SC where CNO='c001'
三、思考与练习。
(1)Where与Having语句有何差别?
Where 是一个约束声明,使用Where约束来自数据库的数据,Where是在结果返回之前起作用的,Where中不能使用聚合函数。
Having是一个过滤声明,是
在查询返回结果集以后对查询结果进行的过滤操作,在Having中可以使用聚合函数。
在查询过程中聚合语句(sum,min,max,avg,count)要比having子句优先执行。
而where子句在查询过程中执行优先级高于聚合语句。
(2)Count(*)与Count(字段名)有何差别?
count(*)统计的是结果集的总条数,count(字段名)统计的是该字段值不为
null的。
(3)LIKE ‘[^s][^y][^s]%’与NOT LIKE ‘sys%’有无区别?请加以验证
使用 LIKE '[^s][^y][^s]%' 模式不一定每次找到的名称都相同。
四、实验总结
∙荐计算机上机实验内容及实验报告要求
∙荐构建学校德育管理与评价体系的实验报告
∙荐化学实验报告格式
∙荐大学物理实验课程设计实验报告
∙荐电路实验报告要求。