实验四-查询

合集下载

《数据库与信息系统》实验4指导解析_9-10

《数据库与信息系统》实验4指导解析_9-10

实验四数据库操作语言SQL一.实验目的⚫了解使用SQL中DDL语句创建数据库和表的方法⚫熟练掌握使用SQL中DML语句对数据库进行查询、插入、修改和删除等操作的方法⚫掌握可编程对象视图和存储过程的创建与使用方法,了解触发器的创建方法二.实验环境及素材⚫MySQL和Navicat for MySQL⚫bookstore数据库的脚本文件bookstore.sql三.实验内容首先创建一个bookstore数据库,执行bookstore.sql脚本文件实现表的创建及数据记录的添加。

然后在bookstore数据库中完成以下题目(bookstore数据库设计说明参见10.1节)。

①在Navicat for MySQL中,创建数据库bookstore。

②右击数据库bookstore,选择“运行SQL文件…”,在对话框中浏览选择“bookstore.sql”文件,点击“开始”即可完成数据表定义及添加数据记录。

③在左栏连接窗口展开数据库“bookstore”/表,右击“表”选“刷新”菜单,即可看到恢复的各数据表。

9.创建和使用存储过程。

解析:存储过程是经过编译的SQL语句的集合。

用户首先创建存储过程,然后在程序中调用该存储过程执行。

创建存储过程可以在Navicat for MySQL中使用向导建立,也可以使用SQL的CREATE PROCDURE语句。

存储过程可以接受参数、也可将查询信息通过输出参数返回调用者。

常用存储过程的语法格式:CREATE PROCDURE 存储过程名( [形式参数列表])SQL语句段“形式参数列表”中多个参数之间用逗号分隔,如果没有参数,则()中为空。

