第一篇:Visual Foxpro数据库教学方法探讨
Visual Foxpro数据库教学方法探讨
VFP数据库应用基础课程是中等职业学校计算机专业的一门重要基础课程。可以使学生掌握一种较先进的数据库应用知识,进一步学会对数据库的操作能力和用一种数据库语言进行程序设计的方法,培养学生具有利用软件开发环境解决实际问题的能力,为进一步学习其它计算机知识及今后使用或开发计算机应用程序奠定基础。
VFP教学从开始到结束都是都在讲解同一个问题——如何把各种日常管理信息用计算机未进行管理。而这种形式的课程是学生以前从没有接触过的,他们还是带着过去的学习方式来学习VFP数据库程序设计的内容,结果是每节课的学习目标不明确,在头脑中很难建立起“系统开发”的整体概念。致使学生很难掌握数据库领域内的实践动手能力、分析问题解决问题的能力和岗位职业技能。
作者在承担VFP课程的教学任务时,对该课程进行了认真的分析上述问题产生的原因,主要问题还是由于教师在教学过程设计上存在一定的问题,在组织教学过程中没能给学生建立起一个完整的学习目标框架。
如何能让学生只有带着明确的学习目标来完成每一节课的学习,这是教师首先应该考虑的问题。经过认真的分析,作者认为VFP教学中采取以“案例式”为主的课堂教学方式,选取学生熟悉的内容作为课堂以实验用的实例——“学生成绩管理系统”和,进一步提高学生的学习兴趣,降低学习难度,从而提高课堂教学质量,收到良好的教学效果。
所谓案例教学法,就是以对案例的分析解决为主线,通过对案例中的问题进行分析,激发学生的求知欲,调动学生的积极性,使学生自觉主动地学习案例,掌握原理和方法,实行科学的教育思想观念的一种教学方式。它是一种互动式的教学方法,可以实现启发式教学,能够极大地促进学生的学习兴趣,实现真正的教学相长。它更是实现理论联系实际的现实可行的途径。通过案例分析,学生可以获得蕴涵其中的那些已形成的教育原理、教学方法等知识,同时可以提高和发展学生的创造能力以及解决实际问题能力。更重要的是,通过案例教学获得的知识是内化了的知识,是“做中学”,获得自己理解了的能驾驭的知识,不再像传统教学下获得的抽象的、过度概括化的生硬知识,它能立即被用到类似教学实践情境中去解决处理类似的疑难教学问题。
在还没有开始讲解课程内容之前,教师自己创作一个完整的管理系统实例,开始上课时,由教师对系统提出功能需求。等实例演示结束,教师明确指出,刚刚演示的系统,就是VFP将要完成的学习任务。它要完成的是一个完整的信息管理系统。通过对实例的实际操作后,学生们会对使用“ VFP数据库程序设计”开发的信息管理系统产生感性认识,同时也会对VFP课程产生学习的兴趣。将演示的系统逐一进行分解,让学生看清楚整个系统是由哪几部分组成。最后对分析的结果进行归纳总结,便可得出结论:一方面是基础数据的存储,一方面是对基础数据的操作。此时,教师便可以进行正确的引导,阐明VFP课程学习需要从始至终未完成一个小型管理系统的制作。
在VFP课堂教学过程中,以一个学生较熟悉的系统“学生成绩管理系统”为例贯穿在整个教学实施过程中作为教学实例;适当结合其他教学方法来完成每一节课的教学。既把实例中整个“学生成绩管理系统”的分解结果,应用到每一节课的教学中之。在讲解新课之前,首先给学生演示本节课将要制作的实例,让对学习的内容有一个直观的感性认识,然后引入新课内容。
实际上,一个数据库管理系统设计与实现的过程就是不断分解任务的过程。例如,在学生管理系统中,教师可以引导学生通过联系实际不断地提出这样的问题:班级成绩管理需要管理学生的成绩,包括成绩的录入、成绩的修改、成绩的查询、成绩的备份、成绩的删除等功能;另外,班级的人数有变化时也得体现,比如有学生退学了或进了新的同学等,因此还必须有学生人数的增加、查询、修改以及删除等功能;在使用过程中有时需要打印表格的需求,所以还得有打印的功能;如果该系统规定专人负责,还需要规定用户名和登录密码,体现保密性等等。经过这样的分析,可以出来一个基本功能框架。
所有的基本内容讲解之后,留出足够的时间,由教师带领学生一起,按照系统开发的标准步骤,来完成一个“职工信息管理系统”的开发,让学生清晰地学会系统开发的完整过程。
通过这样一种“学习—实践—提高”的过程,让学生理解数据库的基本概念、理论和技术,同时也掌握了一个简单的数据库应用系统从分析、设计到实现的完整开发过程,真正做到学以致用。在VFP教学中采用实例教学,创设情景,激发动机,以实例开发作为教学的切入点,马上引出问题,马上让学生研究问题与分析问题,最终解决问题。这样做,打破了传统教学概念、命令、程序一条线的教学安排,能够提高学生的学习兴趣,进而调动起他们主动学习新知识、探索新方法的积极性,也加深了他们对相关知识点的理解,为今后更加深入的学习打下良好基础,使学生对整个课程的学习进入良心循环的轨道。
本教案以学生较熟悉的“学生选课系统”为贯穿始终的教学实例,以关系数据库理论为指导,通过循序渐进的讲解、演示和实验,让学生理解数据库的基本概念、理论和技术,掌握一个简单的数据库应用系统从分析、设计到实现的完整开发过程,从而实现理论与实践的结合。
以上是作者在VFP课程实际教学中实施改革的具体做法,收到了一定的成效,总体上学生的学习质量有了明显的提高,部分学生已能够独立完成小型应用系统的开发。在今后的教学中,作者还会继续努力,针对不同层次的学生,还需要做更进一步的探索。
参考文献:
第二篇:SQL Server 数据库教学方法实践浅析
SQL Server 数据库教学方法实践浅析
href=“#”> [摘 要]SQL Server数据库课程是计算机专业的基础课程,其教学难度大。若采用原先的教学办法,学生不能有效接受,教师教时也很困难。所以,我们需要采用新的项目组教学方法来教授学生,以期达到预定的教学效果。 [关键词]SQL Server;项目组;实践 [中图分类号]G642 [文献标识码]A [文章编号]1005-6432(2010)31-0163-01 教学方法设计原则 1.1 理论与项目的实践有效地结合起来 数据库的理论较为严谨,学生学习起来的难度很大,而且其用语很专业,让学生感到生涩难懂,教师的教学效果也不甚理想。为使学生在日后的工作中可以自己完成相关的项目系统分析和设计工作,并可以融会贯通,使学生在学校所学的理论知识与数据库的理论知识相结合是构建这一教学目的的基础。让理论的学习在项目实施的过程逐步推进,可以让学生更有质感,对相关的概念与理论也能够有效地结合起来,记忆的效果会很好。不但可以让学生对数据库的学习效果更加的理想,而且对于学生今后在工作中能够理论联系实际也有较大益处。例如我们在讲解某个数据库的具体管理时,就在这当中加入一些数据库的基本知识,这样学生掌握得也会较为牢靠。 1.2 在课程内加入可视化编程语言的内容 在数据库的开发当中,编程语言一般作为系统的前台,但同时也是一个连接数据库时无法回避的问题。以前的教学内容设计的不尽合理,数据库与编程语言的内容没有很好地联系起来,而是相互割裂与分离的。我们尝试将这二者放在一起学习,并在同一个项目中同时学习这二者的内容。例如我们在SQL Server课中所采用的学生管理项目。我们可以让学生在学习可视化编程语言中试着利用自己所学的可视化编程语言来为学生管理项目设计符合自己要求的前台界面,并能与后台的数据库建立起有效的链接。通过这样的教学过程,学生对二者之间内容的掌握可以较为熟稔,学生学习的积极性也会被充分的调动起来。 1.3 以团队形式进行项目开发 学生在初步掌握了SQL Server之后,我们可以考虑让学生以3~5人为一个小组作为研发的团队,相互开展工作配合,让他们自己来研发数据库的应用。这样对于学生之间的相互配合、团结协作能力的提升有一定的促进作用,而且学生能够自己去查询相关的资料来研究,对他们的学习精神也是一种促进。在规定的时间到来后,各小组将研发成果上交。这样较为规范、严谨的研发程序对于学生日后的工作习惯的养成也是一个良好的开端。 1.4 确定科学的核定标准 以往我们考试大部分采用书面的形式。在实施项目教学以后发现如果还是采用书面考试的形式则不能有效地反映出教学的漏洞,所以让学生上交自己的研发作品作为考试的内容。只要学生能够解决问题即可,但必须是自己独立完成的。这样,学生的实际操作能力可以有效地培养出来。数种教学方法的合并使用 2.1 项目教学法 以项目为主体,让教学围绕这个项目而展开。先教授一定的理论知识作为今后学习的基础,随后通过对理论的讲解并结合该项目的具体实际给出正确的结论与方案。学生在练习的初期会充满新鲜感,通过我们的耐心讲解学生方能满足要求并开发出系统。这样就可以做到在知晓理论的基础上去重新理解这个理论并延续这个理论。 2.2 团队合作学习的方法 项目的开发并不是依靠一个人单枪匹马就能够完成的,而是需要一个团队来通力合作完成。我们在教学的过程中,要注重学生的创新与团队合作精神的培养。在教授SQL Server数据库管理系统中,我们让学生组成一个个团队,并以团队的形式来学习和开发管理系统。这样,学生在学习的过程中不但可以养成相互配合的工作习惯还可以印证自己的所学。每个项目组要有一个组长,主要是组织组内的成员探讨问题。团队中的每一个成员都要完成自己所负责的工作内容。在此期间,我们需要主动地去引导学生完成工作。对于学生当中出现的各种情况,我们需要及时地跟进解决。我们可以帮助学生创建符合本项目组的学习计划。对学生的学习情况和项目开发的实际情况有效地掌握。这样对于我们教学目标的实现是极为有力的。 参考文献: [1]王珊.面向21世纪数据库课程教学改革[J].中国大学教学,2006(4).[2]龚沛曾.大学计算机基础课程体系建设与教学改革实践[R].西安:2005首届大学计算机基础课程报告论坛,2005-??11-??15. [摘要]本文结合多媒体手段、课程特点和创新理念,分析了数据库知识领域的教学手段、特点和重要性,并提出了加大实践环节、使用创新理念和情景模式的教学方法,以进行详细探讨。 [关键词]数据库 多媒体 教学方法 创新理念 一、引言 数据库系统原理是一门应用性很强的课程,既有理论也有实践。作为信息系统的核心和基础得到越来越广泛的应用。学好这门知识,对未来发展有着极其重要的作用,但传统的灌输式、填鸭式的教学方法只注重基本概念和语法知识的讲解,忽视学以致用的原则,让学生感到内容杂乱,知识零碎,难以形成体系,既不知道有何作用,更不知道如何去应用,以致失去学习的兴趣,如何使数据库的基础知识、基本技能与现代数据库技术相结合,并真正使学生运用所学的数据库理论知识和技术来解决实际问题,以达到学以致用、提高教学质量的目的,就成了该课程教学的重要任务和教学目标。 二、教学方法的创进 1.运用多媒体辅助教学 计算机和网络技术的发展,为编程语言类课程的教学提供了良好的操作平台,以计算机技术为核心的现代化教学手段被广泛运用在课堂教学中。多媒体教学通过对学习资源的开发,优化了教学过程,最大限度地减少教学时间的无效耗损,增加课堂教学内容的信息量和知识的密度以及能力训练的频度。为此,我们根据教材内容和教学要求精心编制了教学课件,并应用于教学。需要注意的是,在多媒体教学中,教学主体并没有改变。因此,要始终把握好学生在教学过程中的主体地位,并发挥教师的主导作用,而不能以课件为主。此外,由于多媒体教学具有信息量大、呈现快速、表现直观、操作简便等特点,这就容易导致师生依赖荧屏展现,从而忽视了教学的策略、方法,忽视了教学的难点与重点,忽视了学生的感受与反应以及同他们的情感交流。这样,就不容易使学生真正掌握课堂教学的内容。 实践证明,要利用多媒体辅助教学并达到最佳的教学效果,首先就必须树立现代化的教育观,做到以学生为主体、为中心,并培养他们独立获取知识、发现创新知识的能力,把创新能力的培养放在重要的地位。此外,还要利用指导法教学、“启发”式教学来体现“以教师为主导,以学生为主体”的教学原则,从而使教师真正成为学习的组织者和引导者。 2.理论与任务相结合教与学本身就是一个互动的过程,因此,教师应经常了解学生在学习中碰到的困难,并及时反馈到教学中。此外,还应配以适量的练习,使学生举一反三,这样,就能增加他们学好数据库这门课的信心,并激发学习的兴趣。比如,在实践教学环节中实施仿真项目,加大技能培养力度,把仿真项目贯穿于平时的实验课和课程设计中,要求学生3—4人左右一组完成一个比较完整的数据库应用系统的设计与开发,所设计的系统由任课教师、实验指导教师和各组选出的组长进行检查、提问,并分别打分,从而激发各组学生之间的竞争意识和团队意识,促进学生将理论学习与能力培养紧密结合。 3.重视实践环节 数据库课程除了可以在理论教学中借助实际的数据库实例进行解释外,还必须通过实验的手段来实现。从教学角度来讲,理论知识要经过实践检验后,才能使学生真正理解和掌握。在实践教学中,应培养学生自主学习和创新精神,提高学生分析问题,解决问题的能力,提高学生工程设计的能力,使学生系统掌握一种工程设计的方法,为后续课程的学习打下了良好基础。通常采用布置一个大实验,分步完成的做法,使学生对前部分的知识通过实验综合掌握,对下一步可以通过预习等方式了解知识,课堂上老师再把工程设计的方法教给学生,重点要分析如何进行需求分析、概念结构设计和逻辑结构设计。在本门实验课程完成时,不仅使学生掌握了一门知识,也使学生完成了一个综合设计,更使学生系统掌握了一种工程设计的方法。这种教学方式,使学生对知识的掌握实现了二次飞跃,在进行单元实验时,学生通过设计软件把所学的理论知识描述一下,这是第一次飞跃,在进行下一步乃至完成大实验的时候,学生要把前续实验的有关知识进行综合,实现第二次飞跃。 4.采用互动模式 传统“满堂灌”式的教学方法,容易造成课堂气氛沉闷,效果不佳。大学生思维活跃,采用互动式可以提高学生的积极性,活跃他们的思维,达到良好效果。互动式我们是采用两个方面,一个方面是学生可以随时自由提问,对于带普遍性的问题和有典型意义的问题,教师课堂随时回答讲解,但对于个别学生存在的问题、没有普遍性的,课后单独回答,以免影响教学进度。另一方面是课前老师精心设置问题,设置的问题要针对容易出错的知识点,使学生思考后,有茅塞顿开的感悟,否则互动只能使课堂有说有笑,难得到达应有的效果。 5.改革考试方式 在考试方法上,打破传统的期末单独笔试的考试方法,制定合理的考核方案,采用开卷、闭卷、实际操作式等多种考试方法,增加平时考核次数和期末上机测试环节,从只考理论知识,到注重过程考核和综合能力测试,促进学生知识的积累,避免学生考前突击和死记硬背现象。如在数据库原理的考核上,除了原理部分采用常规的考试外,还可对学生的实验环节、课程设计环节进行考核。比如采用常规理论考试占50%,实验成绩占25%,课程设计成绩占25%。采用这种形式考核学生的知识掌握程度和实践能力,能引导和督促学生平时多动手,多锻炼,同时也可提高学生的综合素质。 三、结束语 随着信息技术的发展和教学理念、方法的转变,对于数据库知识领域的教学方法和模式已远远不限于以上内容。教师除了要做到因人而异、因材施教外,还要博览群书、拓宽视野、扩大交流、并充分利用网络信息手段,以努力寻求新的切入点,从而使理论教学和实际应用更好、更紧密地结合起来,并培养出更多适应信息化社会的实用型和复合型人才。 参考文献: [1]李华.数据库教学浅析.计算机教育,2007.32-34.[2]董钢.非计算机专业数据库课程改革.中国期刊网,2009-6-23. 实验一 PowerDesigner 的 CDM 应用 1:实验目的 使用PowerDesinger进行数据库概念模型设计,掌握CDM中的实体、实体属性、实体与实体之间联系的操作方法。2:实验内容 建立一个“实验一练习”命名的Conceptual Data Model(CDM)文件,其中应包括的实体、实体的属性及实体之间的联系。3:实验结果 4.实验心得 初次接触数据库原理实验,相对来说还是比较陌生,但老师讲解还相对比较清楚,并且实验报告写的十分清楚,只是遇到多建立了一个实体而无法删除的问题,通过同学的帮助也解决了,相对来说第一次实验还是比较顺利的。 实验二 PowerDesigner 的 PDM 应用 1.实验目的 用PowerDesinger的工具将CDM生成PDM过程,熟悉PDM工作区,为生成数据库中的物理的表打下基础。完成这个实验后,应该能够了解从CDM到PDM的转换过程,熟悉PowerDesinger的PDM工作区,使用工具选项板进行PDM对象设计。 2.实验内容 从CDM生成PDM,设计结束后,利用PowerDesigner的“生成数据库”功能,产生数据库中各数据对象的定义,再运行MySQL的命令行客户端软件,打开test数据库,运行crebas.sql,同时进行中英文的转换,最后运行show tables命令查看表。 3.实验结果 4.实验心得 经过本次实验,学会了用PowerDesinger的工具将CDM生成PDM过程,并且利用crebas.sql进行中英文的转换,最后利用show tables命令查看表,受益匪浅。 实验 三Navicat for MySQL的使用和SQL语言数据定义语言DDL 1.实验目的 了解Navicat for MySQL的启动,熟悉如何在Navicat for MySQL下配置数据库联接。了解DDL语言的CREATE、DROP、ALTER对表、索引、视图的操作,学会在Navicat for MySQL中用DDL语言进行对表、索引、视图的增加、删除和改动 2.实验内容 1.启动Navicat for MySQL。 2.在MySQL–新建连接中完成连接参数配置,并完成连接测试和保存连接参数。3.查看mysql数据库的help_category表的定义、表中数据与索引、完整性约束等。4.查看mysql数据库的其它数据库对象,如视图、索引、存储过程、函数、触发器。5.在Navicat for MySQL中打开查询,新建查询,运行简单的SQL语句,如select * from help_keyword where help_keyword_id<=3;观察下结果。3.实验结果 4.实验心得 使用navicat for MySQL连接数据库的时候,不能正常连接到数据库,出现“access denied for user’root@’localhost”的错误提示,经过查找发现是MySQL没有正确安装,重装之后就可以正常的访问数据库,在本次实验中也学会了Navicat for MySQL的基础的查询使用以及简单的SQL语句的运行。 实验 四 SQL语言数据定义语言DDL 1:实验目的 本次实验了解SQL语言中DDL语言的CREATE、DROP、ALTER对表、索引、视图的操作,掌握在Navicat for MySQL中用DDL语言进行对表、索引、视图的增加、删除和改动。掌握使用SQL语句增加或删除约束,加深对完整性概念的理解,达到灵活应用的目的。掌握使用SQL语句定义和删除同义词。2:实验原理 在 Navicat for MySQL 中使用 CREATE 命令完成对表、索引、视图、同义词 的创建,使用 DROP 命令完成对表、索引、视图、同义词的删除,使用 ALTER 命 令对表结构进行修改及完整性约束的增加、删除。 3:实验代码及结果 相应SQL语句为: CREATE TABLE NewTable(studentid varchar(10)NOT NULL , name varchar(20)NOT NULL , sex varchar(2)NOT NULL , age integer NOT NULL , Fee decimal(10,2)NULL , address varchar(50)NULL , memo varchar(300)NULL , PRIMARY KEY(studentid)); 截图如下: 3.用Create Table语句建表CourseAa,相应的SQL语句为: CREATE TABLE CourseAa(Aa1 Varchar(20), Aa2 INTEGER, Aa3 decimal(10)); 截图如下: 5.用Create Table语句建表ChooseBb 相应的SQL语句如下: CREATE TABLE ChooseBb(Bb1 VARCHAR(30), Bb2 INTEGER, Bb3 DECIMAL(6)); 6.用Drop Table语句删除表CourseAa,相应的SQL语句如下: Drop table CourdeAa; 7.用Alter Table语句更新表ChooseBb,添加一个属性名Bb4,类型Varchar,长度20,完整性约束设为非空值,缺省值设为字符“系统测试值”,相应的SQL语句如下: ALTER TABLE choosebb ADD Bb4 VARCHAR(30)NOT NULL; 8.用Alter Table语句更新表ChooseBb,添加一个属性名Bb5,类型Varchar, 长度10,完整性约束设为主码。完成后,表ChooseBb的设计如下所示。相应的SQL语句如下: ALTER TABLE choosebb ADD Bb5 VARCHAR(30)PRIMARY KEY; 9.用Create View语句建立一个视图View_Choosebb,生成的视图属性名(View_bb1,View_bb2,view_bb3), 其中View_bb1对应于基表ChooseBb的Bb1、View_bb2对应于基表ChooseBb的Bb4、view_bb3对应于基表ChooseBb的Bb5。完成后,视图View_Choosebb的设计如下所示。 相应的SQL语句如下: CREATE VIEW View_Choosebb AS SELECT Bb4 AS View_bb1,View_bb2 FROM chooseBb;CREATE VIEW View_Choosebb AS SELECT Bb5 AS View_bb3 FROM chooseBb;10.用Drop View语句删除视图View_Choosebb。相应的SQL语句如下: DROP VIEW View_choosebb;11.用Create Index语句对表ChooseBb的Bb2属性建立一个升序索引,索引名Index_bb2。用Create Index语句对表ChooseBb的Bb4属性建立一个降序索引,索引名Index_bb4。相应的SQL语句如下: CREATE INDEX Index_bb2 ON ChooseBb(Bb4 DESC);12.用Drop Index语句删除索引Index_bb2。相应的SQL语句如下: DROP INDEX Index_bb2 ON ChooseBb; 4:实验中遇到的问题及心得体会 1、用Drop Table语句删除表CourseAa的时候,在SQL浏览框中输入语句并运行,发现左边项目栏中还是有CourseAa表的存在,但是确打不开CourseAa表,弄了很长时间,也不知道是什么情况,最后尝试刷新页面之后,发现语句运行正确,CourseAa表成功删除。 2、由于理论课时查询语言之学到了表的查询,到后面实验中涉及视图的建立及查询,也不清楚是怎么回事,而且由于对查询语句的不熟悉,实验过程中进行缓慢,视图的部分是课下看书慢慢写的,没有截图。 通过这次实验,初步了解了SQL语言中DDL语言的CREATE、DROP、ALTER对表、索引、视图的操作,掌握在Navicat for MySQL中用DDL语言进行对表、索引、视图的增加、删除和改动。掌握使用SQL语句增加或删除约束。因为实验过程中对这些语句的不熟悉耽误课很长时间,还需课下多下工夫多看、多写。 实验五 SQL语言数据操纵语言DML 1:实验目的 SQL 语言的数据操纵功能通过 DML(数据维护语言)实现。DML 包括数据查询 和数据更新两种数据操纵语句。其中,数据查询指对数据库中的数据查询、统计、分组、排序等操作;数据更新指数据的插入、更新和删除等数据维护操作。 本次实验了解 DML 语言的 INSERT、UPDATE、DELETE 等数据维护语言,掌握 在 Navicat for MySQL 中用 DML 语言的 INSERT、UPDATE、DELETE 对表进行数据 插入、更新和删除。 2实验内容 在 Navicat for MySQL 中使用 INSERT 语句向表中插入数据。使用 UPDATE 语句更新(修改)表中已有数据。使用 DELETE 语句删除表中数据。 3:实验代码及结果 1、用Create Table语句建立test表,其语句和截图如下所示; CREATE TABLE `NewTable`(`Name` varchar(20)NOT NULL , `Age` integer NULL , `Score` numeric(10,2)NOT NULL , `Address` varchar(60)NULL); 2、继续用Create Table语句建立test_temp表,其语句同1。 3、用INSERT语句对表test_temp,插入如实验报告中的三条记录,其插入语句和截图如下: INSERT INTO test_temp VALUES('郑七',21,'490.50','重邮宿舍11-2-1');INSERT INTO test_temp VALUES('张八',20,'560.00','南福苑3-3-3');INSERT INTO test_temp VALUES('王九',10,'515.00','学生新区19-7-1'); 4、用INSERT INTO…SELECT…FROM语句,将test_temp表中的数据,插入到test中,其语句及其截图如下: INSERT INTO test SELECT * FROM test_temp; 5、用UPDATE语句将test表中年龄小于20的数据,将其成绩更新为原来的成绩加5分,其语句和截图如下: UPDATE test SET Score=Score+5 WHERE Age<=20; 6用UPDATE语句将test表中居住在南福苑所有的学生年龄减少1岁,其语句和截图如下:、UPDATE test SET Age=Age-1 WHERE Address Like '南福苑%'; 7、用DELETE语句将test表中年龄大于等于21 并且成绩大于等于500的学生数据删除,其语句和截图如下: DELETE FROM test WHERE Score<=500 AND Age>=21; 8、用DELETE语句将test表中成绩小于550并且居住在重邮宿舍的学生数据删除,其语句和截图如下: DELETE FROM test WHERE Score<=550 AND Address LIke'重邮宿舍%'; 4实验心得 这次实验从实验原理还是实验操作来说还是相对简单的,但越是对简单的是就越容易犯迷糊,这次件表命名给了我很多启示,以后对细节还是要十分注意的。 实验六 SQL语言数据查询语言DQL 1:实验目的 本次实验了解 SQL 语言的 SELECT 语句对数据的查询,学会在 Navicat for MySQL 中用 SELECT 语句对表中的数据进行简单查询、连接查询、嵌套查询和组 合查询。2:实验原理 在 Navicat for MySQL 中使用 SELECT 语句从表中查询数据、统计数据及对 数据进行分组和排序等操作。3:实验代码及结果 1.用 Create Table 建立 Student 表: 2.用 Create Table 建立 Course 表: 3.用 Create Table 建立 Choose 表: 4.用 INSERT 语句向 Student 表中插入 3 个元组: 5.用 INSERT 语句向 Course 表中插入 3 个元组: 6.用 INSERT 语句向 Choose 表中插入 7 个元组: 7.用 SELECT 语句,查询计算机学院学生的学号和姓名。 8.用 SELECT 语句的 between„and„表示查询条件,查询年龄在 20~23 岁的学 生信息。 9.用 SELECT 语句的 COUNT()聚集函数,统计 Student 表中学生总人数。 10.分别用 SELECT 语句的 max()、min()、sum()、avg()四个聚集函数,计算 Choose 表中 C1 课程的最高分、最低分、总分、平均分。max(): Min(): Sum(); avg(): 11.用 SELECT 语句对空值(NULL)的判断条件,查询 Course 表中先修课称编号为 空值的课程编号和课程名称。 12.用 SELECT 语句的连接查询,查询学生的学号、姓名、选修的课程名及成绩。 13.用 SELECT 的存在量词 EXISTS,查询与“张三”在同一个学院学习的学生信 息。 14.用 SELECT 语句的嵌套查询,查询选修 C1 课程的成绩低于“张三”的学生的 学号和成绩。 15.用 SELECT 语句的组合查询(UNION),查询选修了 C1 课程或者选修了 C3 课程 的学生学号。 16.用 SELECT 语句的组合查询(UNION)与 DISTINCT 短语,查询选修了 C1 课程或 者选修了 C3 课程的学生学号,并取消重复的数据。 4.实验心得 本次实验室相对于前几次来说比较困难的一次,因为语句刚学过,下去也没有及时去练习,对于很多还是比较困难,在本次实验中通过练习,让我了解 SQL 语言的 SELECT 语句对数据的查询,学会在 Navicat forMySQL 中用 SELECT 语句对表中的数据进行简单查询、连接查询、嵌套查询和组合查询。课下时间也会多多练习SQl语句。 实验七 MYSQL应用开发环境的建立 1:实验目的 通过在Windows平台下,搭建Apache Httpd Web服务器,PHP脚本支持,访问MySQL数据库等,学习了解MySQL应用开发环境的建立过程。本次实验通过安装Apache HTTD Server 2.2、PHP 5.3.28,配置httpd.conf和PHP.ini文件,完成MySQL的PHP应用开发环境的建立。2:实验内容 1、按照实验指导安装Apache http Server。成功后,截图如下: 2、配置Apache服务器支持PHP文件解析,截图如下: 3、实验测试成功,截图如下: 3:遇到的问题及解决 配置PHP扩展支持MySQL数据库。用记事本打开php5.3.28之下的php.ini文件,把;extension=php_mysql.dll去掉。只是去掉了extension=php_mysql.dll,而,而没有其前面的分号去掉就保存了文件。 4:实验心得 通过在 Windows平台下,搭建 Apache Httpd Web 服务器,PHP 脚本支持,访问 MySQL 数据库等,我学习了解 了MySQL 应用开发环境的建立过程。学会了安装 Apache HTTD Server 2.2、PHP 5.3.28,配置 httpd.conf和 PHP.ini 文件,完成 MySQL 的 PHP 应用开发环境的建立。 实验八 MySQL的存储过程 1:实验目的 存储过程分为两类:1.系统提供的存储过程;2.用户自定义存储过程。 存储过程具有的优点:1.存储过程允许标准组件式编程;2.存储过程能够实 现较快的执行速度;3.存储过程能够减少网络流量;4.存储过程可被作为一种安 全机制来充分利用。存储过程是可复用的组件!想象一下如果你改变了主机的语 言,这对存储过程不会产生影响,因为它是数据库逻辑而不是应用程序。存储过 程是可以移植的! 本次实验了解 MySQL 存储过程的创建、修改和删除的方法和步骤,掌握在 Navicat for MySQL中对存储过程的进行创建、修改和删除,掌握在MySQL Command Line Client 中调用带参数和不带参数的存储过程。 2:实验内容 1、MySQL Command Line Client中创建存储过程,按照实验指导书创建第一、第二个存储过程及其调用。 2、调用第三、第四个传出参数的存储过程: 3、创建存储过程third_p(),显示表cqupt中的数据,并对其进行调用测试。 4、创建存储过程simpleproc2(),对传入参数进行乘以10的处理,变量定义@x,并对其进行调用测试。5.用Drop Procedure语句删除存储过程first_p。 3:实验结果 4:心得体会 通过此次实验,学会了在MySQL Command Line Client中创建存储过程及其调用,并传递参数对其进行调用测试.实验九MySQL的触发器和SQL语言数据控制语言DCL 1:实验目的 触发器是特定事件出现的时候,自动执行的代码块,类似于存储过程。触发器与存储过程的区别在于:存储过程是由用户或应用程序显式调用的,而触发器是不能被直接调用的,由DBMS自动执行。触发器具有这些功能: 1、允许/限制对表的修改; 2、自动生成派生列,比如自增字段; 3、强制数据一致性; 4、提供审计和日志记录; 5、防止无效的事务处理; 6、启用复杂的业务逻辑。 本次实验了解MySQL触发器的创建、修改和删除的方法和步骤,掌握在Navicat for MySQL中对触发器的进行创建、修改和删除,掌握触发器触发测试的方法。2:实验内容 1、创建触发器audit_student,该触发器对修改student表的时间、用户名记录到日志表中。 2.执行 五、教学过程中 (三)实验内容的第二部分改造简单触发器,增加触发类型判断功能,验证触发器的改造和改造后的触发器触发测试。3.自行编写student表的触发器aduit_student_update,在对student表进行更新操作前触发,触发时,向student_log表写入触发用户、触发时间和触发类型。并对该新建进行触发测试。 4.自行编写student表的触发器aduit_student_delete,在对student表进行删除操作后触发,触发时,向student_log表写入触发用户、触发时间和触发类型。并对该新建进行触发测试。 3:实验结果 ①输入如下语句,建立实验表student,如图所示: create table student(SNO varchar(10),SNAME varchar(30),Sage Int); ②输入如下语句,建立日志表student_log,并查看日志表是否为空,如图所示: create table student_log(who varchar(30),whattimeTIMESTAMP); select * from student_log; ③输入如下语句,在student表上语句触发器,如图所示: use test; Create trigger audit_student Beforeinsert On student For each row Begin Insert into student_log(Who,whattime)Values(current_user,current_timestamp);End; 建立④输入如下语句对触发器进行INSERT触发测试,如图所示: 对student表做一个INSERT操作: Insert into student values('1992150033','吴思远',40); 输入如下语句查看表student_log,检查触发器工作结果,表student_log中数据如图所示: select * from student_log; ①输入如下语句,修改日志表结构,增加一个属性存放触发语句类型。如图所示: alter table student_log add(action varchar(20)); ②修改触发器,记录触发语句类型。选中student表,单击右键,选择设计表,点击触发器选项卡,在定义中对INSERT进行编辑,如图所示: select * from student_log 4:实验心得 本次实验让我了解 MySQL 触发器的创建、修改和删除的方法和步骤,掌握在 Navicat for MySQL 中对触发器进行创建、修改和删除的步骤,掌握了触发器触发测试的方法。 实验十SQL的数据控制通过DCL(数据控制语言)实现 1:实验目的 DCL 通过对数据库用户的授 权和权限回收命令来实现有关数据的存取控制,以保证数据库的安全性 本次实验了解 DCL 语言的 GRANT 和 REVOKE 语句对数据库存取权限的控制,学会在Navicat for MySQL中用GRANT、REVOKE语句对数据库存取权限进行设定。 2:实验内容 1.登录mysql,创建用户jason,密码为abc123,并授权该用户完整访问数据库test。即执行如下DCL语句:GRANT ALL ON test.* TO jason@“%”IDENTIFIED BY “abc123”;2.启动另外一个Navicat for MySQL,在MySQL –新建连接中完成jason连接参数配置 3.对user表进行授予权限操作,并用select insert 进行测试 4.对user表进行收回权限操作,用select insert语句进行测试 3:实验结果 GRANT ALL ON test.* TO jason@“%” IDENTIFIED BY “abc123”;GRANT SELECT on mysql.host to jason; 2、将数据库 mysql 中表 host 的查询权限从用户 jason 回收 3.创建用户jason,密码为abc123,并授权该用户完整访问数据库test。GRANT ALL ON test.* TO jason@“%” IDENTIFIED BY “abc123”; 4.启动另外一个Navicat for MySQL,在MySQL –新建连接中完成jason连接参数配置。为了能查询到相应的数据,我们必须进行授权操作。语句如下: Grant select on mysql.user to jason; 授权后,现在切换到Navicat for MySQL,执行之前窗口中的查询语句: 5、接下来,切换到MySQL的命令行客户端,创建一个简单的表,切换到Navicat for MySQL,新建一个查询: insert into mysql.dcltest(id,name)values(1,'张三丰'); 6、切换到MySQL的命令行客户端,执行如下授权语句,进行INSERT权限的授予: Grant insert on mysql.user to jason; 输入如下查询语句: Select * from mysql.dcltest; 权限授予后,root(数据库超级用户)可以进行权限的回收。 7、切换到Navicat for MySQL,新建一个查询,执行如下插入语句: insert into mysql.dcltest(id,name)values(2,'扫地僧');执行如下权限回收语句: Revoke insert on mysql.dcltest from jason; 新建一个查询,执行如下查询语句: select * from mysql.dcltest; Revoke select on mysql.dcltest from jason; 4:实验心得 通过本次实验,我了解DCL语言的GRANT和REVOKE语句对数据库存取权限的控制,学会在Navicat for MySQL中用GRANT、REVOKE语句对数据库存取权限进行设定。 实验十一MySQL的事务与锁 1:实验目的 事务(Transaction)是MySQL数据库系统中的一个逻辑工作单元,是完成一组数据库操作的程序执行单元;锁(Lock)是MySQL数据库系统中并发控制的常用方法.本次实验了解MySQL事务的设置、提交和回退的方法和步骤,掌握MySQL Command Line Client中如何进行相关操作。了解MySQL的表锁定与锁定解除,掌握MySQL Command Line Client中如何进行相关操作。2:实验内容 启动MySQL的命令行客户端,输入密码mysql(小写);执行 五、教学过程中 (三)实验内容的1部分,学习和验证MySQL的事务;在实验步骤2的基础上,在数据bankrecord的表record中,添加一个元组id为3的张六,初始余额2万;自己写事务完成如下操作:李四向张六转账5千,然后取消该转账;王五向李四转账1万5,然后确认转账;执行 五、教学过程中 (三)实验内容的2部分,学习和验证MySQL的锁;在步骤4的基础上,在数据库bookrecord的表sellrecord中,添加一个元组id为2000的书籍Oracle数据库实用教程库,存为2本;在当前MySQL命令行客户端里面模拟李四购书,另外启动一个MySQL命令行客户端,模拟王五购书;要求使用写锁先锁定后,再修改,因为库存有两本,所以李四和王五都能买到,库存为0,并且两人的名字都出现在buyername 3:实验结果 create database bankrecord character set utf8 collate utf8_general_ci;use bankrecord; create table record(id int,name varchar(20),jine decimal(8,2)); set names gbk; insert into record values(1, '李四',20000);insert into record values(2, '王五',20000);start transaction; update record set jine=jine-10000 where name='李四';select * from record;rollback; select * from record; 1、查看数据库自动提交模式是否打开: 2,按照实验指导先建立数据库、表和向表中插入初始账户记录: 3、完成开始事务,从李四账户转出 1 万元,向王五账户中转入 1 万元,提交确认转账: 4、安实验指导执行语句先建立数据库、表和向表中插入初始书籍记录: 5、在数据库 bankrecord 的表 record 中,添加一个元组id 为 3 的张六,初始余额 2 万,李四向张六转账 5 千,然后取消该转账;王五向李四转账 1 万 5,然后确认转账(语句在图中显示): 6、在数据库 bookrecord 的表 sellrecord 中,添加一个元组id 为 2000 的书籍 Oracle 数据库实用教程库,存为 2 本(相关语句在图中显示): 7、在当前 MySQL 命令行客户端里面模拟李四购书,另外启动一个 MySQL 命令行客户 端,模拟王五购书(语句在图中显示)。 4:实验心得 本次实验了解 MySQL 事务的设置、提交和回退的方法和步骤,掌握 MySQL Command Line Client 中如何进行相关操作。了解 MySQL 的表锁定与锁定解除,掌握 MySQL Command Line Client 中如何进行相关操作。 实验十二MySQL的常用函数MySQL 1:实验目的 本次实验了解 MySQL 常用字符串、日期和时间函数等的使用,掌握 MySQL Command Line Client 中如何进行相关操作。常用函数包括常用字符串、日期和时间函数等各类函数。2:实验内容 启动 MySQL 的命令行客户端,输入密码 mysql(小写);执行 五、教学过程中 (三)实验内容的 1 部分,学习和验证 MySQL 的字符串函数;在实验步骤 2 的基础上,学习如下两个函数并完成题目:定位和位置函数 LOCATE(substr,str),返回字符串 str 中子字符串 substr 的第一次出现位置,如果 str 中不包含 substr,返回 0。 请使用LOCATE函数计算needle在haystackneedlehaystack第一次出现的位置;子字符串函数 SUBSTRING(str,pos,len),从字符串 str 返回一个长度同 len 字符相同的子字符串,起始于位置 pos;请使用 SUBSTRING 函数计算 backspace,从第 2 个字符起,长度为 5 的子字符串;字符串函数的解答脚本和结果请保存,老师会检查;执行 五、教学过程中 (三)实验内容的 2 部分,学习和验证 MySQL 的日期和时间函数;在步骤 4 的基础上,学习如下一个函数并完成题目:周函数 WEEK(date),返回 date 时间包含的星期数;请使用 WEEK 函数计算当前日期包含的星期数。3:实验结果 4:实验心得 通过本次实验掌握了MySQL 常用函数包括常用字符串、日期和时间函数等各类函数,并且学会了MySQL Command Line Client 中如何进行相关操作。 实验7 索引和数据完整性的使用 1、目的与要求 (1)掌握索引的使用方法; (2)掌握数据完整性的实现方法; 2、实验准备 (1)了解索引的作用与分类;(2)掌握索引的创建方法; (3)理解数据的完整性的概念与分类;(4)掌握各种数据完整性的实现方法。 3、实验内容 (1)建立索引 ①使用CREATE INDEX语句创建索引。 对YGGL数据库的Employees表中的DepartmentID列建立索引。在查询分析器中输入如下程序并执行: USE YGGL GO CREATE INDEX depart_ind ON Employees(DepartmentID)GO 在Employees表的Name列和Address列上建立复合索引。CREATE INDEX Ad_ind ON Employees(Name,Address)对Departments表上的DepartmentName列建立唯一非聚集索引。CREATE UNIQUE INEDX Dep_ind ON Departments(DepartmentName)【思考与练习】 a.索引创建完后在对象资源管理器中查看表中的索引。b.了解索引的分类情况 c.使用CREATE INDEX语句能创建主题吗? d.在什么情况下可以看到建立索引的好处? ②使用界面方式创建索引。 使用界面方式在Employees表的PhoneNumber列上创建索引。 启动SQL Server Management Studio,在对象资源管理器中展开数据库YGGL,展开表Employees,右击“索引,选择“新建索引”选项。在新建索引的窗口中填写索引的名称和类型,单击“添加”按钮,在列表框中选择要创建的索引的列,选择完单击“确定”按钮即完成创建工作。【思考与练习】 a.使用界面方式创建一个复合索引。 b.在Employees表的表设计窗口选择Address列,右击选择“索引/键”菜单项,在新窗口中的Address列创建一个唯一的索引。 c.创建一个数据量很大的新表,查看使用索引和不使用索引的区别。 (2)重建索引。 重建表Employees中的所有索引。USE YGGL GO ALTER INDEX ALL ON Employ REBUILD 【思考与练习】重建表Employees中EmployeeID列上的索引。 (3)删除索引。 使用DROP INDEX语句删除表Employees上的索引Depart_ind,计划使用如下SQL语句: DROP INDEX Depart_ind ON Employees 【思考与练习】 a.使用QROP INDEX一次删除Employees表上的多个索引 b使用界面方式删除Department表上的索引。 (4)数据完整性。 ①创建一个表Employees5,只含EmployeesID,Name,Sex和Education列。将Name,设为主键,作为列Name的约束。对EmployeesID列进行UNIQUE约束,并作为表的约束。 CREATE TABLE Employees5(EmployeesID char(6)NOT NULL PRIMARY KEY, Sex tinyint Education char(4), CONSTRAINT UK_id UNIQUE(EmployeesID)) ②删除上例中创建的UNIQUE约束。ALTER TABLE Employees5 DROPCONSTRAINT UK_id GO 【思考与练习】 a.使用T-SQL命令创建一个新表,使用一个复合列作为主键,作为表的约束,并为其命名。b.使用语句为表ALTER TABLEEmployees5添加一个新列Address,并为该列定义UNIQUE约束,并了解如何使用图形向导方式删除主键和UNIOQUE约束。 ③创建新表student,只考虑“号码”和“性别”两列,性别只能包含男或女。CREATE TABLE student(号码char(6)NOT NULL 性别char(2)Employees CHECK(性别 IN(“男”,“女”)) 【思考与练习】 向该表插入数据,“性别”列插入“男”和“女”以外的字符,查看会发生什么情况。 ④创建新表Salary2,结构与Salary相同,但Salary2表不可以OutCome列大于Income列。 CREATE TABLE Salary2(EmployeesID char(6)NOT NULL Income Float NOT NULL, OUTCOME FLOAT NOT NULL, CHECK(INCOME>=OUTCOME))【思考与练习】 a.向表中插入数据,查看OUTCOME值比INCOME值大是会有什么情况。b.创建一个表Employees6,只考虑“学号”和“出生日期”两列,出生日期必须晚于1980年1月1日。 ⑤对YGGL数据库中的Employees表进行修改,为其增加“DepartmentID”字段的CHECK约束。 use YGGL go alter table Employees add constraint depart check(DepartmentID>=1 and DepartmentID<=5)【思考与练习】测试CHECK约束的有效性。 ⑥创建一个规则对象,用以限制输入到该规则所绑定的列中的值只能是该规则中列出的值。 create rule list_rule as @list in('财务部','研发部','人力资源部','销售部')go exec sp_bindrule 'list_rule','Departments.DepartmentName' go 【思考与练习】创建一个规则对象,限制在0~20之间。然后把他绑定知道Employees表的WorkYear字段上。 删除上述建立的规则对象。 ⑦创建一个表Salary3,要求所有Salary3表上EmployeeID列的值都要出现在Salary表中,利用参照完整性约束实现,要求当删除或修改Salary表上的EmployeeID列时,Salary3表中的EmployeeID值也会随之变化 create table Salary3(EmployeeID char(6)not null primary key, InCome float not null, OutCome float(8)not null, foreign key(EmployeeID)references Salary(EmployeeID)on update cascade on delete cascade) 4、实验结果 (1)建立索引 ①【思考与练习】 a.索引创建完后在对象资源管理器中查看表中的索引。 b.了解索引的分类情况 答:索引分为两类:分别是聚集索引和非聚集索引,其中有唯一索引和复合索引。每一个表中只可以有一个聚集索引,但可以有多个非聚集索引。c.使用CREATE INDEX语句能创建主题吗? 不可以 d.在什么情况下可以看到建立索引的好处? 当要在庞大的数据库中寻找自己想要的数据的时候,建立索引是很有好处的,优点如下: 第一:通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。 第二:可以大大加快数据的检索速度,这也是创建索引的最主要的原因。第三:可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。 第四:在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。 ②【思考与练习】 a.使用界面方式创建一个复合索引。 b.在Employees表的表设计窗口选择Address列,右击选择“索引/键”菜单项,在新窗口中的Address列创建一个唯一的索引。 c.创建一个数据量很大的新表,查看使用索引和不使用索引的区别。 (2)重建索引。 【思考与练习】重建表Employees中EmployeeID列上的索引。USE YGGL GO create index employid_ind ON Employees(EmployeeID)GO ALTER INDEX employid_ind ON Employees REBUILD GO (3)删除索引。 【思考与练习】 a.使用QROP INDEX一次删除Employees表上的多个索引 USE YGGL GO DROP INDEX Employees.depart_ind,Employees.Employ_ind GO b使用界面方式删除Department表上的索引。 (4)数据完整性。 ②【思考与练习】 a.使用T-SQL命令创建一个新表,使用一个复合列作为主键,作为表的约束,并为其命名。 USE YGGL GO CREATE TABLE Employ(EmployeeID char(8)NOT NULL, Name char(10)NOT NULL, Sex bit NOT NULL, Education char(5), CONSTRAINT UK_id PRIMARY KEY(EmployeeID,Name,Sex)) b.使用语句为表ALTER TABLEEmployees5添加一个新列Address,并为该列定义UNIQUE 约束。 USE YGGL GO ALTER TABLE Employees5 ADD Address varchar(40)NULL CONSTRAINT USK_id UNIQUE GO C.使用界面方式为一个新表定义主键和UNIQUE约束,并了解如何使用图形向导方式删除主键和UNIQUE约束。 ③【思考与练习】 向该表插入数据,“性别”列插入“男”和“女”以外的字符,查看会发生什么情况。 ④【思考与练习】 a.向表中插入数据,查看OUTCOME值比INCOME值大是会有什么情况。 INSERT 语句与CHECK 约束“CK__Salary2__1A14E395”冲突。该冲突发生于数据库“YGGL”,表“dbo.Salary2”。 语句已终止。 b.创建一个表Employees6,只考虑“学号”和“出生日期”两列,出生日期必须晚于1980年1月1日。USE YGGL GO CREATE TABLE Employees6(学号 char(6)NOT NULL,出生日期 varchar(20)NOT NULL CHECK(出生日期>'1980-1-1')) ⑤【思考与练习】测试CHECK约束的有效性。 insert into Employees6 values('001','1980-1-0') INSERT 语句与CHECK 约束“CK__Employees6__出生日期__1BFD2C07”冲突。该冲突发生于数据库“YGGL”,表 “dbo.Employees6”, column '出生日期'。语句已终止。结果是:上面的记录添加不进去.表现出了check的有效性.⑥【思考与练习】创建一个规则对象,限制在0~20之间。然后把他绑定知道Employees表的WorkYear字段上。USE YGGL GO CREATE RULE Emp_rule AS @Emp like'[0-20]' GO EXEC sp_bindrule 'Emp_rule','Employees.WorkYear' GO 删除上述建立的规则对象。USE YGGL GO EXEC sp_unbindrule 'Employees.WorkYear' DROP RULE Emp_rule GO ⑦a.创建完Salary3表后,初始化该标的数据与salary表相同。删除salary表中一行数据,在查看salary3表的内容,看看会发生什么情况。 B.使用ALTER TABLE语句向salary表中的EmployeeID列上添加一个外键,要求EmployeeIs表中要删除或修改与EmployeeID值有关的行时,检查Salary表中有没有与该EployeeID值相关的记录,如果存在则拒绝更新Emloyees表。C.在对象资源管理器中建立Departments、Employees和Salary三个表之间的参照关系。第三篇:数据库课程教学方法探索论文
第四篇:数据库实验报告
第五篇:数据库实验报告