实验七参考答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(一)SQL的定义功能

1.用SQL的定义命令创建一个职工表(zg.dbf),表结构如下所示。

字段名类型宽度小数点

职工号 C 4

姓名 C 8

性别 C 2

出生日期 d

工资 N 7 2

命令:

create table zg(职工号 c(4),姓名 c(8),性别 c(2),出生日期 d,工资 n(7,2)) 2.修改上题创建的职工表。

(1)增加“职称”字段,类型为字符型,宽度为6。

alter table zg add 职称 c(6)

(2)删除出生日期字段。

alter table zg drop 出生日期

(3)把性别字段的类型改为逻辑型。

alter table zg alter 性别 l

(4)把工资字段改名为实发工资。

alter table zg rename 工资 to 实发工资

(二)SQL的操作功能

1.给课程表(kc)插入一条记录("2001","英语精读",2," ")

insert into kc(课程号,课程名,学分) values ("2001","英语精读",2)

2.给女同学的入学分数增加10分。(提示:用update 命令)

update xsqk set 入学分数=入学分数+10 where 性别="女"

3.把课程号为“1003”的学分改为3分。(提示:用update 命令)

update kc set 学分=3 where 课程号="1003"

4.给成绩表(cj)中不及格成绩的数据加上删除标记。

delete from cj where 成绩<60

查看是否执行,再去掉删除标记。

Recall all

(三)SQL语言的查询功能

1.查询指定列

(1)查询所有男同学的个人记录。

select * from xsqk where 性别="男"

(2)查询所有同学的学号、姓名、性别、专业和入学分数。

select 学号,姓名,性别,专业,入学分数 from xsqk

2.查询经过计算的列

列出所有同学的学号、姓名、性别、专业和年龄。

select 学号,姓名,性别,专业,2008-year(出生日期) as 年龄 from xsqk 3.去掉重复值

查询成绩表中不重复同学的学号(即去掉重复的学号)。(提示:用Distinct 短语)

select distinct 学号 from cj

4.条件查询

(1)查询计算机科学专业男同学的信息。

select * from xsqk where 专业="计算机科学"and 性别="男"

(2)查询1988年出生的工业工程专业同学的学号、姓名、性别、入学分数和出生日期信息。

select 学号,姓名,性别,入学分数,出生日期 from xsqk;

where year(出生日期)=1988

5.对查询结果进行排序

查询市场营销专业全体学生情况,要求查询结果按入学分数降序排列。

select * from xsqk where 专业="市场营销" order by 入学分数 desc 6.使用统计函数

统计输出每各同学各门课程的期末考试最高分、最低分和平均分并按平均分降序排序。(提示:按学号分组)

select 学号,max(成绩) as 最高分,min(成绩) as 最低分, ;

avg(成绩) as 平均分 from cj order by 平均分 desc group by 学号7.联结查询

(1)查询“市场营销”专业的同学的所有课程成绩。包括同学的学号、姓名、专业、课程号、学期和成绩。(提示:对xsqk、cj两表连接)

select xsqk.学号,xsqk.姓名,xsqk.专业,cj.课程号,cj.学期,cj.成绩 ; from xsqk join cj on xsqk.学号=cj.学号 where 专业="市场营销"

(2)列出所有不及格同学的学号、姓名、专业、课程号、课程名和成绩。(提示:对xsqk、cj、kc三表连接)

select xsqk.学号,xsqk.姓名,xsqk.专业,kc.课程号,kc.课程名,cj.成绩 ; from xsqk join cj join kc on cj.课程号=kc.课程号 ;

on xsqk.学号=cj.学号 where 成绩<60

或者:

select xsqk.学号,xsqk.姓名,xsqk.专业,kc.课程号,kc.课程名,cj.成绩 ; from xsqk join cj on xsqk.学号=cj.学号 ;

join kc on cj.课程号=kc.课程号 ;

where 成绩<60

(3)为“市场营销”专业建立一个包括每个同学学号、姓名、专业和各课程平均分的查询,

按平均分降序排列。(提示:对xsqk、cj两表连接,并按cj表中的学号分组)select xsqk.学号,xsqk.姓名,xsqk.专业,avg(cj.成绩) as 平均分;

from xsqk join cj on xsqk.学号=cj.学号 ;

where 专业="市场营销";

group by cj.学号 ;

order by 平均分 desc

8.嵌套查询

(1)列出“市场营销”专业同学的所有成绩表中的记录,包括学号、课程号、学期、成绩。

(提示:学号作为内外查询连接的条件)

select * from cj ;

where 学号 in (select 学号 from xsqk where 专业="市场营销")

(2)查询成绩表(cj)中至今没有一门课程成绩的同学的信息。包括学号、姓名、性别、专业、出生日期和入学分数等。

(提示:学号作为内外查询连接的条件)

select * from xsqk where 学号 not in (select 学号 from cj)

(3)查询学分最高的课程信息。

(提示:先用max函数在kc表中求出最高学分是多少)

select * from kc where 学分=(select max(学分) from kc)

9.查询结果的不同去向

(1)查询“1001”号课程考试分数前2名的信息。

(用top 2短语在浏览窗口内显示)

select top 2 * from xsqk join cj on xsqk.学号=cj.学号;

where 课程号="1001" order by 成绩 desc

(2)查询“计算机科学”专业的学生信息并将结果存人临时表ls1中。

(使用INTO CURSOR ls1)

相关文档
最新文档