每个参数由输入输出类型、参数名和参数类型三部分组成,定义规则如下:[IN|OUT|INOUT 参数名类型输入输出类型中:IN是输入参数,即把数据传递给存储过程;OUT是输出参数,即从存储过程返回值;INOUT表示输入输出,即传入也能返回值。

实验4:数据库的高级查询操作

实验4:数据库的高级查询操作

实验4:数据库的高级查询操作实验四:数据库的各类数据查询操作一、实验目的掌握SQL程序设计基本规范,熟练运用SQL语言实现数据的各种查询和设计,包括连接查询、嵌套查询、集合查询等。

二、实验内容和要求针对KingbaseES数据库设计单个表针对自身的连接查询,设计多个表的连接查询;设计各种嵌套查询和集合查询。

了解和掌握SQL查询语句各个子句的特点和作用,按照SQL程序设计规范写出具体的SQL查询语句,并调试通过。

三、实验步骤连接查询1. 查询每个学生及其选修课程的情况:select student.*, sc.* from student, sc where student.sno=sc.sno比较: 笛卡尔集: select student.*, sc.* from student, sc自然连接: select student.sno, sname, ssex, sdept, cno, grade from student, sc where student.sno=sc.sno2. 查询每一门课程的间接先行课(只求两层即先行课的先行课):select /doc/3d4429586.html,o, Second.pcno 间接先行课from course First, course Second where First.pcno=/doc/3d4429586.html,o比较:select /doc/3d4429586.html,o, Second.pcno 间接先行课from course First, course Second where First.pcno=/doc/3d4429586.html,o and Second.pcno is not null3. 列出所有学生的基本情况和选课情况, 若没有选课,则只列出基本情况信息:SQL Server 中: select s.sno, sname, ssex,sdept, cno, grade from student s, sc sc where s.sno*=sc.sno4. 查询每个学生的学号, 姓名, 选修的课程名和成绩:select S.sno, sname, cname, grade from student S, course C, sc SC where S.sno=SC.sno and /doc/3d4429586.html,o=/doc/ 3d4429586.html,o5. 查询平均成绩在80分以上的学生姓名Select sname from student,sc where student.sno=sc.sno GROUP BY sc.snoHAVING AVG(sc.grade)>80;高级查询使用带IN谓词的子查询1.查询与’刘晨’在同一个系学习的学生的信息:select * from student where sdept in(select sdept from student where sname='刘晨')比较: select * from student where sdept =(select sdept from student where sname='刘晨') 的异同比较: select * from student where sdept =(select sdept from student where sname='刘晨') and sname<>'刘晨' 比较: select S1.* from student S1, student S2 where S1.sdept=S2.sdept and S2.sname='刘晨'2.查询选修了课程名为’信息系统’的学生的学号和姓名:SQL Server中: select sno, sname from student where sno in (select sno from sc where cno in(select cno from course where cname='信息系统'))3.查询选修了课程’1’和课程’2’的学生的学号:select sno from student where sno in (select sno from sc where cno='1')and sno in (select sno from sc where cno='2') 比较: 查询选修了课程’1’或课程’2’的学生的sno:select sno from sc where cno='1' or cno='2'比较连接查询:select A.sno from sc A, sc B where A.sno=B.sno and /doc/3d4429586.html,o='1' and/doc/3d4429586.html,o='2'使用带比较运算的子查询1.查询比’刘晨’年龄小的所有学生的信息:select * from student where sage<(select sage from student where sname='刘晨')使用带Any, All谓词的子查询2.查询其他系中比信息系(IS)某一学生年龄小的学生姓名和年龄;select sname, sage from student where sage <any< p=""> (select sage from student where sdept='IS')and sdept<>'IS'3.查询其他系中比信息系(IS)学生年龄都小的学生姓名和年龄:select sname, sage from student where sage <all< p="">(select sage from student where sdept='IS')and sdept<>'IS'4.查询与计算机系(CS)系所有学生的年龄均不同的学生学号, 姓名和年龄:select sno,sname,sage from student where sage<>all(select sage from student where sdept='CS')使用带Exists谓词的子查询和相关子查询5.查询与其他所有学生年龄均不同的学生学号, 姓名和年龄:select sno,sname,sage from student A where not exists(select * from student B where A.sage=B.sage andA.sno<>B.sno)6.查询所有选修了1号课程的学生姓名:select sname from student where exists(select * from sc where sno=student.sno and cno='1')7.查询没有选修了1号课程的学生姓名:select sname from student where not exists(select * from sc where sno=student.sno and cno='1')8.查询选修了全部课程的学生姓名:select sname from student where not exists(select * from course where not exists( select * from sc where sno=student.sno and cno=/doc/3d4429586.html,o))12. 查询至少选修了学生95002选修的全部课程的学生的学号:select distinct sno from sc A where not exists(select * from sc B where sno='95002'and not exists(select * from sc C where sno=A.sno and cno=/doc/3d4429586.html,o))13. 求没有人选修的课程号cno和cnamecname:select cno,cname from course C where not exists(select * from sc where /doc/3d4429586.html,o=/doc/ 3d4429586.html,o )14. 查询满足条件的(sno,cno)对, 其中该学号的学生没有选修该课程号cno 的课程select sno,cno from student,course where not exists(select * from sc where cno=/doc/3d4429586.html,o and sno=student.sno)15. 查询每个学生的课程成绩最高的成绩信息(sno,cno,grade):select * from sc A where grade=(select max(grade) from sc where sno=A.sno )集合查询1. 查询数学系和信息系的学生的信息;select * from student where sdept='MA' union select * from student where sdept='IS'2. 查询选修了1号课程或2号课程的学生的学号:select sno from sc where cno='1'Unionselect sno from sc where cno='2'思考:1. 连接查询速度是影响关系数据库性能的关键因素。

(完整版)数据库技术与应用实验报告

(完整版)数据库技术与应用实验报告

(完整版)数据库技术与应用实验报告《数据库技术与应用》实验报告班级学号:姓名:实验日期:指导老师:实验名称一、实验一表的建立与维护实验目的与要求 1.初步掌握根据一个应用目标把现实问题抽象为关系数据模型的方法,从而为解决实际问题奠定数据基础。

2.掌握表的建立与维护的一般方法。

3.理解表的记录指针与当前记录的意义。

4.掌握表的打开、关闭、浏览、显示等操作方法。

5.掌握表结构的修改。

6.掌握记录的增加与删除等操作。

7.掌握数据复制方法。

8.二、实验准备 1、复习关系数据库的有关概念,深刻理解Virsual FoxPro中所采用的关系模型的实质及Virsual FoxPro所支持的数据模型。

2、复习表的建立、现实与维护等操作。

三、实验内容下表是某校学生花名册,根据该表完成以下操作,写出操作步骤。

学习成绩性学号姓名别学 009901 张小强男 98 85 否 20XX年获全数外语出生年月否少数民族受奖情况国数学奥林匹克竞赛二等奖。

009902 009903 009904 009905 陈斌李哲男男 88 56 75 88 75 82 72 81 否是否是20XX年获全国中学生田径运动会100米第三名009906 009907 009908 009909 张青松男封小莉女周晓钱倩女女 65 82 65 83 81 73 78 85 否否20XX年获广东省三好学生称号 009910 009911 孙力军男肖彬彬女 64 55 68 95 是否赵大明男冯珊女否否1.设计一个表的结构,使其能描述上表的信息,同时又符合关系模型的基本要求。

2.建立表,输入表中的数据,并将保存在自己盘中。

3.给全部女生的数学成绩加5分。

4.将记录指针定位到第5号记录。

5.将记录指针指向孙力军同学。

6.显示所有姓“张”学生的情况。

7.把表的姓名字段宽度修改为8。

8.浏览记录数据,且表头用汉字。

9.把少数民族学生的记录复制到中。

实验四 数据查询(2)

实验四 数据查询(2)

实验四“教学管理系统”数据查询(2)一、实验目标:1、熟练掌握各种子查询的方法使用;2、掌握视图的创建方法;二、实验内容:1、用子查询实现学生成绩信息查询功能【实验场景】:学期结束时班主任通过下述子任务①②的查询结果,将有不及格课程的学生成绩单邮寄到学生家中,通知准备开学后补考。

而教务处负责成绩管理的老师也需要通过子任务③④的查询结果完成相应的课程成绩处理和分析工作。

任务如下:①根据某门课程的名称,如“C语言程序设计”,查询开设这门课程的所有课程班情况。

查询结果如图一所示:图一查询“C语言程序设计”课程班信息②查询本班课程成绩不及格的学生学号、姓名、家庭住址、邮编。

图二查询本班成绩不及格的学生基本信息③查询存在成绩不及格学生的课程班的编码、课程名称和任课教师信息。

图三查询成绩不及格的学生课程信息④查询平均成绩大于等于80分的课程班的编码、课程名称和任课教师信息。

图四查询平均成绩优秀的学生课程信息请用T-SQL语句实现上述四个查询。

【解决示例】:分析:根据子任务①的要求,可以分两步来完成:第一步:先在表“TB_Course”中查询出这门课程的课程编码,因为课程班信息表“TB_CourseClass”中只有课程编码信息“CourseID”;第二步:按照课程编码信息在表“TB_CourseClass”中查询关于这门课程的所有课程班信息。

现在要解决的问题是,如何将以上两步骤的T-SQL查询语句用子查询的方式一步完成?实现参考代码如下:打开SSMS窗口,在查询编辑器中输入以下T-SQL语句:【参考代码】:注意:上述子查询中返回的字段名称必须与外层查询中需要与子查询匹配的字段名称(如关键字“IN”前面)字段名称一致,且子查询中返回的字段数只能是一个。

【拓展练习】:教务处管理学生课程选修的老师经常需要查询:只要存在任何一门课程班的选修人数不满最大允许选修人数的一半时,就要查看所有未选满(【FullFlag】字段为“U”)的课程班信息。

《数据库与信息系统》实验4指导解析_9-10

《数据库与信息系统》实验4指导解析_9-10

实验四数据库操作语言SQL一.实验目的⚫了解使用SQL中DDL语句创建数据库和表的方法⚫熟练掌握使用SQL中DML语句对数据库进行查询、插入、修改和删除等操作的方法⚫掌握可编程对象视图和存储过程的创建与使用方法,了解触发器的创建方法二.实验环境及素材⚫MySQL和Navicat for MySQL⚫bookstore数据库的脚本文件bookstore.sql三.实验内容首先创建一个bookstore数据库,执行bookstore.sql脚本文件实现表的创建及数据记录的添加。

然后在bookstore数据库中完成以下题目(bookstore数据库设计说明参见10.1节)。

①在Navicat for MySQL中,创建数据库bookstore。

②右击数据库bookstore,选择“运行SQL文件…”,在对话框中浏览选择“bookstore.sql”文件,点击“开始”即可完成数据表定义及添加数据记录。

③在左栏连接窗口展开数据库“bookstore”/表,右击“表”选“刷新”菜单,即可看到恢复的各数据表。

9.创建和使用存储过程。

解析:存储过程是经过编译的SQL语句的集合。

用户首先创建存储过程,然后在程序中调用该存储过程执行。

创建存储过程可以在Navicat for MySQL中使用向导建立,也可以使用SQL的CREATE PROCDURE语句。

存储过程可以接受参数、也可将查询信息通过输出参数返回调用者。

常用存储过程的语法格式:CREATE PROCDURE 存储过程名( [形式参数列表])SQL语句段“形式参数列表”中多个参数之间用逗号分隔,如果没有参数,则()中为空。

每个参数由输入输出类型、参数名和参数类型三部分组成,定义规则如下:[IN|OUT|INOUT 参数名类型输入输出类型中:IN是输入参数,即把数据传递给存储过程;OUT是输出参数,即从存储过程返回值;INOUT表示输入输出,即传入也能返回值。

VFP实验报告

VFP实验报告

实验报告学院:专业:年级:姓名:学号:实验室号:计算机号:实验日期:年月日指导教师签字:成绩:报告退发 (订正、重做)实验一:熟悉VFP开发环境(验证性,3学时)一、实验目的1.熟悉VFP集成开发环境;2.项目管理器的使用;3.常用命令的使用;二、实验内容1.在硬盘上新建一个以自己学号命名的文件夹,并将此文件夹设置为默认目录.要使此设置关闭VFP系统后再进入VFP系统时仍然有效该如何保存?2.设置日期格式为年月日格式,年份四位数显示和两位数显示如何设置,以短划线”-”作为日期分隔符,要使以上设置关闭VFP系统后再进入VFP系统时失效该如何保存?3.如何将现在小数点后只保留2位改成保留更多的位数?4.定制工具栏操作:如何将调色板工具栏里的红色添加到常用工具栏里?5.在默认目录下建立“学生成绩管理”项目文件和“学生成绩”数据库.分别在项目中建立数据库和不在项目中建立数据库,比较他们的区别;6.观察上述第5题的操作过程中命令窗口中出现的命令,并指出各命令的作用;7.退出VFP系统的命令是什么?有哪些方法可以退出VFP系统?三、实验环境1.硬件:学生用微机、局域网环境2.软件:Windows 2000中文操作系统、Visual Foxpro 6.0四、实验步骤(描述实验的具体操作步骤和方法,内容见后附的手写材料)五、实验调试与结果分析(描述实验的调试过程,实验中发生的现象、中间结果、最终得到的结果,并进行分析说明,分析可能的误差或错误原因等.内容见后附的手写材料)六、总结(说明实验过程中遇到的问题及解决办法;新发现或个人的收获;未解决/需进一步研讨的问题或建议新实验方法等.内容见后附的手写材料)实验一:熟悉VFP开发环境1. 先在D盘建一个文件夹,并将其命名为092221004.在桌面打开VFP系统,在菜单栏上选择“工具”“选项”,此时跳出一个选项框,选定“文件位置”中的“默认目录”,然后选择“修改”,将其设为“D\092221004”,最后选择“设为默认值” ,“确定”,即可.2. 在桌面打开VFP系统,在菜单栏上选择“工具”“选项”,此时跳出一个选项框,选定“区域”,然后在“日期格式”栏的下拉选项中选择“年月日”;勾选“日期分隔符”和“年份(1998或98)”项,并在“日期分隔符”其后面输入“-”;最后选择“设为默认值” ,“确定”,即可.3. 在桌面打开VFP系统,在菜单栏上选择“工具”“选项”,此时跳出一个选项框,选定“区域”,然后在“小数位数”项输入小数位数的多少,最后选择“设为默认值” ,“确定”,即可.4. 在桌面打开VFP系统,在菜单栏上选择“显示”,此时跳出一个工具栏对话框,勾选“调色板”后选择右边的“定制”,跳出定制工具栏,在“分类”中选定“调色板”,在其右边中选定红色,并将其拖动到主窗口,关闭定制工具栏,最后将其移到常用工具栏下.5. 打开VPF系统,在菜单栏上选择“文件”,在“文件”的下拉栏中选定“新建”弹出新建选框,在左边的“文件类型”中选定“项目”然后点击右边的“新建文件”弹出创建的对话框,在该对话框的项目文件框中键入“学生成绩管理”后点击“保存”.在菜单栏上选择“文件”,在“文件”的下拉栏中选定“新建”弹出新建选框,在左边的“文件类型”中选定“数据库”然后点击右边的“新建文件”弹出创建的对话框,在该对话框的数据库名框中键入“学生成绩”后点击“保存”.区别: 如果是在项目中建立数据库,则命令窗口不会显示命令.6. “CREATE PROJECT”是建立项目文件命令,“CREATE DATABASE”是建立数据库命令,“ MODIFY DATABASE”打开默认目录下的数据库,“MODIEF PROJECT”是打开默认目录下的项目文件7. 退出VFP系统的命令是“Quit”;其他退出VFP系统的方法:方式一:单击应用程序窗口中的“关闭”按纽.方式二:在“文件”菜单中选择“退出”命令.方式三:在命令窗口中键入QUIT命令.方式四:同时按下Alt和F4组合键.方式五:单击应用程序窗口左上角的控制菜单图标,从弹出的菜单中选择“关闭”命令.或者双击控制菜单图标.实验报告学院:专业:年级:姓名:学号:实验室号:计算机号:实验日期:年月日指导教师签字:成绩:报告退发 (订正、重做)实验二:数据类型、函数和表达式(验证性,3学时)一、实验目的1.VFP变量的使用;2.VFP函数的使用;3.VFP表达式的使用;二、实验内容1.熟悉内存变量的命名规则,举例说说正确的内存变量名和不正确的内存变量名,并在命令窗口中加以测试;2.测试两种内存变量的赋值命令(=和STORE),分别给变量赋以不同数据类型的值,用type函数测试其数据类型;3.分别定义一个一维数组和二维数组,并用type函数测试数组元素未赋值时的数据类型及察看未赋值数组元素的值;给同一数组的不同的数组元素赋以不同数据类型的值;4.测试常用的系统函数的用法并观察其结果(有关表的函数除外);5.测试不同数据类型数据为空的值(即用EMPTY()函数进行测试);6.设X=3,Y=10,求Ln|-y|+e xy(1-y)的值;设a=3,b=5,c=2,求ax2+bx+c=0的根;7.求以下逻辑表达式中各个关系表达式的值,并求出逻辑表达式的值:“Z”>[z].AND.(’ABCLL’=‘ABC’.OR.3^2!=LEN([VISUAL FOXPRO]) ) 三、实验环境1.硬件:学生用微机、局域网环境2.软件:Windows 2000中文操作系统、Visual Foxpro 6.0四、实验步骤(描述实验的具体操作步骤和方法,内容见后附的手写部分)五、实验调试与结果分析(描述实验的调试过程,实验中发生的现象、中间结果、最终得到的结果,并进行分析说明,分析可能的误差或错误原因等.内容见后附的手写部分)六、总结(说明实验过程中遇到的问题及解决办法;新发现或个人的收获;未解决/需进一步研讨的问题或建议新实验方法等.内容见后附的手写部分)实验二:数据类型、函数和表达式1. 输入 temp=”How are you?”输入”use 20 to A”?temp 跳出”命令中含有不能识别的短语或关键字”How are you2. 在命令窗口中输入①命令格式一②命令格式二Temp=2*3+5-8 store 0 to X1 X2 Y1 Y2?temp ?X1,X2,Y1,Y25 0 0 0 0?type(’temp’) 所以其数据类型为数值型N3.一维数组:DIMENSION X(3) 二维数组:DIMENSION a(2,3)未赋值时: dimension x(3) 未赋值时: dimension a(2,3)?type (’x(3)’) ?type (’a(2,3)’)L 所以是逻辑型 L赋值时: dimension x(3) 未赋值时: dimension a(2,3)x(1)=2 a(2,3)=’world’x(2)=4 ?a(2,3)store x(1)+x(2) to x(3) world? x(3)64.字符整理函数 ?LEN(’’HELLO’’) 5 C的长度系统测试函数 ?FILE(”student.dbf”) 测试制定文件是否存在数值型函数 ?ABS(-2,0) 2.0 绝对值5.? Empty (0) T6. ① x=3 ② a=3y=10 b=5? loy(abs(-y))+exp(x*y)*(1-sqrt(y)) c=2-23107125253585,2800 ?sqrt (a*(x^2)+b*x+c)6.637.关系表达式逻辑表达式? ”Z”>[z] 例. ”Z”>[z].AND (’ABCLL’=’ABC’.OR.3^2.T. =LEN([VISUAL FOXPRO])? 3^2!=LEN([VISUAL FOXPRO]) .T..T. (’ABCLL’=’ABC’.OR.3^2!=([VISUALFOXPRO])实验报告学院:专业:年级:姓名:学号:实验室号:计算机号:实验日期:年月日指导教师签字:成绩:报告退发 (订正、重做)实验三:表与数据库的基本操作(验证性,6学时)一、实验目的1.数据库的建立,表的建立;2.表的完整形约束、数据库和表的打开关闭;3.表记录的插入、修改和删除;4.表记录的显示以及记录的定位;5.记录的排序,单索引和复合索引的建立,索引的使用方法;6.多工作区的使用,表间关联的建立.二、实验内容1.在“学生成绩”项目中建立“学生成绩”数据库;在学生成绩数据库中建立“学生”、“成绩”、“课程”三个数据库表并输入一些相应的数据;在“学生成绩”项目中建立自由表 ABC.dbf;并将这些表从项目中移出或移入;2.对“学生”表设置如下的约束(字段有效性):学号不能为空,为空时提示信息:“必须输入学号”、奖学金的默认值为200;对课程表设置如下约束(记录有效性):课时>=学分*20;3.对上述三个数据库表进行数据增加、删除(包括逻辑删除和物理删除)和修改操作;4.用菜单的方法进行表记录的定位,指出什么是当前操作记录;5.将学生表的学号设定为主索引,升序排列;成绩表的学号和课程号作为普通索引,在表中要有一个学生有多门课的成绩、多个学生有同一门课的数据的条件下试试这两个字段能否作为主索引;课程表的课程号作为主索引,降序排列并对该表察看索引结果;对学生、成绩、课程三个表建立永久性关系;6.用命令对学生表的学号建立独立索引文件、对成绩表的学号建立非结构化复合索引文件;7.利用数据工作期建立学生表、成绩表和课程表的关联,使得指针在“学生”表的浏览窗口中移动时,在“成绩”的浏览窗口中同步显示与该学号有关的成绩信息、在“课程”表的浏览窗口中同步显示该生相应成绩的课程名的纪录.三、实验环境8.硬件:学生用微机、局域网环境9.软件:Windows 2000中文操作系统、Visual Foxpro 6.0实验三:表与数据库的基本操作1.(1)打开“学生成绩”项目,选定“数据库”后点击右边的“新建”,弹出“新建数据库”对话框,然后选择“新建数据库”,在“创建”对话框中的数据库名中键入“学生成绩”,最后保存.选定“学生成绩”数据库下拉栏中的“表”后点击右边的新建,弹出“新建表”对话框,然后选择“新建表”弹出“创建”对话框,在该框的输入表名栏中键入“学生”后保存,用同样的方法分别建立“成绩”“课程”表.依次选定“学生”“成绩”“课程”表点击右边的“修改”,然后在弹出的对话框中依次分别输入一下数据(2)打开“学生成绩”项目,选定“数据库”下拉栏下的“自由表”后点击右边的新建,弹出“新建表”对话框,选择“新建表”后在弹出的对话框的输入表名栏中输入“ABC”并保存,后在该表随便输入数据后“确定”.要移出则选定该自由表后选择右边的“移去”即可.2.(1) 先选定“学生”表选择右边的“修改”在弹出的表中选择“学号”后选定在“字段有效性”下“规则”后面的,此时弹出“表达式生成器”在该对话框中的“字段”下选定“学号”,在”逻辑”的下拉中选定“<>”,此时在“有效性规则”下的框中有“学号 <>”,然后在此后面加上引号(注意:引号必须是在无输入法的情况下输入),最后选定“确定”(2)先选定“课程”表选择右边的“修改”在弹出的表中选择“课时”后选定在“字段有效性”下“规则”后面的,此时弹出“表达式生成器”在该对话框中的“字段”下选定“课”,在”逻辑”的下拉中选定“>=”,此时在“有效性规则”下的框中有“课时 >=”,然后在此后面加上“学分*20”最后选定“确定”3. 打开“学生表”,点击“显示”菜单中的追加方式,便可对数据进行增加进入表“浏览”窗口,点击“删除”标记栏被逻辑的记录就加上了“删除”标记,如要恢复则点击“删除”标记栏;物理删除:先对删除的记录做逻辑删除,选择“表”“菜单”“彻底删除”,在“系统”中选“是”则记录将被彻底删除在“项目管理器”中选择要修改的表名,单击“修改”,进到“表设计器”进行修改4.在“浏览”窗口中选择“表”的转到记录,即可将指针移动到相应的记录上5.(1)在项目管理器学生成绩点击学生表→显示→表设计器→索引→在索引名处输入"学号"→类型输入主索引→排序为升序→确定(2)以同样的方法将成绩表和课程表进行设置(3)打开数据库设计器在学生表中找到学号→按住学号拖到成绩表中的学号→按住课程表中的课程号→拖到成绩表的课程号中永久关系建立6.(1)在项目管理器学生成绩中选中学生表→在命令窗口输入"Index on 学号To 文件名"→按 Enter键(2)在项目管理器学生成绩中选中学生表→在命令窗口输入"Index on学好TAG文件名→按 Enter键7.窗口数据工作期→别名处点击学生关系→别名处点击成绩→表达式生成器→确定→别名处点击课程关系→关闭窗口实验报告学院:专业:年级:姓名:学号:实验室号:计算机号:实验日期:年月日指导教师签字:成绩:报告退发 (订正、重做)实验四:查询与视图(验证性,6学时)一实验目的1.顺序查询和索引查询的基本方法2.求和,平均数、分类汇总等统计方法3.使用查询设计器建立查询4.用SQL命令完成各种数据库操作二实验内容1.掌握顺序查询命令Locate和索引查询命令seek的使用方法,并针对student表,举例说明之;2.掌握求和命令SUM、求平均值命令AVERAGE的使用方法;并针对student表按专业统计奖学金总和和按学生性别统计奖学金平均值;3.用查询设计器建立查询文件INQUA.QPR.根据表student.dbf和grade.dbf,查询“计算机”专业中男生的各门课程(即要按课程号分组)的平均成绩,显示字段依次为“课程号”和“平均成绩”两列,以两表中的学号字段进行内部连接,,并要求按课程号的升序显示;4.利用set relation 命令建立表间临时关系:子表为student.dbf,父表为grade.dbf,要使得当浏览父表的纪录时子表中相应的记录会跟着联动;并且在命令窗口中输入如下命令观察结果:brow field 学号,student.姓名,student.专业,课程号,成绩5.用SQL命令实现如下查询(在实验步骤中写出相应的命令,在调试和结果分析中对该命令的各个部分进行解释):(1)查询Student表中所有的学生信息;(2)查询Student表中计算机专业的学生的最高奖学金、最低奖学金和平均奖学金;(3)对Student表按专业统计奖学金,即查询按专业分组的各专业的奖学金总和(提示:select 专业,sum(奖学金) as 奖学金合计……)(4)从student表和grade表中查询学生的学号、姓名、课程号、成绩;(5)从student表、grade表和course表中查询学生的学号、姓名、课程名、成绩(提示:……from student,grade,course where student.学号=grade.学号 .and. grade.课程号=course.课程号);实验四:查询与视图1、(1)在学生表中查询定位1981年出生的学生记录在命令窗口输入:USE 学生LOCATE ALL FOR YEAR (出生日期)=1981?RECNO(),FOUND(),EOF()CONTINUE?RECNO(),FOUND(),EOF()(2)在学生表中索引查询金融专业学生的姓名在命令窗口输入:USE 学生INDEX ON 专业 TAG 专业索引SEEK”金融”?姓名2、(1)在学生表中统计计算机专业学生奖学金的总和(2)在学生表中统计男生的平均奖学金在命令窗口分别输入:sum奖学金for专业=”计算机”to奖学金总和average奖学金for性别=.t. to平均奖学金3、(1)在VFP中点击文件→新建→查询→新建文件;(2)在添加视图或视图对话框中选择“学生和“成绩”表→添加→在“连接条件”对话框中单击确定;(3)选择“字段”选项卡在“可用字段”列表框中选取“成绩.课程号”并添加到“选定字段”列表框中.单击“函数和表达式”右侧按钮→在“表达式生成器”对话框生成函数中输入“AVG(成绩.成绩)”→单击确定→在“字段”选项卡中添加到“选定字段”列表框中;(4)选择“筛选”选项卡→选定字段名“学生.专业”、条件“=”,并输入实例“计算机”、逻辑“AND”→选定字段“学生.性别”、条件“=”,并输入实例“.T.”;(5)选择“排序依据”选项卡→在“选定字段”列表框中选取“成绩.课程号”并添加到“排序条件”列表框中;(6)选择“分组依据”选项卡→在“选定字段”列表框中选取“成绩.课程号”并添到“分组字段”列表框;(7)在“查询”菜单中选择“查询去向”→在“查询去向”对话框中选择查询结果的输出去向→“浏览”;(8)单击常用工具栏上的“运行”按钮就可以得到查询结果;(9)保存查询,键入查询文件;(10)关闭查询设计器,结束查询设计4、在命令窗口输入:OPEN DATABASE学生成绩SELECT()UAE学生 ALL AS 学生INDEX ON 学号 TAG学号索引SELECT()USE 成绩SEL RELATION TO 学号 INTO 学生BROWSE FIELDS学号,学生.姓名,学生.专业,课程号,成绩5、(1)SELECT*FROM 学生(2)SELECT MAX(奖学金)AS 最高奖学金;MIN(奖学金)AS最低奖学金;AVG(奖学金)AS平均奖学金;FROM学生WHERE专业=“计算机”(3)SELECT专业,SUM(奖学金)AS奖学金合计FROM学生GROUP BY专业(4)SELECT学生.学号,学生.姓名,成绩.课程号,成绩.成绩FROM学生INNER JION成绩ON学生.学号=成绩.成绩.(5)SELECT学生.学号,姓名,成绩.课程名,成绩;FROM学生,成绩,课程;WHERE学生.学号=成绩.学号 AND 成绩.课程号=课时.课程号实验报告学院:专业:年级:姓名:学号:实验室号:计算机号:实验日期:年月日指导教师签字:成绩:报告退发 (订正、重做)实验五:程序设计基础(验证性,4学时)一实验目的1.选择结构程序设计2.循环结构程序设计3.过程和自定义函数的定义与调用二实验内容1.编写一段利用Messagebox()函数的程序,按钮类型为“是”、“否”、“取消”,图标为询问,默认按钮是“取消”,提示信息为“你真的要进行此操作吗?”,当按下“是”时,系统给出“你选择的是“是”;当按下“否”时,系统给出“你选择的是“否”;当按下“取消”时,系统给出“你选择的是“取消””.这些系统给出的信息也用Messagebox()函数实现,只要一个确定按钮,每次按确定后即退出该程序;2.应用循环结构的命令编写一段程序,运行时在VFP主窗口输出如下图形:****************3.IIF()函数的语法为:IIF(逻辑表达式,表达式1,表达式2)功能:如果逻辑表达式的值为真,则返回表达式1的值,否则返回表达式2的值.和以下程序等价的IIF()函数要如何写(提示:用Y=IIF(逻辑表达式,表达式1,表达式2)的形式表达,其中表达式1或表达式2也可以是IIF()函数)?IF X>0Y=1ELSEIF X=0Y=0ELSEY=-1ENDIFENDIF4.编写一个求面积的程序,其中求各种面积(三角形((底*高)/2)、梯形((上底+下底)*高/2)、圆(3.14*半径^2)、正方形(边长*边长)、矩形面积(长*宽))的过程用过程文件保存,通过主程序调用这些过程文件中的过程实现面积的求解;5.理解参数传递中的按值传递和按地址传递的区别:有以下两个主程序和一个外部过程(文件名为SUBPRG):第一个主程序如下(文件名为AA.PRG)CLEARA=”您好!”DO SUBPRG WITH A? A第二个主程序如下(文件名为BB.PRG)CLEARA=”您好!”DO SUBPRG WITH (A) &&与AV.PRG不同之处就是这里的括号)? A外部过程如下(文件名为SUBPRG):PARAMETER X? XX=”谢谢关照”RETURN分别运行上面的主程序,并察看其结果,说说结果为何不同.6.理解变量作用域:运行以下程序并分析结果.CLEARX=10Y=20DO SUB? X , YRETURNPROCEDURE SUBPRIVATE XX=100Y=30? X , YENDPROC7.编写一个求阶乘的自定义函数,并求1!+2!+3!+…+10!的值.三实验环境1.硬件:学生用微机、局域网环境2.软件:Windows 2000中文操作系统、Visual Foxpro 6.0四实验步骤(描述实验的具体操作步骤和方法,内容见后附的手写部分)五实验调试与结果分析(内容见后附的手写材料)六总结(内容见后附的手写材料)实验五:程序设计基础1、在VFP中点击新建程序新建文件在程序1中输入如下程序:ClearX=messagebox(“你真的要进行此操作吗?”,3+32+512)If x=6Messagebox(“你按下的是“是””)ElseIf x=7Messagebox(“你按下的是“否””)ElseMessagebox(“你按下的是“取消””)EndifEndif2、在程序中输入如下程序:ClearSt=”*******”K=4Do while k>=1?space(4-k)+left(st, 2*k-1)K=k-1End do5. 在程序中输入:Procedure pinput“请输入三角形的高度:”to shinput“请输入三角形的底长:”to sds=sd*sh/2?“三角形的面积:”??sReturnEndprocProcedure tinput“请输入梯形的上底:”to tuinput“请输入梯形的下底:”to tlinput“请输入梯形的高度: to ths=(tu+tl)*th/2?“梯形的面积:”??sReturnEndprocProcedure yinput“请输入圆的的半径:”to yrs=3.14*yr^2?“圆的面积:”??sReturnEndprocProcedure zinput“请输入正方形的边长:”to zx s=x*x?“正方形的面积:”??sReturnEndprocProcedure jinput“请输入矩形的长:”to jxinput“请输入矩形的边宽:”to jys=x*y?“矩形的面积:”??sReturnEndproc7、依次计算1!、2!、3!…..10!在程序中输入如下程序:ClearFor i=1 to10?”fac(“+str(1, 2)+”)=”,fac(i) Endforreturnfunction facparame ters nprivate ip=1for i=1 to n p=p*iendforreturn pendfuncs=0t=1for i=1 to 10 t=t*is=s+tendfor?”s=”, sreturn实验报告学院:专业:年级:姓名:学号:实验室号:计算机号:实验日期:年月日指导教师签字:成绩:报告退发 (订正、重做)实验六:表单控件和面向对象程序设计(综合性,6学时)一实验目的1.表单设计器的操作2.事件的编写3.表单向导的使用4.表单及常用控件(文本框、组合框、列表框、页框等等)的设计二实验内容1.(1)新建一个表,表名为:七律长征.dbf,表的字段只有一个:诗词,字段的长度、数据类型自己根据实际内容确定,每条记录的内容为该诗的一句;(注:诗词为:红军不怕远征难,万水千山只等闲.五岭巍峨腾细浪,乌蒙磅礴走泥丸.金沙水拍云崖暖,大渡桥横铁索寒.更喜岷山千里雪,三军过后尽开颜.)(2)新建一个表单,外形如图:Form1的标题为七律长征;label1的标题为“请背诵毛主席的诗《七律长征》”;label2的标题为“忘记时可点击以下按钮将给出提示”;文本框一个,要求首次运行时不能出现任何诗句(提示:采用在Form1的init 事件中编写如下代码的方法加以实现:go bottom↙ skip,这里↙表示按下Enter键);用命令按钮组做四个命令按钮,第一个按钮的标题是“首句”,第二个为“上一句”,第三个为“下一句”,第四个为“末句”;(3)要求运行时点击“首句”按钮则文本框会出现该诗的第一句,点击“上一句”按钮,则文本框显示当前诗句的上一句(如果记录指针指向第一条记录,则画面上要给出提示:“本局是首句”),点击“下一句”按钮,则文本框显示当前诗句的下一句(如果记录指针指向最后一条记录,则画面上要给出提示:“本局是末句”),点击“末句”按钮则文本框会出现该诗的最后一句.表单保存为:七律长征.scx.2.设计如图所示的表单:要求如下:(1)运行时,当按下按钮1时,按钮1的Enabled属性变为.F.,按钮2的Enabled属性变为.T.;反过来,当按下按钮2时,按钮2的Enabled属性变为.F.,按钮1的Enabled属性变为.T..(2)根据对象引用的规则,要采用到如下这些引用:this.enabled,mandx.enabled(x代表1或2),mandx.enabled(x代表1或2)(3)指出容器控件及容器嵌套层次3.通过表单向导,建立一个一对多表单,以查询学生选修的课程和成绩:其中,父表为student.dbf,子表为grade.dbf.4.新建表单cjcx.scx,界面如下图,要求如下:(1)表单Form1的数据源是grade.dbf,表单上有标签、文本框、按钮、表格等控件,表格中共三列,如上图所示;(2)该表单完成按学号的查询,请编写适当代码实现在点击“查询”按钮后,表格Grid1中显示对应查询学号的各门课程的成绩,文本框Text2中显示对应的平均成绩.5.设计一个迎接2008年北京奥运会倒计时的表单界面如下:Form1的标题为“2008北京奥运会倒计时”,运行时居中;Label1的标题为“今天距北京奥运会开幕还有”,字体为宋体,字号为16,加粗;Text1为只读,字号为16,加粗;Label2标题为“天”,字体为宋体,字号为16,加粗.运行时直接将显示距2008北京奥运会开幕所剩的天数.(提示:2008北京奥运会开幕的日期为2008年8月8日,利用两日期相减,可求出这两个日期之间的天数的方法计算,可将该计算过程写在Form1的Init事件中.思考一下:如果将该过程写在Form1的Load事件中行不?)6.设计一个时钟,画面如下:Form1的标题为“日期时间”,运行时居中;Label1的标题为 =ttoc(datetime()) ,注意要有等号(其中TTOC()函数是将日期时间类型的数据转换成字符型的数据的函数);在表单上添加一个时钟控件;要求运行时时钟会按秒变化.(提示:在时钟控件的Timer事件中编写如下过程:bel1.caption=ttoc(datetime()),Timer1控件的Interval属性设为1000.该属性是指定调用计时器事件的间隔,以毫秒为单位,1000即为1秒,正是题目所要求的)7.表单Form1上有一朵花的图像,单击表单的空白处,该图象将移到单击处.请编写相应的事件代码.8.设计如下的表单:从组合框中选择用户,组合框的数据源为account.dbf的“user”字段;输入密码,输入时不能显现出密码,只能用*代替;单击“确定”时,如果密码正确,则弹出“欢迎登录”消息框,否则弹出“口令不正确,请再试一次”消息框,如果口令三次都不正确,则自动退出该表单(每个用户的密码已经事先存放在account.dbf表的password字段中).account.dbf的内容:三实验环境3.硬件:学生用微机、局域网环境4.软件:Windows 2000中文操作系统、Visual Foxpro 6.0四实验步骤(描述实验的具体操作步骤和方法,内容见后附的手写部分)五实验调试与结果分析(内容见后附的手写材料)六总结(内容见后附的手写材料)。

数据库原理及应用实验指导★---实验4_SQL语言——SELECT查询操作[1]

数据库原理及应用实验指导★---实验4_SQL语言——SELECT查询操作[1]

实验4 SQL 语言——SELECT 查询操作1实实验验44 S S Q Q L L 语语言言————S S E E L L E E C C T T 查查询询操操作作实验示例实验示例中要使用包括如下三个表的“教学管理”数据库JXGL :(1)学生表Student ,由学号(Sno)、姓名(Sname)、性别(Ssex)、年龄(Sage)、所在系(Sdept)五个属性组成,记作:Student(Sno,Sname,Ssex,Sage,Sdept),其中主码为Sno 。

(2)课程表Course ,由课程号(Cno)、课程名(Cname)、先修课号(Cpno)、学分(Ccredit)四个属性组成,记作:Course(Cno,Cname,Cpno,Ccredit),其中主码为Cno 。

(3)学生选课SC ,由学号(Sno)、课程号(Cno)、成绩(Grade)三个属性组成,记作:SC(Sno,Cno,Grade),其中主码为(SNO,CNO)。

1、在SQL SERVER 查询分析器或企业管理器(以具有相应操作权限的某用户登录)的SQL 操作窗口中执行如下命令创建数据库。

需要说明的是不同数据库系统其创建数据库的命令或方式有所不同。

CREATE DATABASE JXGL2、刷新数据库目录后,选择新出现的JXGL 数据库,在SQL 操作窗口中,创建Student 、SC 、Course 三表及表记录插入命令如下:Create Table Student( Sno CHAR(5) NOT NULL PRIMARY KEY(Sno),Sname VARCHAR(20),Sage SMALLINT CHECK(Sage>=15 AND Sage<=45),Ssex CHAR(2) DEFAULT '男' CHECK (Ssex='男' OR Ssex='女'),Sdept CHAR(2));Create Table Course( Cno CHAR(2) NOT NULL PRIMARY KEY(Cno),Cname VARCHAR(20),Cpno CHAR(2),Ccredit SMALLINT);Create Table SC( Sno CHAR(5) NOT NULL CONSTRAINT S_F FOREIGN KEY REFERENCES Student(Sno), Cno CHAR(2) NOT NULL,Grade SMALLINT CHECK ((Grade IS NULL) OR (Grade BETWEEN 0 AND 100)),PRIMARY KEY(Sno,Cno),数据库原理与应用实验指导2FOREIGN KEY(Cno) REFERENCES Course(Cno));INSERT INTO Student VALUES('98001','钱横',18,'男','CS');INSERT INTO Student VALUES('98002','王林',19,'女','CS');INSERT INTO Student VALUES('98003','李民',20,'男','IS');INSERT INTO Student VALUES('98004','赵三',16,'女','MA');INSERT INTO Course VALUES('1','数据库系统', '5',4);INSERT INTO Course VALUES('2','数学分析',null ,2);INSERT INTO Course VALUES('3','信息系统导论','1',3);INSERT INTO Course VALUES('4','操作系统原理','6',3);INSERT INTO Course VALUES('5','数据结构','7',4);INSERT INTO Course VALUES('6','数据处理基础',null,4);INSERT INTO Course VALUES('7','C 语言','6',3);INSERT INTO SC VALUES('98001','1',87);INSERT INTO SC VALUES('98001','2',67);INSERT INTO SC VALUES('98001','3',90);INSERT INTO SC VALUES('98002','2',95);INSERT INTO SC VALUES('98002','3',88);[例1] 查考试成绩大于等于90的学生的学号。

实验四SELECT语句的使用

实验四SELECT语句的使用

实验四 SELECT语句的使用实验目的:1、掌握SELECT语句的基本语法。

2、了解SELECT语句中各子句的作用和特点。

3、掌握SELECT语句的统计函数的作用和方法。

4、掌握子查询的用法。

5、掌握连接查询的用法。

实验准备:1、熟悉SELECT语句的基本语法格式。

2、了解SELECT语句的执行方法。

3、明确SELECT语句各子句的区别。

实验任务:内容一:SELECT语句的简单查询一、数据需求分析查询是对存储于Microsoft SQL Server 2000中的数据的请求,通过查询用户可以获得所需要的数据。

查询可以通过执行SELECT语句实现。

二、内容要点分析1、SELECT语句的基本语法格式:SELECT 字段列表[ INTO 新表 ]FROM 数据源[ WHERE 搜索条件 ][ GROUP BY 分组表达式 ][ HAVING 搜索表达式 ][ ORDER BY 排序表达式 [ ASC | DESC ] ]说明:SELECT子句:用于指定输出字段(必选)。

INTO子句:用于将查询结果存储到一个新的数据库表中。

FROM子句:用于指定查询的数据来源(必选)。

WHERE子句:用于指定对记录的查询条件。

GROUP BY子句:对查询到的记录进行分组。

HAVING子句:与GROUP BY子句一起使用,指定对分组后的记录的查询条件。

ORDER BY子句:对查询到的记录进行排序。

2、SELECT子句的用法(1)选取全部字段●除了使用“*”号外,还可在SELECT子句后面依次列出各个字段。

(2)选取部分字段●在SELECT子句后依次列出部分字段,并用英文逗号隔开。

(3)为结果集内的列指定别名●原字段名 AS 字段别名●字段别名 = 原字段名(4)消除结果集中取值重复的行●DISTINCT 字段名(加在有重复值的字段前面)(5)显示表中前面若干条记录●TOP N|TOP N PERCENT 字段列表3、WHERE<查询条件> 的用法(1)使用单一查询条件过滤记录(比较大小)<表达式><比较运算符><表达式>(2)确定查询条件范围列表达式 [NOT]BETWEEN 初始值 AND 终止值●范围运算符BETWEEN…AND…和NOT BETWEEN…AND…查询列值在(或不在)指定范围内的记录。

实验四表数据的简单查询

实验四表数据的简单查询

实验四表数据的简单查询实验学时:1学时实验类型:设计实验要求:必做一、实验目的掌握SELECT语句的基本用法。

掌握计算列的用法。

掌握WHERE子句中各类查询条件的写法。

二、实验内容1、在连接“MySQL”中新建数据库“world”,并将数据库文件world_inno.sql导入到该数据库之中2、查询world数据库的country表中的国名(Name)、洲名(Continent)和地区(Region)。

步骤:点击“新建查询”,输入以下代码,点击执行USE worldSELECT NAME,Continent,Region FROM country;运行结果如图2.1:图2.13、从world数据库的city表中搜索返回前20条的数据。

步骤:点击“新建查询”,输入以下代码,点击执行USE world;SELECT * FROM city LIMIT 0,20;其中,“LIMIT M,N”中的M表示从第M条(不包括M)开始结果如图3.1:图3.14、使用WHERE 子句从world 数据库的country表中检索出所有领土面积超过一百万平方公里的国家名称(Name)、洲名(Continent)以及领土面积(SurfaceArea)。

步骤:点击“新建查询”,输入以下代码,点击执行USE world;SELECT NAME,Continent,SurfaceAreaFROM countryWHERE SurfaceArea > 1000000;结果如图4.1:图4.15、查询在world数据库的country表中Name以字母C开头的国家的洲名Continent,地区Region。

步骤:点击“新建查询”,输入以下代码,点击执行USE world;SELECT Name,Continent,RegionFROM countryWHERE NAME like 'C%';运行结果如图5.1:图5.16、查询world数据库Country表中所有国家的Name和Condinent,并按生日SurfaceArea 从小到大进行排列。

数据库原理实验报告

数据库原理实验报告

计算机与信息学院数据库原理实验报告专业:计算机科学与技术班级:2012级本科班学号:07173姓名:指导教师:2014年06月18 日实验项目列表计算机与信息学院实验报告纸实验一数据库创建与管理一、实验目的与要求1、熟练掌握SSMS中界面方式创建和管理数据库。

2、熟练掌握SSMS查询编辑器T-SQL语句创建和管理数据库。

3、熟练掌握备份和还原数据库。

二、实验内容1、界面方式创建和管理数据库(1)创建数据库(2)修改数据库(3)删除数据库2、利用企业管理器备份和还原数据库(1)备份数据库(2)还原数据库3、T-SQL语句方式创建和管理数据库(1)创建SPJ数据库:在SSMS中“新建查询”,输入以下语句并运行CREATE DATABASE SPJON(NAME=’SPJ_Data’,FELENAME='C:\Program Files\Microsoft SQL Server\MSSQL\data\SPJ_Data.MDF' ,SIZE = 3,MAXSIZE = 10,FILEGROWTH = 10%)LOG ON(NAME = 'SPJ_Log', FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL\data\SPJ_Log.LDF' ,SIZE = 1,FILEGROWTH = 10%)(2)修改SPJ数据库:在查询分析器中输入以下语句并运行ALTER DATABASE SPJMODIFY FILE(NAME='SPJ_Data',SIZE=4,ALTER DATABASE SPJADD FILE(NAME='SPJ_Data_2', FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL\Data\SPJ_Date_2.ndf',SIZE=1,MAXSIZE=10,FILEGROWTH=10%)(3)删除SPJ数据库:DROP DATABASE SPJ4、界面方式创建数据库XSBOOK,写出操作过程。

华东理工大学 数据库 小实验四 查询

华东理工大学  数据库 小实验四 查询
where sno = ‘95002’ and cno = o )
select *
from course
where not exists
( select *
from student
where not exsits(
select *
from sc
where sno=student.sno and cno=o))
where Sname = ‘李勇’)
and Sname <> ‘李勇’
and sbirth<( select sbirth
from student
where sname=’李勇’)
(5)查询所有学生都选修的课程情况。
use Stu_Cou
select cno
from SC
where sno = ‘95001’
UNION
select cno
from SC
where sno = ‘95002’
(2)查询学号为‘95001’的学生选修而学号为‘95002’的学生没有选修的课程号。
use Stu_Cou
where SCZ.Sno=SCX.Sno and
o=o));
4、集合查询
(1)查询学号为‘95001’或‘95002’的学生选修的课程号。
(2)查询选修“操作系统”课的学生学号、姓名。
select sno,sname
from sc,student
where sc.sno=student.sno and cname=’操作系统’
(3)查询每门课程的选修情况,列出课程号、课程名、选修该课学生学号及成绩(外连接)。

