当前位置:文档之家› 《数据库及其应用》实验报告2(2010版)

《数据库及其应用》实验报告2(2010版)

《数据库及其应用》实验报告实验序号:B0901000-02 实验项目名称:SQL查询、选择查询和动作查询(一) SQL视图中表达式练习1.进入SQL视图及在不同视图间切换在Access中进入查询的设计视图并在查询的不同视图之间切换。

单击创建→查询设计→右击空白处→SQL→→切换回同理2.不同类型数据的表达式运算在SQL视图中分别输入以下命令并运行,对于参数自己输入数据。

查看并写出各表达式运算结果。

SELECT -5.12^2+(17 mod 3);SELECT "Hello "+",World!",LEFT("清华大学出版社",2)+RIGHT("清华大学出版社",3);SELECT "你毕业的年份是", V AL(LEFT([你的学号],4))+4;→SELECT "现在是"+STR(YEAR(DATE()))+"年","现在的时间是:"+CSTR(TIME());SELECT "张三">"李四","ABCD"<"abcd",(DATE()-#1992-10-8#)>1000;(二)SQL命令进行查询和操作1.练习SQL查询的SELECT语句启动教学管理数据库,在数据库窗口对象栏中单击“查询”,然后进入SQL视图。

在“SQL视图”中输入以下SELECT命令,查看执行结果,并仔细体会查询的实现。

①查询“学院”、“专业”、“学生”完整数据。

SELECT *FROM ((学院INNER JOIN 专业ON 学院.学院号=专业.学院号)INNER JOIN 学生ON 专业.专业号=学生.专业号);②查询“工商管理”专业所有女生信息。

SELECT 专业,学生.*FROM 专业INNER JOIN 学生ON 专业.专业号=学生.专业号WHERE 专业.专业="工商管理" AND 学生.性别="女";③查询平均成绩在80分以上的各位学生的学号、姓名和平均分。

保存为查询对象,对象名“优秀学生”。

SELECT 学生.学号,姓名,A VG(成绩) AS 平均分FROM 学生INNER JOIN 成绩ON 学生.学号=成绩.学号GROUP BY 学生.学号,姓名HA VING A VG(成绩)>=80 ;单击工具栏保存按钮,弹出“另存为”对话框,输入“优秀学生”,单击“确定”按钮。

④查询没有学生数据的专业编号和专业。

SELECT 专业号,专业FROM 专业WHERE 专业号NOT IN (SELECT 专业号FROM 学生) ;⑤查询“湖北”籍1988年以后出生的学生信息。

SELECT *FROM 学生WHERE 籍贯LIKE "湖北*" AND 生日>=#1988-1-1# ;⑥查询选课人数最多的课程的课程号、课程名。

SELECT TOP 1 课程.课程号,课程名FROM 课程INNER JOIN 成绩ON 课程.课程号=成绩.课程号GROUP BY 课程.课程号,课程名ORDER BY COUNT(*) DESC ;2.练习SQL的插入、更新、删除操作命令①在课程表中插入一门新课,数据如命令所示。

INSERT INTO 课程V ALUES("06020101","会计学原理",3,"06");②将“法学院(04)”开设课程的学分增加1分。

UPDA TE 课程SET 学分=学分+1WHERE 学院号="04"③删除“信息学院(09)”开设的没有学生选修的课程。

DELETE FROM 课程WHERE 学院号="09" AND 课程号NOT IN (SELECT 课程号FROM 成绩)3.创建“教师”表,包括:工号、姓名、性别、生日、职称、基本工资、学院号。

写出创建命令。

(三)选择查询操作1.进入查询设计视图进行交互式选择查询设置启动教学管理数据库。

①查询“专业”表,显示开设的所有专业涉及的学科门类。

将“专业”表加入设计视图。

在QBE界面中“字段”栏选择“专业类别”字段显示。

在设计视图的空白处单击右键,从弹出的快捷菜单中选择“属性”命令,打开“属性”对话框,选择“唯一值”属性值“是”。

②查询各专业学生的人数。

将专业表和学生表加入设计视图。

在QBE界面中“字段”栏选中“专业号”和“专业”字段显示,然后单击工具栏中的“总计”按钮,在QBE中增加“总计”栏。

将“专业号”和“专业”字段设置为“分组”,然后选择“学生”表的“学号”字段,设置其为“计数”,最后在学号前面加上“人数:”,作为查询后的列名。

设计完成,运行查询。

③查询没有选课的男学生学号、姓名,即成绩表中没有记录的学生数据。

将“学生”表加入设计视图。

选择“学号”、“姓名”字段显示,在第3列处输入“注:‘尚未选课’”,选中“显示”复选框。

然后在第4列中选择“学号”但不显示。

在“条件”栏中输入一个子查询“Not In (SELECT 学号FROM 成绩)”。

2.进行交叉表查询将学生的“学号”和“姓名”作为行标题,“课程名”作为列标题,成绩作为交叉数据,生成交叉表。

3.进行参数查询通过参数查询指定日期以后出生的某个民族的学生信息。

启动选择查询设计窗口,将“学生”表加入设计窗口,在QBE窗口中选择“*”表示输出学生表所有字段。

然后选中“生日”字段,去掉“显示”行的复选框,在条件行输入>[SR];按同样方式设置“民族”字段。

然后选择“查询”→“参数”命令,弹出“查询参数”对话框,分别设置SR和MZ的类型,单击“确定”按钮,设置完毕。

(四)动作查询操作1.生成表查询操作练习将“查询平均成绩在80分以上的各位学生的学号、姓名和平均分”的结果生成新表,表名“优秀学生名单”。

输入SQL命令后,选择“查询”→“生成表”查询,弹出“生成表”对话框,输入表的名称,然后单击“确定”按钮。

运行查询。

删除“优秀学生名单”表中,平均分在85分以下的记录。

进入设计视图,加入“优秀学生名单”表。

选择“查询”→“删除查询”命令,这时窗口改为“删除查询”,QBE栏目发生变化,出现“删除”栏,调整或撤销其他栏。

在“字段”栏中选择“平均分”,这时“删除”栏值默认为Where。

在“条件”栏输入<85。

单击工具栏中的“运行”按钮运行,将删除数据。

如果选择“查询”→“删除查询”命令后,不进行条件设置而直接运行,即为无条件删除,将删除表中所有记录。

3.追加查询操作将平均分在80~85分之间的学生及成绩数据加入“优秀学生名单”表,⑴动设计视图,添加“学生”和“成绩”表。

⑵在“字段”栏设置“学号”、“姓名”和“成绩”字段。

单击工具栏中的“总计”按钮,增加“总计”栏。

设置“学号”和“姓名”为“分组”字段,“成绩”字段为“平均值”字段。

在“条件”栏中输入>=80 and <85。

⑶选择“查询”→“追加查询”命令,打开“追加”对话框。

选择“优秀学生名单”表,单击“确定”按钮。

⑷这时,设计视图的QBE窗格中增加“追加到”栏,选择“学号”、“姓名”和“平均分”字段,设计完成。

运行查询,数据被追加到“优秀学生名单表”中。

将没有学生选修的课程的学分减少1分。

⑴启动设计视图,添加“课程”表。

选择“查询”→“更新查询”命令,设计视图变为“更新查询”,QBE窗口中增加“更新到”栏。

⑵选中“学分”字段,然后在“更新到”栏中输入“课程.学分-1”。

⑶选中“课程号”字段,在“条件”栏中输入“Not In(SELECT 课程号 FROM 成绩)”,设计完成。

单击运行按钮运行查询。

四、回答问题1.有哪几种方式可进入“SQL视图”?如果用“记事本”编写了SQL语句,是否可以在SQL 视图中使用?如何操作?答:单击查询工具栏的“视图”工具的下拉按钮,选择“SQL视图”选项或单击菜单栏中“视图”,选择“SQL视图”。

可以。

2.为什么不能在数字常量前加“¥”或“$”符号表示币值常量?“¥”或“$”有何作用?答:“$”表示可以在“格式”属性中的任何位置使用这些字符并将这些字符原文照印。

3.如果在修改“法学院”学分的操作中要求根据“学院名”作为输入条件修改数据,查询命令应该如何写?答:UPDATE 课程SET 学分=学分+1WHERE 学院名=法学院;4.不保存查询,与将查询保存为查询对象有何区别?查询对象有什么作用?答:将查询对象保存为查询对象后,可将查询功能反复执行,并作进一步处理。

作用:当需查看查询结果时,进入查询对象界面,选中相应的查询对象单击“打开”,即可运行查询,查看结果;由于查询的结果与表的格式相同,所以查询对象还可以进一步成为其他操作的数据源。

5.根据以下给定的查询要求,写出对应的查询命令。

①查询学生中的民族来源,显示不重复的民族数据。

答:SELECT DISTINCT 民族FROM 学生;②查询各民族男生和女生的人数。

答:SELECT DISTINCT 民族,人数FROM 学生;③查询没有学生选修的课程信息以及开课的学院名。

答:SELECT 课程号,学院名FROM 课程WHERE 课程号NOT IN (SELECT 课程号FROM 课程);④插入几条教师记录。

答:INSERT INTO 教师V ALUES(“张兰”,“赵也声”);⑤给“教授”职称的教师的基本工资增加10%。

答:UPDATE 教师SET 工资=工资*(1+10%)WHERE 职称=教授;⑥删除没有学生就读的专业数据。

答:DELECT FROM 专业WHERE 专业号NOT IN ( SELECT 专业号FROM 学生);⑦删除教师表。

答:DELECT TABLE 教师TEXT(6) PRIMARY KEY,(工号TEXT(6) PRIMARY KEY,姓名TEXT(10) NOT NULL,性别TEXT(2),生日DATE,职称TEXT(8),基本工资MONEY,学院号TEXT(2) REFERENCES 学院(学院号));6.深入体会交叉表查询的作用,简述交叉表查询的实质意义。

作为行标题的字段最多可以设置几个?作为列标题和交叉值的字段最多可以设置几个?答:交叉表查询都是一种特殊的汇总查询。

交叉表事实上反映的是对两种实体极其练习的关系表示,转换为另一种二维表结构来显示。

行标题的字段可是多个,列标题只能是一个。

7.参数查询的参数设置是否一定要通过菜单设置类型?通过菜单设置的参数是否一定要出现在查询中?答:是。

相关主题