实验五 视图和查询

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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)联结查询

相关文档
最新文档