实验四 复杂查询

实验四 复杂查询

实验四复杂查询一、实验目的掌握两个表以上的连接查询的应用,包括嵌套查询。

二、实验内容1、同一数据库中的多表查询(1)查询比“林红”年纪大的男同学信息。

(2)查询所以学生的选课信息、包括学号、姓名、课号、课程名、成绩。

(3)查询已选课学生的学号、姓名、课程名、成绩。

(4)查询选修了“C语言程序设计”的学生的学号和姓名。

(5)查询与“张虹”在同一个班级的学生学号、姓名、家庭住址。

(6) 查询其他班级中比“051”班所有学生年龄大的学生的学号、姓名。

(7)(选做)查询选修了全部课程的学生姓名。

(8)(选做)查询至少选修了学生“20110002”选修的全部课程的学生的学号、姓名。

(9) 查询学生的学号、姓名、学习课程名及课程成绩。

(10)查询选修了“高数”课且成绩至少高于选修课程号为“002”课程的学生的学号、课程号、成绩,并按成绩从高到底次序排列。

(11) 查询选修3门以上课程的学生的学号、总成绩(不统计不及格的课程),并要求按总成绩的降序排列出来。

(12) 查询多于3名学生选修的并以3结尾的课程号的平均成绩。

(13) 查询最高分与最低分之差大于5分的学生的学号、姓名、最高分、最低分。

