实验五 视图和查询
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验五查询和视图
一、实验目的
1.掌握SQL语句的定义功能和数据操作功能。
2.掌握SQL语句的查询功能,包括连接查询,内外嵌套查询,带计算的查询等。
3.掌握利用设计器创建和使用查询。
4.掌握利用设计器创建和使用本地视图。
二、实验准备和要求
1.本实验要用到实验四建好的学生管理数据库(xsgl.dbc)中的学生情况表、课程表和成绩表(xsqk.dbf,kc.dbf,cj.dbf),可以从天空教室下载,下载完毕把该数据库所在的文件夹设为默认目录。
2.作业提交要求:SQL命令直接在实验指导文档中写出,用查询和视图设计器做的查询和视图和实验指导文档一同打包上传。
三、实验内容与步骤
1.SQL的定义功能
(1)用SQL的定义命令创建一个职工表(文件名为:zg.dbf),表结构如下所示。
字段名类型宽度小数点
职工号 C 4
姓名 C 8
性别 C 2
出生日期 d
工资 N 7 2
命令:CREAT TABLE zg("职工号" C(4),"姓名" C(8),"性别" C(2),"出生日期" D,"工资" N(7,2))
答案:create table zg(职工号 c(4),姓名 c(8),性别 c(2),出生日期d,工资
n(7,2)
(2)修改上题创建的zg表。
①增加“职称”字段,类型为字符型,宽度为6。
命令:ALTER TABLE zg ADD COLUMN "职称" C(6)
答案: alter table zg add 职称 c(6)
②删除“出生日期”字段。
命令:alter table zg drop "出生日期"
答案:alter table zg drop 出生日期
③把“性别”字段的类型改为逻辑型。
命令:ALTER TABLE zg ALTER "性别" L
答案: alter table zg alter 性别 l
④把“工资”字段改名为“实发工资”。
命令:alter table zg rename "工资" to "实发工资"
答案:去掉引号
2.SQL的操作功能
①给课程表(kc)插入一条记录("2001","英语精读",2," ")。
命令:insert into kc ("课程号","课程名","学分","先修课") values ("2001","英语精读",2,"")
答案:insert into kc (课程号,课程名,学分) values (“2001”,”英语精读”,2)
②给女同学的入学分数增加10分。(提示:用Update 命令)。
命令:update xsqk set 入学分数=入学分数+10 where 性别=”女”
③把课程号为“1003”的学分改为4分。(提示:用Update 命令)。
命令:update kc set 学分=4 where 课程号="1003"
④给成绩表(cj)中不及格成绩的数据加上删除标记。查看是否执行,再去掉删除标记。
命令:delete from cj where "成绩"<"60"
答案:去掉引号
Recall all
3. SQL语言的查询功能
(1)简单查询
①查询所有男同学的个人记录。
命令:select * from xsqk where 性别="男"
②查询所有同学的学号、姓名、性别、专业、年龄和入学分数。
命令:select 学号,姓名,性别,专业,2012-year(出生日期) as 年龄,入学分数from xsqk
③查询成绩表中不重复同学的学号(即去掉重复的学号)。(提示:用Distinct 短语)
命令:select distinct 学号 from cj
(2)条件查询
①查询“计算机科学”专业男同学的信息。
命令:select * from xsqk where 专业="计算机科学" and 性别="男"
②查询1988年出生的“工业工程”专业同学的学号、姓名、性别、高考分数和出生日期信息。
命令:select 学号,姓名,性别,入学分数,出生日期 from xsqk where year(出生日期)=1988 and 专业="工业工程"
或
select 学号,姓名,性别,入学分数,出生日期 from xsqk where 出生日期 between {^1988-01-01} and {^1988-12-31} and 专业="工业工程"
(3)对查询结果进行排序。
①查询“市场营销”专业入学分数前3名同学的情况。
命令:select * from xsqk where 专业="市场营销" top 3 order by 入学分数
②查询所有男同学,并且是1988年出生的学生情况,要求查询结果按专业升序、入学分数降序排列。
命令:select * from xsqk where 性别="男" and year(出生日期)=1988 order by 专业 asc,入学分数 desc
(4)使用分组统计函数
①统计输出每个同学各门课程的期末考试最高分、最低分和平均分并按平均分降序排序。(提示:按“学号”分组)
命令:select 学号,max(成绩) as 最高分,min(成绩) as 最低分, avg(成绩) as 平均分 from cj order by 平均分 desc group by 学号
②统计输出各门课程的人数和期末考试各门课程的最高分、最低分和平均分并按最高分升序排序。(提示:按“课程号”分组排序)
命令:select 课程号,count (*) as 人数,max (成绩) as 最高分, min(成绩) as 最低分,avg(成绩) as 平均分 from cj order by 最高分 asc group by 课程号
(5)联结查询