数据库制作学习教案.pptx
会计学1数据库制作数据库制作(zhzu)第一页,共42页。210.1 10.1 数据库概述数据库概述(i(i sh)sh)数据库 以一定的组织方式将相关的数据组织在一起,存放在计算机外存储器,能为多个用户(yngh)共享,与应用程序彼此独立的一组数据的集合。Visual Basic支持多种类型的数据库,如Access数据库、FoxPro数据库、Microsoft Excel、SQL Server和Oracle等。本章(bn zhn)目录第1页/共42页第二页,共42页。310.1.110.1.1关系关系(gun x)(gun x)型型数据库模型数据库模型 关系型数据库模型将数据用表的集合来表示。通过(tnggu)建立简单表之间的关系来定义结构,而不是根据数据的物理存储方式建立数据中的关系。不管表在数据库文件中的物理存储方式如何,都可以把它看作一组行和列。数据库表本章(bn zhn)目录第2页/共42页第三页,共42页。4关系关系(gun x)(gun x)型数据型数据库库 表是有关信息的逻辑(lu j)组,行被称为记录,列则被称为字段。主键记录字段本章(bn zhn)目录第3页/共42页第四页,共42页。510.1.2 使用使用(shyng)SQL查询数据库查询数据库结构化查询语言(yyn)(Structure Query Language,SQL)是操作关系数据库的标准语言(yyn)。通过SQL命令,可以从数据库的多个表中获取数据,也可对数据进行更新操作。SQL的主要语句:语语 句句.分类分类描描 述述SELECT数据查询数据查询查找满足特定条件的记录查找满足特定条件的记录DELETE数据操作数据操作从数据表中删除记录从数据表中删除记录INSERT数据操作数据操作向表中插入一条记录向表中插入一条记录UPDATE数据操作数据操作用来改变特定记录和字段的值用来改变特定记录和字段的值本章(bn zhn)目录第4页/共42页第五页,共42页。6SELECT语句语句(yj)SELECT语句的基本语法形式 SELECT 目标表达式列表 FROM 表名 WHERE 查询条件 GROUP BY 分组字段 HAVING 分组条件 ORDER BY 排序关键字段 ASC|DESC 它包含4部分,其中SELECT和FROM子句是必须的,通过使用SELECT语句返回一个(y)记录集。例 在学生基本情况表中查询物理系的学生情况:SELECT*FROM 基本情况 WHERE专业=物理本章(bn zhn)目录第5页/共42页第六页,共42页。7SELECTSELECT语句语句(yj)-(yj)-输输出表达式出表达式目标表达式为查询结果要显示的字段清单(字段间用逗号分开)。数据的显示顺序由字段清单的顺序决定。可用星号*代表所有(suyu)字段;可用AS短语指定字段别名;可通过构造表达式对原始数据进行复杂的运算处理,产生查询结果。例如,根据出生年月计算每个学生的年龄SELECT 姓名,(Year(Date()-Year(出生年月)AS 年龄 FROM 基本情况 本章(bn zhn)目录第6页/共42页第七页,共42页。8SELECTSELECT语句语句-查询查询(chxn)(chxn)条件条件WHERE子句用于限制记录的选择例如,查询1985-01-01到1986-12-31之间出生的学生:SELECT*FROM 基本情况 WHERE 出生年月 BETWEEN#1985-01-01#AND#1986-12-31#要枚举出若干项进行查询,使用运算符IN例如,查询物理系和数学(shxu)系的学生数据:SELECT*FROM 基本情况 WHERE 专业 IN(物理,数学(shxu)等价于:SELECT*FROM 基本情况 WHERE专业=物理 OR 专业=数学(shxu)本章(bn zhn)目录第7页/共42页第八页,共42页。9SELECTSELECT语句语句-合计合计(hj)(hj)函数函数合计函数(hnsh)用于对记录集进行统计返回指定字段中的最小值MIN返回指定字段中的最大值MAX返回特定字段中所有值的总和SUM返回选定记录的个数COUNT获得特定字段中的值的平均数AVG描 述合计函数例如,统计物理系学生的人数(rn sh):SELECT COUNT(*)AS 学生人数(rn sh)FROM 基本情况 WHERE专业=“物理”COUNT(*)在统计时包含值为空值的记录COUNT(表达式)统计时忽略表达式值为空值的记录本章目录第8页/共42页第九页,共42页。10SELECTSELECT语句语句(yj)-(yj)-分组分组GROUP BY子句将指定字段列表中有相同值的记录合并成一条记录。例如,计算每个学生各门课程(kchng)平均分:SELECT 学号,AVG(成绩)AS 平均分FROM 成绩表 GROUP BY 学号要对分组后的数据进行过滤,可在GROUP BY子句后结合HAVING子句在分组中选择。例如,查询平均分在80分以上的学生:SELECT 学号,AVG(成绩)AS 平均分FROM 成绩表 GROUP BY 学号HAVING AVG(成绩)=80 本章(bn zhn)目录第9页/共42页第十页,共42页。11SELECTSELECT语句语句(yj)-(yj)-排排序序ORDER BY子句决定了查询结果的排列顺序在ORDER BY子句中,可以(ky)指定一个或多个字段作为排序关键字,ASC选项代表升序,DESC代表降序。本章(bn zhn)目录第10页/共42页第十一页,共42页。12SELECTSELECT语句语句(yj)(yj)图解图解本章(bn zhn)目录第11页/共42页第十二页,共42页。13SELECTSELECT语句语句(yj)-(yj)-多多表连接表连接若查询的数据分布在多个表中,则必须建立连接查询:SELECT目标表达式列表 FROM 表1,表2 WHERE 表1.字段=表2.字段例如,学生成绩表中只有学号,如何在查看(chkn)学生成绩的同时能够直观地看到学生姓名?这就要在两表之间建立连接。SQL语句如下:SELECT基本情况.姓名,成绩表.*FROM 基本情况,成绩表 WHERE成绩表.学号=基本情况.学号 本章(bn zhn)目录第12页/共42页第十三页,共42页。1410.2 VB数据库访问数据库访问(fngwn)10.2.1 ADO数据控件使用基础 数据库应用程序引例例10.1 设计一个窗体,用DataGrid控件显示Student.mdb数据库中“基本(jbn)情况”表的内容。本章(bn zhn)目录第13页/共42页第十四页,共42页。15ADO数据数据(shj)控件使控件使用用 VB采用ADO(ActiveX Data Objects)数据(shj)访问技术,编写本程序,需要完成以下工作:在窗体上添加ADO数据(shj)控件 使用ADO连接对象建立与数据(shj)提供者之间的连接 使用ADO命令对象操作数据(shj)源,从数据(shj)源中产生记录集并存放在内存中 建立记录集与数据(shj)绑定控件的关联,在窗体上显示数据(shj)。本章(bn zhn)目录第14页/共42页第十五页,共42页。16数据源连接数据源连接(linji)(linji)设置操作设置操作 右单击ADO控件,选择快捷菜单(ci dn)ADODC属性命令,打开 ADO控件属性页窗单击连接数据源的方式本章(bn zhn)目录第15页/共42页第十六页,共42页。17选择选择(xunz)(xunz)提供程序提供程序选择提供(tgng)程序 本章(bn zhn)目录第16页/共42页第十七页,共42页。18指定指定(zhdng)(zhdng)访问的数访问的数据库据库指定要访问(fngwn)的数据库文件 本章(bn zhn)目录第17页/共42页第十八页,共42页。19连接连接(linji)(linji)对象重要对象重要属性属性连接对象最重要的属性是ConnectionString,它是一个字符串,包含了用于与数据源建立连接的相关信息。典型的 ConnectionString 属性值如下:Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Student.mdbProvide,指定(zhdng)连接提供程序的名称;Data Source,用于指定(zhdng)要连接的数据源文件。本章(bn zhn)目录第18页/共42页第十九页,共42页。20 VB VB数据库访问数据库访问(fngwn)(fngwn)过程过程 本章(bn zhn)目录第19页/共42页第二十页,共42页。21 数据数据(shj)(shj)访问过程访问过程 应用程序通过连接对象与数据源建立连接(不同类型(lixng)的数据库使用各自的连接提供程序)命令对象发出SQL命令从数据源中获取数据 数据集对象用来保存所查询到的数据记录 应用程序对记录集进行操作 记录集表示内存中来自基本表或命令执行结果的集合,也由记录(行)和字段(列)构成,可以把它当作一个数据表来进行操作 本章(bn zhn)目录第20页/共42页第二十一页,共42页。2210.2.2 数据数据(shj)绑定绑定 什么是数据绑定?数据绑定是一个过程,即在运行时自动为与记录集中的元素关联(gunlin)的控件设置属性。以便通过控件显示数据集中的数据。本章(bn zhn)目录第21页/共42页第二十二页,共42页。23数据数据(shj)绑定绑定 Windows 窗体有简单(jindn)数据绑定和复杂数据绑定简单(jindn)数据绑定简单(jindn)数据绑定就是将控件绑定到单个数据字段。每个控件仅显示数据集中的一个字段值。最常用的简单(jindn)数据绑定是将数据绑定到文本框和标签。在设计或运行时设置控件属性建立绑定:DataSource:指定ADO数据控件DataField:设置记录集中有效的字段 本章(bn zhn)目录第22页/共42页第二十三页,共42页。24简单简单(jindn)数据绑定数据绑定 例10.2 数据(shj)绑定的操作过程 界面设计 建立(jinl)连接和产生记录集 设置绑定属性 本章目录第23页/共42页第二十四页,共42页。25复杂复杂(fz)数据绑定数据绑定 复杂数据绑定允许将多个数据字段绑定到一个控件,同时显示(xinsh)记录源中的多行或多列。支持复杂数据绑定的常用控件:DataGrid 数据网格 MSHFlexGrid 数据网格 DataList 数据列表框 DataCombo 数据组合框本章(bn zhn)目录第24页/共42页第二十五页,共42页。26复杂复杂(fz)数据绑定数据绑定 例10.3复杂(fz)数据绑定的操作过程 界面设计 建立(jinl)连接和产生记录集 数据绑定 本例DataGrid控件要绑定不同的表,故需要通过代码设置控件的DataSource 属性。程序代码 Private Sub Command1_Click()Adodc1.RecordSource=基本情况 Adodc1.RefreshEnd SubPrivate Sub Command2_Click()Adodc1.RecordSource=成绩表 Adodc1.RefreshEnd Sub本章目录第25页/共42页第二十六页,共42页。27复杂复杂(fz)数据绑定数据绑定 例10.4使用SQL语句(yj)选择数据表部分数据构成记录集。在网格上绑定部分字段,需要对数据网格布局进行编辑。本章(bn zhn)目录第26页/共42页第二十七页,共42页。2810.3 10.3 记录集对象记录集对象(duxing)(duxing)10.3.1 浏览浏览(li ln)记录集记录集1.AbsoloutPostion属性(shxng)返回当前记录指针值,从1到Recordset对象所含记录数。2.BOF和EOF的属性(shxng)BOF判定记录指针是否在首记录之前,EOF判定记录指针是否在末记录之后。如果BOF和EOF的属性(shxng)值都为True,则记录集为空。本章目录第27页/共42页第二十八页,共42页。293.RecordCount属性对Recordset对象中的记录(jl)计数,该属性为只读属性。4.Find方法在Recordset对象中查找与指定条件相符的一条记录(jl),并使之成为当前记录(jl)。如果找不到,则记录(jl)指针指在记录(jl)集末尾。Recordset.Find 搜索条件,位移,搜索方向,开始位置本章(bn zhn)目录第28页/共42页第二十九页,共42页。305.Move方法组Move方法可代替对数据控件对象的4个箭头按钮的操作(cozu)遍历整个记录集。(1)MoveFirst方法移至第1条记录。(2)MoveLast方法移至最后一条记录。(3)MoveNext方法移至下一条记录。(4)MovePrevious方法移至上一条记录。(5)Move n 方法向前或向后移n条记录。例10.5用命令按钮代替数据控件对象的4个箭头按钮的功能,使用Find方法查找记录本章(bn zhn)目录第29页/共42页第三十页,共42页。31MoveNext MoveLastMoveFirstMovePreviousAdodc1.Recordset.Find 学号=500011 计算机丁保华500011物理李明 500201数学庄前500102专业姓名学号EOFBOF记录集属性方法记录集属性方法(fngf)小结小结本章(bn zhn)目录第30页/共42页第三十一页,共42页。3210.3.2 10.3.2 记录集的编辑记录集的编辑(binj)(binj)1数据编辑方法 记录集中数据的增、删、改涉及到4个方法:AddNew方法 在记录集中增加入一个新行Delete方法 删除记录集中的当前记录Update方法 确定修改(xigi)并保存到数据源中CancelUpdate方法 取消未调用Update方法前对记录所做的所有修改(xigi)本章(bn zhn)目录第31页/共42页第三十二页,共42页。33增加增加(zngji)新记录新记录 2增加新记录(1)调用AddNew方法增加一条空记录(2)给新记录各字段赋值(可以通过绑定控件直接输入,或使用程序代码给字段赋值,格式为:Recordset.Fields(字段名)=值(3)调用Update方法,确定(qudng)所做的添加,将缓冲区内的数据写入数据库 本章(bn zhn)目录第32页/共42页第三十三页,共42页。34删除删除(shnch)记录记录 3.删除记录(1)定位被删除的记录使之成为当前记录(2)调用Delete方法(3)移动记录指针注意:使用Delete方法当前记录立即删除,不加任何的警告或者提示。删除一条记录后,绑定控件仍旧显示(xinsh)该记录的内容。因此,必须移动记录指针刷新绑定控件。本章(bn zhn)目录第33页/共42页第三十四页,共42页。35修改修改(xigi)记录记录 4.修改记录当改变数据(shj)项的的内容时,ADO自动进入编辑状态,在对数据(shj)编辑后,只要改变记录集的指针或调用Update方法,即可确定所做的修改。例11.6在例10.5的基础上加入“新增”、“删除”、“更新”、“放弃”和“结束”5个按钮,通过对按钮的编程建立增、删、改功能 本章(bn zhn)目录第34页/共42页第三十五页,共42页。36计算机丁保华500011物理李明 500201数学庄前500102专业姓名学号Adodc1.Recordset.AddNew 增加(zngji)记录数据库UpData填入新数据(shj)编辑记录删除记录 给各字段赋值 调用(dioyng)Delete方法 调用(dioyng)Update 方法 移动记录指针 计算机丁保华500011物理李明500201数学庄前500102专业姓名学号数据修改小结数据修改小结本章目录第35页/共42页第三十六页,共42页。3710.3.3 查询查询(chxn)与统与统计计 通过SQL语句从数据源中获取信息,查询条件由Select语句的Where短语构成,使用And与Or运算符组合(zh)出复杂的查询条件。模糊查询使用运算符Like,百分号%代替任意个不确定的内容,用下划线_代替一个不确定的内容。例如,姓名 Like 张%将查询所有张姓的人员例10.7 根据输入的专业名称,在网格内显示Student.mdb数据库中该专业所有学生信息 本章(bn zhn)目录第36页/共42页第三十七页,共42页。3810.3.3 查询查询(chxn)与统与统计计 例10.8使用数据列表框或数据组合框提供专业名称,实现查询例10.9使用SQL的函数和分组功能(gngnng),统计各专业的人数、年龄分布。本章(bn zhn)目录第37页/共42页第三十八页,共42页。3910.3.4 BLOB数据处理数据处理 二进制大型对象(Binary Large Object,BLOB)是指任何需要存入数据库的随机大块字节流数据,例如图形或声音文件。数据库中存放BLOB的字段必须是二进制类型(lixng)(在Access中为OLE对象),在ADO中如何处理BLOB类型(lixng)的数据,把图形作为数据库的一个字段值存放在数据库,并能显示图形数据?本章(bn zhn)目录第38页/共42页第三十九页,共42页。40BLOB数据处理数据处理 AppendChunk方法将BLOB数据写入数据库,语法格式:ADO对象.Recordset.Fields(字段).AppendChunk Data用二进制访问方式打开BLOB数据文件定义一个与文件长度相同大小的字节型数组将文件保存到数组使用ADO对象的AppendChunk方法写入数据库 例10.10选择指定图形文件将数据写入到数据库,在浏览(li ln)记录时显示照片。本章(bn zhn)目录第39页/共42页第四十页,共42页。4110.4 10.4 综综 合合 应应 用用例10.11 设计一个(y)多媒体信息管理系统,要求能将多媒体数据保存在数据库,具有记录的增加、删除、统计和多媒体信息重现等功能。例10.12 设计一个(y)飞行航班信息查询系统,要求具有记录的增加、编辑、删除、查询等功能本章(bn zhn)目录第40页/共42页第四十一页,共42页。42思考题思考题1.什么是关系型数据库?2.简述SQL中常用的Select 语句的基本格式和用法。3.简述使用ADO数据控件访问数据库的步骤。4.什么是数据绑定?怎样实现数据绑定?5.在ADO中如何用代码实现数据连接,创建一个记录集对象?6在ADO中如何用代码实现记录指针(zhzhn)的移动?7.如何实现对记录集的增、删、改功能?8.如果要显示数据表内的照片,可使用哪些控件?本章(bn zhn)目录第41页/共42页第四十二页,共42页。