(14)创建一个表student_other,结构同Student,输入若干记录,部分记录和Student 表中的相同。

A.查询同时出现在Student表和student_other表中的记录。

B. 查询Student表和student_other表中的全部记录。

2、多个数据库间的多表查询(选做)创建一个数据库student_info_other,参数自定。

(1)当前数据库为Student_info,将student_info数据库中的表student_other复制到student_info_other中。

(2)查询同时出现在Student表和student_info_other数据库student_other表中的记录。

SQL实验四-数据库的查询和视图

SQL实验四-数据库的查询和视图

学校代码:10128学号:************《数据库原理及应用》实验报告题目:数据库的查询和视图****:**学院:理学院系别:数学系专业:信息与计算科学班级:信计12-2****:**二〇一五年四月一、练习目的1、数据库的查询(1)掌握SELECT语句的基本语法;(2)掌握子查询的表示;(3)掌握连接查询的表示;(4)掌握SELECT语句的GROUP BY子句的作用与使用方法;(5)掌握SELECT语句的ORDER BY子句的作用与使用方法;2、视图的使用(1)熟悉视图的概念和作用;(2)熟悉视图的创建方法;(3)熟悉如何查询和修改视图。

二、练习准备1、数据库的查询(1)了解SELECT语句的基本语法格式;(2)了解SELECT语句的执行方法;(3)了解子查询的表示方法;(4)了解连接查询的表示;(5)了解SELECT语句的GROUP BY子句的作用与使用方法;(6)了解SELECT语句的ORDER BY子句的作用;2、视图的使用(1)了解视图的概念;(2)了解创建视图的方法;(3)了解并掌握对视图的操作。

三、实验程序实验4.1 数据库的查询1、(1)对于实验2给出的数据库结构,查询每个雇员的所有数据. USE YGGLGOSELECT*FROM Employees(2)用SELECT语句查询Employees表中每个雇员的地址和电话. SELECT Address,PhoneNumberFROM Employees(3)查询EmployeeID为000001的雇员的地址和电话.SELECT Address,PhoneNumberFROM EmployeesWHERE EmployeeID='000001'GO(4)查询Employees表中女雇员的地址和电话,使用AS子句将结果中各列的标题分别制定地址和电话. SELECT Address AS地址,PhoneNumber AS电话FROM EmployeesWHERE Sex=0(5)查询Employees表中员工姓名和性别,要求Sex值为1时显示为“男”,为0时显示为“女”. SELECT Name AS姓名,CASEWHEN Sex=1 THEN'男'WHEN Sex=0 THEN'女'END AS性别FROM Employees(6)计算每个员工的实际收入.SELECT EmployeeID,实际收入=InCome-OutComeFROM Salary(7)获得员工总数.SELECT COUNT(*)FROM Employees(8)找出所有姓王的雇员的部门号.SELECT DepartmentIDFROM EmployeesWHERE Name LIKE'王%'(9)找出所有收入在2000~3000之间的员工号码.SELECT EmployeeIDFROM SalaryWHERE InCome BETWEEN 2000 AND 3000(10)使用INTO子句,由表Salary创建“收入在1500以上的员工表”,包括编号和收入. SELECT EmployeeID as编号,InCome as收入INTO收入在以上的员工FROM SalaryWHERE InCome>15002、子查询的使用.(1)查询在财务部工作的雇员的情况.SELECT*FROM EmployeesWHERE DepartmentID=(SELECT DepartmentIDFROM DepartmentsWHERE DepartmentName='财务部')(2)查询财务部年龄不低于研究部雇员年龄的雇员的姓名.SELECT NameFROM EmployeesWHERE DepartmentID IN(SELECT DepartmentIDFROM DepartmentsWHERE DepartmentName='财务部')ANDBirthday!>ALL(SELECT BirthdayFROM EmployeesWHERE DepartmentID IN(SELECT DepartmentIDFROM DepartmentsWHERE DepartmentName='研发部' ))(3)查找比所有财务部的雇员收入都高的雇员的姓名. SELECT NameFROM EmployeesWHERE EmployeeID IN(SELECT EmployeeIDFROM SalaryWHERE InCome>ALL(SELECT InComeFROM SalaryWHERE EmployeeID IN(SELECT EmployeeIDFROM EmployeesWHERE DepartmentID=(SELECT EmployeeIDFROM DepartmentsWHERE DepartmentName='财务部')))))3、连接查询的使用(1)查询每个雇员的情况及其薪水的情况SELECT Employees.*,Salary.*FROM Employees,SalaryWHERE Employees.EmployeeID=Salary.EmployeeID(2)使用内连接的方法查询名字为“王林”的员工所在的部门SELECT DepartmentNameFROM Departments JOIN EmployeesON Departments.DepartmentID=Employees.DepartmentID WHERE ='王林'(3)查询财务部收入在2000以上的雇员姓名及其薪水详情. SELECT Name,InCome,OutComeFROM Employees,Salary,DepartmentsWHERE Employees.EmployeeID=Salary.EmployeeIDAND Employees.DepartmentID=Departments.DepartmentID AND DepartmentName='财务部'AND InCome>20004、聚合函数的使用.(1)求财务部雇员的平均收入.SELECT AVG(InCome)AS'财务部平均收入'FROM SalaryWHERE EmployeeID IN(SELECT EmployeeIDFROM EmployeesWHERE DepartmentID=(SELECT DepartmentIDFROM DepartmentsWHERE DepartmentName='财务部'))(2)财务部雇员的平均实际收入.SELECT AVG(InCome-OutCome)AS'财务部平均实际收入' FROM SalaryWHERE EmployeeID IN(SELECT EmployeeIDFROM EmployeesWHERE DepartmentID=(SELECT DepartmentIDFROM DepartmentsWHERE DepartmentName='财务部'))(3)求财务部雇员的总人数SELECT COUNT(EmployeeID)FROM EmployeesWHERE DepartmentID=(SELECT DepartmentIDFROM DepartmentsWHERE DepartmentName='财务部')5、GROUP BY\ORDER BY子句的使用.(1)Emyees表中的男性和女性的人数SELECT Sex,COUNT(Sex)FROM EmployeesGROUP BY Sex;(2)查找员工数超过2人的部门名称和员工数量.SELECT(Employees.DepartmentID),COUNT(*)AS人数FROM Employees,DepartmentsWHERE Employees.DepartmentID=Department.DepartmentID GROUP BY Employees.DepartmentIDHAVING COUNT(*)>2(3)将各雇员的情况按收入由低到高排列.SELECT Employees.*,Salary.*FROM Employees,SalaryWHERE Employees.EmployeeID=Salary.EmployeeIDORDER BY InCome实验4.2 视图的使用1、创建视图①创建YGGL数据库上的视图DS_VIEW,视图包含Departments表的全部列。

SQL数据库实验四_复杂查询(1)解答

SQL数据库实验四_复杂查询(1)解答

实验四复杂查询(1)解答实验结果1. 查询没有订购商品的且在北京地区的客户编号、客户名称和邮政编码,并按邮政编码降序排序。

SQL语句:SELECT customerNo,customerName,zipFROM CustomerWHERE address LIKE'%北京%'and customerNo NOT IN(SELECT customerNoFROM OrderMaster)ORDER BY zip DESC查询结果:问题:SELECT customerNo,customerName,zipFROM CustomerWHERE address='北京市'AND customerNo not in(select customerNo from OrderMaster)ORDer by zip DESC2.查询订购了“32M DRAM”商品的订单编号、订货数量和订货单价。

SQL语句:SELECT orderNo,quantity,priceFROM OrderDetailWHERE productNo IN(SELECT productNoFROM ProductWHERE productName='32M DRAM')查询结果:3.查询与员工编号E2008005在同一个部门的员工编号、姓名、性别、所属部门。

SQL语句:SELECT employeeNo,employeeName,sex,departmentFROM EmployeeWHERE department IN(SELECT departmentFROM EmployeeWHERE employeeNo='E2008005')查询结果:不包括员工‘E2008005’:SELECT employeeNo,employeeName,sex,departmentFROM EmployeeWHERE department IN(SELECT departmentFROM EmployeeWHERE employeeNo='E2008005')AND employeeNo!='E2008005'4.查询既订购了P2*******商品,又订购了P2*******的商品的客户编号、订单编号和订单总额。

mysql数据库实验答案

mysql数据库实验答案

实验一创建、修改数据库和表结构1、用create建立教学数据库的五个基本表:(1)学生表(学号,姓名,性别,年龄),student((Sno, sname,ssex,sage) ;(2)课程表(课程号,课程名,学分),Course (Cno, Cname, credit) ;(3)选课表(学号,课程号,成绩),SC (Sno,, Cno, grade ) ;(4) 教师表(教师号,姓名,性别,出生年月,系部,职称,地址),T(Tno,Tname,ssex,birthday,dept,title,address) ;(5) 工资表(教师号,基本工资,职务工资,合计),Salary(Tno,jbgz,zwgz,hj);Create Database Student default character set utf8 default COLLATE utf8_bin;Use Student;Create Table Student(SNo c har(20) primary key,SName char(20) ,SSex char(4) default '男',SAge int) ENGINE=InnoDB;Create Table Course(CNo c har(20) primary key,CName char(20) NOT NULL,CRedit f loat) ENGINE=InnoDB;Create Table SC(SNo c har(20) NOT NULL,CNo c har(20) NOT NULL,Grade float,Primary Key(SNo, CNo),Foreign Key(SNo) References Student(SNo) On Delete Cascade,Foreign Key(CNo) References Course(CNo))ENGINE=InnoD B;Create Table T(TNo c har(20) Primary Key,TName char(20) NOT NULL,TSex char(4) default '男',birthday DateTime,dept char(20),title char(20),address char(20))ENGINE=InnoDB;Create Table Salary(TNo c har(20) NOT NULL,jbgz float,zwgz float,hj float,Foreign Key(TNo) References T(TNo) On Delete Cascade)ENGINE=InnoDB;2、用alter修改基本表(1)在已存在的学生表student中增加一个sdept(系)的新的属性列;alter table Student add Dept char(20);(2)将学生表student中sname属性列的数据类型修改为变长字符串varchar(10)。

数据库实验四作业及答案

数据库实验四作业及答案

数据库实验四作业及答案实验4数据查询一、实验目的1.掌握使用Tranact-SQL的SELECT语句进行基本查询的方法。

2.掌握使用SELECT语句进行条件查询的方法。

3.掌握嵌套查询的方法。

4.掌握多表查询的方法。

5.掌握SELECT语句的GROUPBY和ORDERBY子句的作业和使用方法。

6.掌握联合查询的操作方法。

7.掌握数据更新语句INSERTINTO、UPDATE、DELETE的使用方法。

二、实验准备1.了解SELECT语句的基本语法格式和执行方法。

2.了解嵌套查询的表示方法。

3.了解UNION运算符的用法。

4.了解SELECT语句的GROUPBY和ORDERBY子句的作用。

5.了解IN、JOIN等子查询的格式。

6.了解INSERTINTO、UPDATE、DELETE的格式与作用。

三、实验内容及步骤0.创建tudentdb数据库及其相应表,并录入数据。

启动查询分析器,运行下面链接的代码即可。

创建数据库代码1.在tudentdb数据库中,使用下列SQL语句将输出什么?(1)SELECTCOUNT(某)FROMgrade(2)SELECTSUBSTRING(姓名,1,2)FROMtudent_info(3)SELECTUPPER('kelly')(4)SELECTReplicate('kelly',3)(5)SELECTSQRT(分数)FROMgradeWHERE分数>=85(6)SELECT2,3,POWER(2,3)(7)SELECTYEAR(GETDATE()),MONTH(GETDATE()),DAY(GETDATE())2.在tudentdb数据库中使用SELECT语句进行基本查询。

(1)在tudent_info表中,查询每个学生的学号、姓名、出生日期信息。

SELECT某FROMtudent_info(2)查询学号为0002的学生的姓名和家庭住址。

实验四 数据查询——简单查询

实验四  数据查询——简单查询

实验四数据查询——简单查询一、实验目的1.掌握SQL查询语句的基本概念2.掌握SQLServer查询语句的基本语法3.熟练使用SQL的Select语句对单表进行查询4.熟练掌握并运用SQLServer所提供的函数5.熟练使用SQL语句进行连接操作二、实验环境(实验的软件、硬件环境)硬件:PC机软件:SQL2000三、实验说明请复习相关的单表查询及select语句的语法知识点,并完成如下内容。

四、实验内容1.在订单数据库orderDB中,完成如下的查询:(1)查询所有业务部门的员工姓名,职称,薪水(2)查询名字中含有“有限”的客户姓名和所在地(3)查询姓“王”并且姓名的最后一个字为“成”的员工(4)查询住址中含有上海或南昌的女员工,并显示其姓名,所属部门,职称,住址,其中性别用“男”和“女”显示。

(5)查询订单金额高于8000的所有客户编号(6)选取编号界于C0001~C0004的客户编号,客户名称,客户地址(7)找出同一天进入公司服务的员工(8)在订单主表中查询订单金额大于“E2005002”业务员在2008-1-9这天所接的任一张订单的金额”的所有订单信息。

(9)查询既订购了“52倍速光驱”商品,又订购了“17寸显示器”商品的客户编号、订单编号和订单金额。

(10)查找与“陈诗杰”在同一个单位工作的员工姓名、性别、部门和职务。

(11)查询单价高于400元的商品编号、商品名称、订货数量和订货单价。

(12)分别使用左外连接、右外连接、完整外部连接查询单价高于400元的商品编号、商品名称、订货数量和订货单价,并分析比较检索的结果。

(13)查找每个员工的销售记录,要求显示销售员的编号、姓名、性别、商品名称、数量、单价、金额和销售日期,其中性别使用“男”和“女”表示,日期使用yyyy-mm-dd格式显示。

(14)查找在2008年3月中有销售记录的客户编号、名称和订单总额。

(15)使用左外连接查找每个客户的客户编号、名称、订单日期、订货金额,其中订货日期不要显示时间,日期格式为yyyy-mm-dd,按客户编号排序,同一客户再按订单金额降序排序输出。

数据库实验1-7

数据库实验1-7

1《实验一 认识DBMS 》在SQL Server 2005中完成以下操作:(1) 建立SC 数据库,数据库命名:SC_姓名拼音+学号后三位,如SC_xiebing131;(2) 在其中建立Student 表、Course 表和SC 表,表结构如下,自己选择各属性的数据类型;学生关系Student(Sno ,Sname ,Ssex ,Sage ,Sdept)其中Sno 为主码,并且Sname 取值也唯一 课程关系Course(Cno ,Cname ,Cpno ,Ccredit)其中Cno 为主码,并且Cname 取值也唯一选修关系SC(Sno ,Cno ,Grade) 其中Sno 和Cno 不能为空,(Sno, Cno)为主码(3) 参照教材在各表中输入一定的记录,在student 表中输入一条自己的记录;(4) 进行表结构的修改和记录的修改、删除操作;(5) 验证教材P45基本关系具有的6个性质;(6) 分离数据库,保存数据库文件,以后上机要带上。

《实验二数据定义》实验内容:(1) 数据库的定义与删除(2)基本表的创建、修改及删除;(3) 索引的创建和删除;(4) 使用SQL 对数据进行完整性控制(实体完整性、参照完整性);(一)使用命令行方式建立SPJ 数据库(1)用SQL 语言建立SPJ 数据库,数据库命名:SPJ-姓名拼音+学号后三位,如SPJ-liyan112;(2)用SQL 语言在其中建立S 表、P 表、J 表和SPJ 表(要求进行完整性定义),表结构如下;厂家 S (SNO ,SNAME ,STA TUS ,CITY ),其中STA TUS (状态)为整型,其他均为字符型产品 P (PNO ,PNAME ,COLOR ,WEIGHT ),其中WEIGHT (重量)为浮点型,其他均为字符型工程 J (JNO ,JNAME ,CITY ),其中各属性均为字符型供应 SPJ (SNO ,PNO ,JNO ,QTY ),其中QTY (供应量)为整型,其他均为字符型建立数据表的语法格式CREA TE TABLE <表名>(<列名><数据类型>[<列级完整性约束条件> ] [,<列名><数据类型>[<列级完整性约束条件>]] …[,<表级完整性约束条件> ] );(3) 参照教材用SQL 语言分别在4个数据表中输入一定的记录;插入数据的语法格式:INSERTINTO <表名> [(<属性列1>[,<属性列2 >…)]V ALUES (<常量1> [,<常量2>] … )(4) 保存SQL 文件,文件名:SPJ-姓名拼音+学号后三位.sql ,如SPJ-xukai012.sql(二)使用命令行方式建立学生课程数据库(1) 用SQL 语言建立学生课程数据库,数据库命名:SC_学号后四位及姓名,如SC_3112liyan ;(2) 用SQL 语言在学生课程数据库中建立3个表,要求进行完整性定义;学生关系Student(Sno ,Sname ,Ssex ,Sage ,Sdept)其中Sno 不能为空,值是唯一的,并且Sname 取值也唯一,Sage 自定义约束“大于16” 课程关系Course(Cno ,Cname ,Cpno ,Ccredit)其中Cno 不能为空,值是唯一的,并且Cname 取值也唯一教师关系Teacher(Tno ,Tname ,Department ,Email ,Salary) 其中Tno 不能为空,值是唯一的选修关系SC(Sno ,Cno ,Grade) 其中Sno 和Cno 不能为空,(Sno, Cno)为主码,Grade 的数据类型为int(3) 修改数据表:✓ 将SC 表中Grade 的数据类型改为f loat ;✓ 在Student 表中增加一个属性Scome 记录学生的入学时间,其数据类型为DATETIME ;✓ 删除Student 表中新增加Scome 属性;✓ 删除表Teacher 表中的Email 属性;✓ 删除Student 表中对Sname 属性创建的Unique 约束。

数据库实验4表的查询操作(4学时)

数据库实验4表的查询操作(4学时)

1 实验四表的查询操作(4学时)【实验目的】了解SQL 语言的使用,进一步理解关系运算,巩固数据库的基础知识。

【实验要求】掌握利用Select 语句进行各种查询操作:单表查询、多表连接及查询、嵌套查询、集合查询等。

【实验内容】在实验三创建并插入数据的表(Student ,Course ,SC ,Teacher ,TC )的基础上,完成以下操作。

1.对实验步骤中所给示例进行验证。

2.参考所给示例,完成下列各种查询操作。

(1)将教师‘罗莉’的名字改为‘罗莉莉’。

(2)将两个同学(数据自己临时设置,用后即删除)的两门课程的成绩以运行sql 程序文件的形式插入score 表中。

该题用以验证、理解和掌握关系模型的完整性规则;(3)求每门课的平均成绩,并把结果存入average 表(自行设计并创建);(4)将学生“马丽”的年龄改为2424;;(5)将所有学生的zipcode 属性列值填补上;(6)将average 表中的所有课程的平均成绩置零;(7)删除average 表中的课程号为‘表中的课程号为‘c007c007c007’的平均成绩记录;’的平均成绩记录;(8)删除所有average 表中平均成绩记录;(9)建立一个临时学生信息表()建立一个临时学生信息表(tstudent tstudent tstudent)),删除该表中的学号含‘101’的所有学生记录。

(1010)查询全体学生的学号与姓名;)查询全体学生的学号与姓名;(1111)查询全体学生的学号、姓名、所属系;)查询全体学生的学号、姓名、所属系;(1212)查询全体学生的详细记录;)查询全体学生的详细记录;(1313)查询全体学生的姓名及其年龄;)查询全体学生的姓名及其年龄;(1414)查询全体学生的姓名、出生年份;)查询全体学生的姓名、出生年份;(1515)查询所有修过课的学生的学号;)查询所有修过课的学生的学号;(1616)查询“计算机系”班全体学生名单;)查询“计算机系”班全体学生名单;(1717)查询查询所有年龄在)查询查询所有年龄在23岁以下的学生姓名及其年龄;(1818)查询考试成绩有不及格的学生的学号;)查询考试成绩有不及格的学生的学号;(1919)查询年龄在)查询年龄在20至22岁之间的学生姓名、系和年龄;(2020)查询年龄不在)查询年龄不在20至22岁之间的学生姓名、系和年龄;(2121)查询“)查询“计算机系”和“电商系”的学生的姓名;(2222)查询既不是“计)查询既不是“计1111”也不是“计”也不是“计6161”班的学生的姓名和班级信息;”班的学生的姓名和班级信息;(2323)查询学号为“)查询学号为“04262002”的学生的详细情况;(2424)查询学号以“)查询学号以“04262”打头的学生信息;(2525)查询所有姓“张”学生的学号、姓名、性别、年龄;)查询所有姓“张”学生的学号、姓名、性别、年龄;(2626)查询名字中第二个字有“海”字的学生的学号、姓名、性别、年龄;)查询名字中第二个字有“海”字的学生的学号、姓名、性别、年龄;(2727)查询所有不姓“刘”学生的姓名;)查询所有不姓“刘”学生的姓名;(2828)查询课程号以“)查询课程号以“C ”开头的最后两个字母为“”开头的最后两个字母为“050505”的课程号和课程名;”的课程号和课程名;(2929)某些学生选修某门课程后没有参加考试,所以有选修课记录,但没有考试成绩,)某些学生选修某门课程后没有参加考试,所以有选修课记录,但没有考试成绩,试查找缺少考试成绩的学生和相应的课程号;(3030)查找全部有成绩记录的学生学号、课程号;)查找全部有成绩记录的学生学号、课程号;(3131)查找“计算机系”年龄在)查找“计算机系”年龄在22岁以下的学生学号、姓名;(3232)查找选修了“)查找选修了“)查找选修了“C001C001C001”号课程的学生学号及其成绩,查询结果按分数降序排序;”号课程的学生学号及其成绩,查询结果按分数降序排序;(3333))查询全体学生情况,查询全体学生情况,查询结果按所在系升序排列,查询结果按所在系升序排列,查询结果按所在系升序排列,对同一系中的学生按年龄降序对同一系中的学生按年龄降序排列;(3434)查询学生总人数;)查询学生总人数;)查询学生总人数;(3535)查询选修了课程的学生人数;)查询选修了课程的学生人数;)查询选修了课程的学生人数;(3636)在所有课程中查询最高分的学生学号和成绩;)在所有课程中查询最高分的学生学号和成绩;)在所有课程中查询最高分的学生学号和成绩;(3737)查询学习“)查询学习“)查询学习“C001C001C001”课程的学生最高分数;”课程的学生最高分数;”课程的学生最高分数;(3838)计算各个课程号与相应的选课人数;)计算各个课程号与相应的选课人数;)计算各个课程号与相应的选课人数;(3939)查询“计算机系”选修了两门课程以上的学生学号、姓名;)查询“计算机系”选修了两门课程以上的学生学号、姓名;)查询“计算机系”选修了两门课程以上的学生学号、姓名;(4040)自然连接)自然连接student 和score 表;表; (4141)使用自身连接查询每一门课程的间接先行课(即先行课的先行课))使用自身连接查询每一门课程的间接先行课(即先行课的先行课))使用自身连接查询每一门课程的间接先行课(即先行课的先行课)(4242)使用复合条件连接查询选修“)使用复合条件连接查询选修“)使用复合条件连接查询选修“c001c001c001”号课程且成绩在”号课程且成绩在90分以上的所有同学;分以上的所有同学;(4343)使用复合条件连接查询每个学生选修的课程名及其成绩;)使用复合条件连接查询每个学生选修的课程名及其成绩;)使用复合条件连接查询每个学生选修的课程名及其成绩;(4444)查询选修了全部课程的学生;)查询选修了全部课程的学生;)查询选修了全部课程的学生;(4545)查询所有选修了)查询所有选修了C001号课程的学生学号、姓名;号课程的学生学号、姓名;(4646)查询选修了课程)查询选修了课程C001或c007的学生学号、姓名;的学生学号、姓名;(4747)查询“计算机系”的学生及年龄不大于)查询“计算机系”的学生及年龄不大于23岁的学生;岁的学生;(4848)查询既选修了课程)查询既选修了课程C001又选修了课程c007的所有学生学号、姓名;的所有学生学号、姓名;(4949)查询选修了课程名为“数据库原理”的学生的学号、姓名、性别、年龄;)查询选修了课程名为“数据库原理”的学生的学号、姓名、性别、年龄;)查询选修了课程名为“数据库原理”的学生的学号、姓名、性别、年龄;(5050)查询其他班中比“计算机系”所有学生年龄都小的学生名单;)查询其他班中比“计算机系”所有学生年龄都小的学生名单;)查询其他班中比“计算机系”所有学生年龄都小的学生名单;(5151)查询与“夏天”在同一个系学习的学生学号、姓名、性别、年龄;)查询与“夏天”在同一个系学习的学生学号、姓名、性别、年龄;)查询与“夏天”在同一个系学习的学生学号、姓名、性别、年龄;(5252)建立“计算机系”学生的视图)建立“计算机系”学生的视图1;(5353)建立“计算机系”学生的视图)建立“计算机系”学生的视图2,并要求进行修改与插入时,仍须保证该视图只有“计算机系”班学生;有“计算机系”班学生;(54)建立“计算机系”选修了“C001”课程的学生的视图,定义视图名为“v_cs_C001_student1v_cs_C001_student1””; (5555)建立“计算机系”班选修了“)建立“计算机系”班选修了“)建立“计算机系”班选修了“C001C001C001”课程且成绩在”课程且成绩在90分以上的学生的视图,定义视图名为“义视图名为“cs_c001_student2cs_c001_student2cs_c001_student2””; (5656)定义一个反映学生年龄的视图,定义视图名为“)定义一个反映学生年龄的视图,定义视图名为“)定义一个反映学生年龄的视图,定义视图名为“v_birth_student v_birth_student v_birth_student””; (5757)将学生表中所有女生记录定义为一个视图,视图名为“)将学生表中所有女生记录定义为一个视图,视图名为“)将学生表中所有女生记录定义为一个视图,视图名为“v_female_student v_female_student v_female_student””; (5858)将学生的学号及其平均成绩定义为一个视图,视图名为“)将学生的学号及其平均成绩定义为一个视图,视图名为“)将学生的学号及其平均成绩定义为一个视图,视图名为“v_average_student v_average_student v_average_student””; (5959)在“计算机系”学生视图中找出年龄小于)在“计算机系”学生视图中找出年龄小于22岁的学生;岁的学生;(6060)利用视图查询“计算机系”选修了“)利用视图查询“计算机系”选修了“)利用视图查询“计算机系”选修了“C001C001C001”课程的学生;”课程的学生;”课程的学生;(6161)通过()通过()通过(525252)中的“计算机系”视图修改某个学生的名字;)中的“计算机系”视图修改某个学生的名字;)中的“计算机系”视图修改某个学生的名字;(6262)通过()通过()通过(535353)中的“计算机系”视图,插入一个新学生记录。

SQL数据库_实验四_复杂查询(2)解答

SQL数据库_实验四_复杂查询(2)解答
11.查找销售金额最大的客户号、客户名称和总货贷额。
12.查找销售总额少于5000元的销售员编号、姓名和销售额。
13.查找至少订购了3种商品的客户编号、客户名称、商品编号、商品名称、数量和金额,并按客户编号排序输出。
14.查找同时订购了商品编号为“P20070001”和商品编号为“P20070002”的商品的客户编号、客户姓名、商品编号、商品名称和销售数量,按客户编号排序输出。
导入实验三中保存的订单数据库OrderDB.mdf。完成之后,进行以下的实验。写出相对应的SQL语句,并给出查询结果。
1.统计订单主表的订单金额。(用订单明细表中的订单汇总金额更新订单主表相应的订单金额属性)
2.查询订单金额最高的订单编号、客户姓名、销售员名称和相应的订单金额。
3.统计客户号为“C20050001”的客户的客户名、订单数、订货总额和平均订货金额。(表头用中文显示)
WHEREa.employeeNo=b.salerNo
GROUPBYorderSum,salerNo,employeeName
HAVINGorderSum<5000
查询结果:
13.查找至少订购了3种商品的客户编号、客户名称、商品编号、商品名称、数量和金额,并按客户编号排序输出。
SQL语句:
SELECTb.customerNo,customerName,d.productNo,productName,quantity,金额=quantity*price
ANDc.customerNo='C20050001'
GROUPBYcustomerName,orderSum
查询结果:
4.统计每个客户的客户号、客户名、订单数、订货总额和平均订货金额。(表头用中文显示)
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验四-查询
实验四
1.利用“交叉表查询向导”查询每个读者的借书情况和借书次数,行标题为“借书证号”,列标题为“书
号”,按“借书日期”字段记数。

查询对象保存为“借阅明细表”。

2.创建一个名为“法律系借书情况”的查询,查找法律系读者的借书情况,包括借书证号、姓名、部门、
书名和借书日期,并按书名升序排序。

答案如下图:
运行后得到的结果如下图:
3.创建一个名为“按图书查询”的参数查询,根据用户输入的书名查询该书的借阅情况,包括借书证号、
姓名、书名、作者、借书日期和还书日期。

答案如下图:
运行后得到的结果如下图:
4.创建一个名为“价格总计”的查询,统计各出版社图书价格的总和,查询结果中包括出版社出版社和
价格总计两项信息,并按价格总计项降序排序。

答案如下图:
运行后得到的结果如下图:
5.创建一个名为“借书超过60天”的查询,查找借书人的姓名、借书证号、书名、借阅时间等信息。

答案如下图:
运行后得到的结果如下图:
6.创建一个名为“已借出图书”的查询,查找书号、书名和借书日期。

答案如下图:
运行后得到的结果如下图:
7.创建一个名为“查阅部门借书情况”的生成表查询,将“法律系”和“英语系”两个部门的借书情况
(包括借书证号、姓名、部门、书号)保存到一个新表中,新表的名称为“部门借书登记”。

答案如下图:
运行后得到的结果如下图:
8.创建一个名为“添加部门借书情况”的追加查询,将“人事处”读者的借书情况添加到“部门借书登
记”表中。

答案如下图:
运行后得到的结果如下图:
9.创建一个名为“删除部门借书情况”的删除查询,将“英语系”读者的借书情况从“部门借书登记”
表中删除。

答案如下图:
运行后得到的结果如下图:
10.将“读者“表复制一份,复制后的表名为“读者copy”,然后创建一个名为“更改部门”的更新查询,
将“读者copy”表中部门为“人士处”的字段值改为“教务处”。

答案如下图:
运行后得到的结果如下图:。

相关文档
最新文档