1、数据库应用江西财经大学数据库应用精品课程组2011年Commentsarewelcome!教材和参考书目教材:黎升洪:Access数据库应用与VBA编程M.北京:铁道出版社,2011.参考书目:黎升洪,杨波,沈波.VisualFoxPro面向对象程序设计教程 第二版M.北京:科学出版社,2007.2万常选,凌传繁,曾雅琳.数据库应用.北京:中国商业出版社.教材和参考书目成绩评定方法平时成绩占总评10%实验成绩占总评30%期末占总评60%。相关网站与搜索资料搜索:使用中“Access”和“VBA”为关键字第一章 数据库系统概论数据库技术数据模型关系数据库数据库系统应用模式本章概要数据库系统的功能
2、关系数据库的核心概念(主、外键)数据库模式的概念关系数据库的概念建模(E-R模型)关系操作关系完整性约束(实体完整性、参照完整性)1.1 数据库技术信息与数据数据处理数据库系统1.1.1 信息与数据数据数据:是记录现实世界中各种信息并可以识别的物理符号,是信息的载体,是信息的具体表现形式。数据含义的广义性:字符(文字和符号)、图表(图形、图像和表格)及声音等。信息与数据例如:“一匹马”这个信息,我们可以表示为数据 1或者数据有两方面的特征:数据的形式(符号)。(语法)(“1”)数据的内容(含义)。(语义)(“一匹马”)1.1.2 数据处理(1)计算机四大应用数据处理:工资系统、人口管理、学籍管
3、理等等,占计算机应用的95%。科学计算:有限元分析、建筑结构力学计算等。过程控制:炉窑自动温度控制等。辅助设计:家装CAD、CIMS(计算机集成制造系统)等等。1.1.2 数据处理(2)数据处理数据处理实际上是指利用计算机对各种形式的数据进行一系列的存储、加工、计算、分类、检索、传输等处理。1.1.2 数据处理(3)主要技术:数据库技术数据库技术:关系数据库关系数据库:多种类型数据库企业(大型)级:DB2(IBM)、ORACLE(ORACLE)工作组级:SQLSERVER(MS)、MySQL个人(桌面)级:Access、VFoxPro、SQLite31.1.3 数据库系统数据库的概念数据库的发
4、展数据库的特征数据库的构成1.数据库的概念(1)数据库(Database或DataBase,简称DB)是存放在外存上并通过数据库管理系统(DatabaseManagementSystem,简称DBMS)来存取和访问、管理的数据集中地。DB文件1010101010101010101.数据库的概念(2)DBS=DB+DBMS+DBADBSDB文件DBMS1.数据库的概念(3)DB:以一定的组织形式存放在计算机存储介质上的相互关联的数据的集合。DBMS:DBS的核心。为数据库的建立、使用、维护的软件。DBMS提供用户对DB进行操作的各种命令:(DB的建立、记录的输入、修改、检索、显示、删除和统计等)
5、DBA:数据库管理员数据库管理员(Administrator)数据库角色目标:关系数据库管理员所必须具备的基础知识。2.数据库的发展数据库系统(1)时间:20世纪60年代后期背景:计算机应用于社会各个领域特点:数据共享性高;数据冗余度小数据与程序的独立性高2.数据库的发展数据库系统(2)DBMSDB应用程序1应用程序2应用程序n3.数据库的特征数据结构化实现数据共享减少数据冗余度数据独立性统一的数据安全保护4.数据库的构成数据库:核心和管理对象物理存储设备:大容量的存储器数据库软件:核心是数据库管理系统(DBMS)1.2 数据模型(1)人类思维的方式抽象:忽略不必要的细节、突出主要的问题,建立
6、易于理解的模型来描述。分治:将大、复杂的问题分解为小、简单的问题,分而制之。通过组合来解决问题。数据模型是数据库系统中用于提供信息表示和操作手段的形式构架(模型)。1.2 数据模型(2)二种数据模型概念模型概念模型:它用来描述某一特定范围内人们所关心的信息结构。面向人,按用户的观点来对数据和信息建模,主要用于数据库设计。不涉及信息在计算机中如何表示,独立于计算机实现之外的模型,如实体联系(E-R)模型。1.2 数据模型(3)基本数据模型数据模型:直接面向计算机的,是按计算机系统的观点对数据进行建模,主要用于DBMS的实现。基本数据模型有网状模型、层次模型和关系模型。1.2 数据模型(4)数据抽
7、象过程1.2.1 数据模型的三要素数据结构数据操作数据的约束条件1.2.1 数据模型的三要素数据结构数据结构数据结构是所研究对象和对象具有的特性、对象间的联系的集合,它是对数据静态特性的描述。这些对象是数据库的组成部分。如关系模型中的域、属性、关系等。在数据库系统中,通常按照数据结构的类型来命名数据模型,如层次结构、网状结构和关系结构的模型分别命名为层次模型、网状模型和关系模型。1.2.1 数据模型的三要素数据操作数据操作数据操作是指对数据库中各种对象(型)的实例(值)允许执行的操作的集合,包括操作及有关的操作规则。通常对数据库的操作有检索和更新(包括插入、删除和修改)两大类,这些操作反映了数
8、据的动态特性,因为现实世界中的实体及实体间的联系是在不断变化的,数据模型应能反映出这种变化。1.2.1 数据模型的三要素数据的约束条件数据的约束条件数据的约束条件是完整性规则的集合。完整性规则是指给定的数据模型中数据及其联系必须满足给定的要求。1.2.2 概念模型与实体-联系方法信息世界中的基本概念概念模型表示方法信息世界中的基本概念实体(Entity)实体集(EntitySet)实体型(EntityType)属性(Attribute)关键字(Key)域(Domain)联系(Relationship)联系的三种类型1)实体(Entity)客观存在并可相互区别的事物称为实体实体。实体可以是具体的
9、人、事、物,也可以是抽象的概念或联系。例如,一个具体学生、一门具体课等都是实体。2)实体集(Entity Set)性质相同的同类实体的集合称为“实体集”,也称为实体整体。如所有的(全体)学生、全体所有的汽车、所有的学校、所有的课程、所有的零件都称为实体集。3)实体型(Entity Type)具有相同属性的实体必然具有共同的特征和性质。用实体名及其属性名集合来抽象和刻画同类实体,称为实体型实体型。事物的若干属性值的集合可表征一个实体,而若干个属性型所组成的集合可表征一个实体的类型,简称为“实体型”。同类型的实体集合组成实体集。问题:上述三个概念的同异的地方?4)属性(Attribute)实体所具
10、有的某一特性称为属性属性。一个实体可以由若干个属性来刻画。例如学生实体可以由学号、姓名、性别、出生年份、系、入学时间等属性组成。属性有“型”和“值”的区分,如学生实体属性的名称:姓名、性别、年龄等是属性的型,而属性的值是其型的具体内容,如王源、男、18分别是姓名、性别、年龄的值。问题:实体和属性同样为名词,如何区分它们?答:没有唯一的标准,取决于你是如何建立模型的,模型的解释是否合理。即对同一个名词,你在一处地方解释为属性,那么其它地方必须解释为属性。否则自相矛盾。5)关键字(Key)能唯一标识实体的属性(或属性组合)称为关键字关键字(或码或码)。例如学号是学生实体的关键字(码)。本书将混用关
11、键字和码这两个概念。6)域(Domain)属性的取值范围称为该属性的域属性的域。例如,学号的域为8位数字符号,年龄的域为小于128的整数,性别的域为(男,女)。7)联系(Relationship)在现实世界中,事物内部以及事物之间是有联系的,这些联系在信息世界中反映为实体(型)内部的联系和实体(型)之间的联系。实体内部的联系通常是指组成实体的各属性之间的联系。实体之间的联系通常是指不同实体集之间的联系。8)联系的三种类型一对一联系(1:1)一对多联系(1:n)多对多联系(m:n)一对一的联系(1:1)实体集A中的一个实体至多与实体B中的一个实体相对应,反之亦然。如一个学校只能有一个校长,一个校
12、长也只能在一个学校任职,则学校与校长的联系即为一对一的联系,还有班长与班、学生与座位之间也都是一对一的联系。一对多联系(1:n)实体集A中的一个实体与实体B中的多个实体相对应,反之亦然。如一个班级可以有多个学生,而一个学生只会有一个班级,班级与学生的联系即为一对多的联系。一对一联系是一对多联系的特例,而一对多联系又是多对多联系的特例。多对多联系(m:n)实体集A中的一个实体至多与实体B中的一个实体相对应,实体集B中的一个实体至多与实体 A中的一个实体相对应。如一门课程可以有多个学生选修,而一个学生同时可以选修多门课程,课程与学生的联系即为多对多的联系。2.概念模型的表示方法(1)实体联系模型实
13、体联系模型(Entity-RelationshipModel)。E-R图提供了实体、属性与联系的方法。E-R使用的符号如下2.概念模型的表示方法(2)E-R模型例子(1)11学校校长管理1n班级学生组成nm学生课程选修多对多模型一对一模型一对多模型2.概念模型的表示方法(3)E-R模型例子(2)班级、学生和课程对应的E-R图(省略了部分属性)1.2.3 数据模型层次模型(HierarchicalModel)网状模型(NetworkModel)关系模型(RelationalModel)面向对象模型(ObjectOrientedModel)1.3 关系数据库关系模型关系完整性约束1.3.1 关系模
14、型关系的基本特点关系的操作关系模型的优点1.关系模型的基本概念(1)关系数据库系统是支持关系数据模型的数据库系统。免费的关系数据库系统MySQLhttp:/ 刘嘉美 女1991-8-10670汉族北京会计学101YesS0082581 石茂麟 男1991-6-20670汉族浏阳会计学081NoS0100574 王莉莉 女1992-2-2642汉族龙岩与技术101NoS0102589 郭玉坤 男1991-2-17642壮族百色会计学101NoS0082580 吴静婷 女1990-3-11642汉族南昌会计学081YesS0080594 叶志威 男1990-1-13642汉族喀什计算机081NoS
15、0092514 张小东 男1991-7-25623汉族长春会计学091No本书使用的关系模型待解释关系模型关键词关系名属性主键外键本书使用的关系表四张贯穿教案的数据表,“班级表”、“学生表”、“课程表”和“成绩表”。问题:此模式图中成绩表设计有悖于我们通常的理解,如何解释?数据库模式设计需要复杂的数学知识,称为数数据库范式理论据库范式理论(NormalFormulaTheory)。如同博客中95%的看客,5%的写客一样,数据库模式的设计为专业人员工作。只需会使用即可。班级表班号班号学院学院专业年年级人数人数班主任班主任会会计学学081会计学院 会计学2008会会计学学091会计学院 会计学20
16、09会会计学学101会计学院 会计学2010计算机科学算机科学与技与技术081信息管理学院计算机科学与技术2008计算机科学算机科学与技与技术091信息管理学院计算机科学与技术2009计算机科学算机科学与技与技术101信息管理学院计算机科学与技术2010学生表学号学号姓名姓名性性别出生出生日期日期成成绩民族民族籍籍贯班号班号贷款款否否简历照照片片S0102590刘嘉美 女1991-8-10670汉族北京会计学101YesS0082581石茂麟 男1991-6-20670汉族湖南浏阳会计学081NoS0100574王莉莉 女1992-2-2642汉族福建龙岩计算机101NoS0102589郭玉坤
17、 男1991-2-17642壮族广西百色会计学101NoS0082580吴静婷 女1990-3-11642汉族江西南昌会计学081YesS0080594叶志威 男1990-1-13642汉族新疆喀什计算机081NoS0092514张小东 男1991-7-25623汉族吉林长春会计学091No课程表课程号程号课程名程名简称称学分学分课时课程程简介介A0101计算机引论jsjyl532A0301数据结构sjjg464A0501Java程序设计 javacxsj464B0101基础会计jckj448B0301会计电算化kjdsh464B0501税法sf464C0101大学英语IdxyyI664C03
18、01线性代数xxds464C0501高等数学IIIgdsxIII664成绩表学号学号课程号程号成成绩S0080521A050163S0080521C050174S0080567A050178S0080567C050170S0080568A050170S0080568C050174S0080594A050175S0080594C050174S0080596A050167班级表属性数据类型数据表属性数据类型功能确定具有的运算其常量表示方法学生表属性数据类型课程表属性数据类型成绩表属性数据类型1.关系模型的基本概念(3)(2)元组二维表的每一行在关系中称为元组元组。在Access中,一个元组对应表中
19、一个记录。(3)属性二维表的每一列在关系中称为属性,每个属性都有一个属性名,属性值则是各个元组属性的取值。在Access中,一个属性对应表中一个字段,属性名对应字段名,属性值对应于各个记录的字段值。1.关系模型的基本概念(4)(4)域属性的取值范围称为域。域作为属性值的集合,其类型与范围由属性的性质及其所表示的意义具体确定。同一属性只能在相同域中取值。1.关系模型的基本概念(5)(5)关键字关系中能唯一区分、确定不同元组的属性或属性组合,称为该关系的一个关键字。单个属性组成的关键字称为单关键字,多个属性组合的关键字称为组合关键字。需要强调的是,关键字的属性值不能取“空值”。所谓空值就是“不知道
20、”或“不确定”的值,因而空值无法唯一地区分、确定元组。1.关系模型的基本概念(6)(6)候选关键字关系中能够成为关键字的属性或属性组合可能不是唯一的。凡在关系中能够唯一区分、确定不同元组的属性或属性组合,称为候选关键字。(7)主关键字(PrimaryKey-PK)在候选关键字中选定一个作为关键字,称为该关系的主关键字。关系中主关键字是唯一的。1.关系模型的基本概念(7)(8)外部关键字(ForeignKey-FK)关系中某个属性或属性组合并非关键字,但却是另一个关系的主关键字,称此属性或属性组合为本关系的外部关键字。关系之间的联系是通过外部关键字实现的。外键功能用来实现表间约束。(9)关系模式
21、对关系的描述称为关系模式,其格式为:关系名(属性名1,属性名2,属性名n)2.关系的基本特点(1)在关系模型中,关系具有以下基本特点:(1)关系必须规范化,属性不可再分割。规范化是指关系模型中每个关系模式都必须满足一定的要求,最基本的要求是关系必须是一张二维表,每个属性值必须是不可分割的最小数据单元,即表中不能再包含表。(2)在同一关系中不允许出现相同的属性名Access不允许同一个表中有相同的字段名。2.关系的基本特点(2)(3)关系中不允许有完全相同的元组。(4)在同一关系中元组的次序无关紧要。也就是说,任意交换两行的位置并不影响数据的实际含义。(5)在同一关系中属性的次序无关紧要。任意交
22、换两列的位置也并不影响数据的实际含义,不会改变关系模式。3.关系的操作(1)和算术运算一样。如:1+2=3中1、2为操作数,+为操作符。结果为操作数。关系运算中,关系作为操作数操作数,关系运算符作为操作符操作符。关系运算的结果是一个新的关系。关系作为一张二维表,其可进行的操作包括:选择、投影、自然联接。3.关系的操作(2)关系操作根据参与操作的数据表分为:一元操作符:仅一个数据表参与操作二元操作符:有二个数据表参与操作3.关系的操作(3)选择操作和投影操作为一元操作符1.选择操作给定一个关系,从中筛选出满足某种条件的记录(或元组)的过程称为选择选择。如下图所示的选择操作是所有少数民族的学生2.
23、投影操作给定一个关系,从中只检索期望得到的字段(或属性)的过程称为投影投影。如下图所示的投影操作是从学生表得到只有三个字段(学号、姓名、入学成绩)的关系。3.关系的操作(3)自然联接操作自然联接操作要求二个关系参与运算,即为二元操作符。前提条件通常这二个关系中,有一个公共的属性(称为联接属性),在一个关系(称为一表)中它是主键,而在另一个关系(称为多表)中它是外键。如“班级表”(一表)中主键是班级号,而班级号在“学生表”(多表)中是外键。3.关系的操作(4)自然联接操作的结果:在属性上是二个参与运算关系的属性叠加;在元组上是在多表元组的记录基础上,扩展联接属性相同时的一表对应的数据值。即以多表
24、为准。3.关系的操作(5)自然联接的结果前提条件:二个表间存在一个外键约束。学生表学生表姓名性别出生日期少数民族否班级号籍贯入学成绩简历照片班级表班级表班级号专业名称年级班主任姓名所在学院班级人数3.关系的操作(6)自然的等值联接的结果集仍是一个关系该关系的属性(字段)是两个关系的叠加;该关系的元组(记录)是以多表为准。班级表班级表班级号专业名称年级班主任姓名所在学院班级人数学生表学生表姓名性别出生日期少数民族否班级号籍贯入学成绩简历照片专业名称年级班主任姓名所在学院班级人数4.关系模型的优点关系模型与非关系模型不同,它是建立在严格的数学概念的基础上的。关系模型的概念单一,无论实体还是实体之间
25、的联系都用关系表示。对数据的检索结果也是关系(即表)。所以其数据结构简单、清晰,用户易懂易用。关系模型的存取路径对用户透明(用户无需关心数据存放路径),从而具有更高的数据独立性、更好的安全保密性,也简化了程序员的工作和数据库开发建立的工作。1.3.2 关系完整性约束实体完整性参照完整性域完整性用户定义完整性1.实体完整性实体完整性是指一个关系中不能存在两个完全相同的记录。一个关系对应现实世界中一个实体集。实体完整性是通过关系的主关键字(PK)来实现的。应具有某种唯一性标识。注意:主关键字(主属性)不能取“空值”。否则,表明关系模式中存在着不可标识的实体(因空值是“不确定”的),这与“唯一性标识
26、”相矛盾。2.参照完整性是二个表之间的约束。参照完整性是指多表外部关键字的取值必须与一表中某元组主关键字的值相同,否则违反了参照完整性约束。使用FK实现问题如何理解实体完整性和参照完整性?1.具备完整性检查功能的数据库是具备行为能力的数据库,如果插入(修改)的元组违反定义的完整性则数据库系统将不会执行插入(修改)操作。2.检查是否违法实体(参照)完整性的情况:实体完整性:涉及一个数据表,其不存在主键值相同的两个元组。参照完整性:涉及二个数据表,参照完整性是指多表外部关键字的取值必须与一表中某元组主关键字的值相同。3.域完整性域完整性是指取值范围必须满足的约束条件。例如,学生表中的“出生年月”字
27、段,你可以对该字段使用域完整性约束,要求年龄在12到70岁之间,在此范围之外的年龄数据都违法了域完整性要求,数据库将不允许数据进行插入或更新操作。4.用户定义完整性用户定义完整性是指针对某一具体业务规则提出的关系数据库必须满足的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。4.用户定义完整性2例如,有二个数据表,其中一个数据表A的某个属性X存放明细内容;另一个数据表B存放属性X的求和值,则数据表B中存放的求和值必须等于数据表A中属性X的求和值,否则数据表B中的求和值就没有意义。用户定义完整性由于涉及一些复杂的应用领域知识的表示问题,在现有数据库系统中实现功能上不是很完美。96本书
28、使用的关系模型本书使用的关系模型小钥匙表示主键表间连线表示参照完整性标记“1”表示一标记“”表示多1.4 数据库系统应用模式(1)客户/服务器应用模式Client/ServerSystemC/S)银行一人服务台1.4 数据库系统应用模式(2)浏览器/服务器应用模式(Browser/ServerSystemB/S)目前流行的方式网上逃犯追查系统选课系统学籍系统小结关系元组主键外键实体完整性参照完整性投影、选择自然联接2 Access 2007对象与操作基础 Access 2007中对象与操作基础2.1Access2007的启动及其工作界面2.2Access中的对象及其视图2.3Access200
29、7帮助使用2.1 Access 2007的启动及其工作界面2.1.1启动Access2007存在两种启动Access2007方式。(1)通过文件关联方式启动。Access2007数据库文件对应的其扩展名为:accdb。(2)用户单击“开始”|“所有程序”|“MicrosoftOffice”|“MicrosoftOfficeAccess2007”,2.1.2 Access 2007工作界面Access 2007界面1.标题栏2.Office按钮和快速访问工具栏3.功能区构成4.导航窗格5.工作区6.状态栏Access 工作界面功能区构成功能区由多个选项卡构成。选项卡:功能区将一系列相关的命令和功
30、能组合在一起,并划分为不同的选项卡,以及根据所执行的任务出现的上下文选项卡。选项卡位于功能区的顶部。当打开一个数据库后,标准的选项卡为“开始、创建、外部数据、数据库工具”,此时,默认的选项卡为“开始”选项卡,用户可以通过单击不同选项卡来选择该选项卡。工作界面-功能区构成Access2007根据用户打开的数据库对象不同,会出现上下文选项卡,上下文选项卡为不同数据库对象提供了更多合适的命令。2.2 Access中的对象及其视图Access2007由数据表、报表、查询、窗体、宏和模块六对象构成。Access不同对象所具备的视图。对象名称视图表设计视图、数据表视图、数据透视表视图、数据透视图视图报表报
31、表视图、布局视图、设计视图、打印预览视图查询设计视图、数据表视图、数据透视表视图、数据透视图视图、SQL视图窗体窗体视图、布局视图、设计视图宏设计视图模块设计视图2.2.1 表对象数据表必须满足数据库的完整性约束查询、窗体和报表都是在数据表的基础上加工得到的输出形式。Access2007中,数据表具有四种视图(1)设计视图(2)数据表视图(3)数据透视表视图(4)数据透视图视图2.2.1 表对象数据表视图切换方法:(1)双击导航窗格中的数据表对象,可以将数据表打开。(2)在工作区选项卡,将鼠标指向该数据表对象,单击鼠标右键,在出现的快捷菜单中选择所需视图即可。2.2.2 查询对象查询的功能就是
32、将数据库存储的数据变成人们易于阅读和理解的格式。Access2007中查询具有五种视图:“设计视图”、“SQL视图”、“数据表视图”、“数据透视表视图”和“数据透视图视图”查询对象(1)设计视图:帮助用户编写SQL语句(2)SQL视图:直接编写SQL语句。数据表视图、数据透视表视图和数据透视图视图功能同数据表对象。查询视图切换方法:(1)双击导航窗格中的查询对象,可以将查询打开。(2)在工作区选项卡,将鼠标指向该查询对象,单击鼠标右键,在出现的快捷菜单中选择所需视图即可2.2.3 窗体对象Access2007中窗体具有三种视图(1)窗体视图(2)布局视图布局视图可以对窗体设计进行更改。窗体对象
33、(3)设计视图在窗体设计视图中,可以添加、编辑窗体中需要显示的任何元素:向窗体添加更多类型的控件,例如标签、图像、线条和矩形。在文本框中编辑文本框控件来源,而不使用属性表。调整窗体节(如窗体页眉或主体节)的大小。更改某些无法在布局视图中更改的窗体属性(如“默认视图”或“允许窗体视图”)。窗体视图切换方法:(1)双击导航窗格中的窗体对象,可以将窗体打开。(2)在工作区选项卡,将鼠标指向该窗体对象,单击鼠标右键,在出现的快捷菜单中选择所需视图即可。也可将鼠标指向导航窗格中的窗体对象,单击鼠标右键,在出现的快捷菜单中选择所需视图即可。2.2.4 报表对象报表用来将数据打印输出,通过报表可以设计数据输
34、出的格式。报表的数据来源可以是表,也可以是查询。Access2007中,报表具有四种视图:“报表视图”、“布局视图”、“设计视图”和“打印预览视图”。2.2.4 报表对象(1)报表视图报表视图就是报表的输出形式。(2)布局视图报表布局视图有两个特性:报表实际正在运行;可以修改报表。报表对象(3)设计视图在报表设计视图中,可以编辑报表中需要显示的任何元素(4)打印预览视图打印预览视图可以实现打印前实际效果的预览功能。报表视图切换方法:(1)双击导航窗格中的报表对象,可以将报表打开。(2)在工作区选项卡,将鼠标指向该报表对象,单击鼠标右键,在出现的快捷菜单中选择所需视图即可。2.2.5 宏和模块对
35、象宏是Access数据库中一个或多个操作(命令)的集合。宏对象只有设计视图。模块是Access数据库存放VBA程序代码的对象。本书8、9章将详细介绍模块对象的结构化编程方法。模块对象只有设计视图。2.3 Access 2007帮助使用Access2007具有联机帮助功能,其常见帮助使用方法有四种。(1)在启动Access后,按帮助热键【F1】,打开帮助。(2)在Access界面相应位置按F1查看联机帮助。2.3 Access 2007帮助使用(3)当用户在VBE中输入了程序代码后,可以将光标移动到代码中的关键字上,再按【F1】,此时帮助将打开与关键字相关的条目。(4)在VBE中使用对象浏览器来
36、查找需要的帮助。首先在VBE中,打开“对象浏览器”,然后找到需要帮助的类,并将焦点放置到该类后,按【F1】,即可得到关于该类的帮助,进而获得该类某个属性或方法(事件)的帮助。3.SQL语言的应用3.1SQL历史和优点3.2数据查询3.3数据操纵3.SQL语言的应SQL全称是结构化查询语言StructuredQueryLanguage-SQL目前SQL语言是关系数据库的标准语言3.SQL语言的应用SQL语句分成三类,各类所包含的语句如下:数据操纵语言DML(DataManipulationLanguage)SELECT,INSERT,UPDATE和DELETE数据定义语言DDL(DataDefi
37、nitionLanguage)CREATE,ALTER和DROP数据控制语言DCL(DataControlLanguage)相关的权限分配3.1 SQL历史和优点3.1.1SQL的历史和标准3.1.2SQL的优点1.非过程化语言 2.统一的查询语言3.所有关系数据库的公共语言3.2 数据查询3.2.1数据查询建立与保存的方法1.使用查询向导建立查询2.使用查询设计器建立查询3.使用SQL语句建立查询4.查询的保存与修改【例3-1】使用查询向导1单击功能区“创建”命令选项卡中的“查询向导”按钮。使用查询向导2在出现的“新建查询”对话框中选择“简单查询向导”后,单击“确定”按钮。使用查询向导3选择
38、为“学生表”,并将“可用字段”中的“学号、姓名、入学成绩”加入到“选定字段”列表框中。然后单击“下一步”按钮。使用查询向导4单击“下一步”。使用查询向导5选择“打开查询查看信息”单选框,并单击“完成”按钮使用查询向导6部分查询结果【例3-2】查询设计器1 查询设计器2选择学生表进行添加,然后双击“学号”和“姓名”字段。查询设计器3查询设计器4 单击“设计”命令选项卡中的“运行”按钮【例3-3】SQL语句1-创建查询SQL语句2-关闭“显示表”对话框SQL语句3-切换到SQL视图SQL语句4-编写SQL语句SQL语句5-运行查询SQL语句6-查询结果4.查询的保存与修改保存查询对话框。保存的查询
39、会出现在Access对象导航窗口中。如果选择“打开”则直接运行了查询。可以看到,通过在查询选项卡上单击鼠标右键,可以在SQL视图和设计视图间切换。图 3-21 修改已保存的查询3.2.2 单表查询SQL语言提供了SELECT语句进行数据库的查询,该语句具有灵活的使用方式和丰富的功能。其一般格式为:SELECTALL|DISTINCT,FROM,WHEREGROUPBYHAVINGORDERBYASC|DESC;单表查询-SELECT语句SELECT语句既可以完成简单的单表查询,也可以完成复杂的连接查询和嵌套查询。注意:(1)在编写SQL语句之前,必须知道数据库的模式(2)为提高可读性,减少编写
40、错误和有利于SQL语句的维护,SQL必须写成多行。(3)SQL语句中,表达式和SQL中的符号的书写必须使用半角符号1.单表基本查询所谓单表查询是指FROM子句后面只有一个表的SELECT语句。1)查询所有的列如果SELECT中的为*时,表示检索所有的列。1.单表基本查询【例3-4】返回“学生表”中的所有行和所有列。SELECT不需要WHERE子句,可以返回所有行;要返回所有列,则在使用*即可。select*from学生表【例3-5】查询成绩表中的所有记录。select*from成绩表;图 3-22 例3-1的查询结果1.单表基本查询2)查询指定的列给定一个数据表,要查询指定的列,必须在SELE
41、CT的中指定列名,这个操作为对该表实行投影操作。【例3-6】检索“学生表”中的学号、姓名、性别和籍贯字段。select学号,姓名,性别,籍贯 from学生表;查询结果略。1.单表基本查询3)查询经过计算的值或更改列标题名SELECT语句中,可以使用运算符来对列进行计算得到结果,要注意的是,这些运算只针对检索后的结果,它不会影响保存在数据库中的数值。此外SELECT提供了更改字段名的方法。1.单表基本查询【例3-7】对“学生表”的“入学成绩”除以600,求相对成绩,其显示的字段名为“相对成绩”。select学号,姓名,入学成绩/600as相对成绩 from学生表;【例3-8】求所有学生在2010
42、年的年龄。select学号,姓名,2010-year(出生日期)as年龄 from学生表;2.选择表中的若干元组(选择操作)选择一个表中的若干元组(或记录)操作,是对该表实行选择操作。其方法是使用SELECT语句的WHERE子句中的条件。1)消除取值重复的行指定DISTINCT短语,表示在计算时要去除重复行。如果不指定DISTINCT短语或指定ALL短语(ALL为默认值),则表示不取消重复值。消除取值重复的行Distinct子句【例3-9】输出学生表中所有的籍贯。select籍贯 from学生表 orderby籍贯;【例3-10】显示学生表中的学生来自全国哪些地方,即有哪些不同的籍贯。sele
43、ctdistinct籍贯 from学生表 orderby籍贯;结果为去除了重复籍贯的23条记录,而原学生表中有30位同学。选择操作-Where子句2)查询满足条件的元组WHERE子句常用的查询条件。WHERE子句中的条件操作符类型操作符含义关系运算符=等于不等于大于=大于等于小于=600;这是数字类型查询例子,其查询结果略。用关系运算符构造条件-逻辑关系运算符包括:、=、=、=、。【例3-12】查找学生表中的贷款的学生学号和姓名。select学号,姓名,贷款否 from学生表 where贷款否=True;这是逻辑类型查询例子。用关系运算符构造条件-日期【例3-13】求1991年7月以后出生的学
44、生学号和姓名。select学号,姓名,出生日期 from学生表 where出生日期=#1991/07/01#这是日期类型查询例子。用关系运算符构造条件-Between谓词BETWEENAND用来查找属性值在指定范围内的元组,其中BETWEEN后是范围的下限(即低值),AND后是范围的上限(即高值)。用关系构造条件-Between例子【例3-14】求入学成绩在550到630间的学生学号、姓名和入学成绩。select学生表.学号,学生表.姓名,学生表.入学成绩 from学生表 where学生表.入学成绩 between550and630;用关系构造条件-Between例子上述SQL语句可以等价于如
45、下SQL语句。select学生表.学号,学生表.姓名,学生表.入学成绩 from学生表 where学生表.入学成绩=550and学生表.入学成绩=550and民族“汉族”查询结果略。用逻辑运算符构造多重条件-例子【例3-16】查找入学成绩在570分以上的女性学生,显示学号、姓名、性别和入学成绩。select学号,姓名,性别,入学成绩 from学生表 where入学成绩=570and性别=女查询结果略。(3)确定集合SELECT提供谓词IN用来查找属性值在指定集合的方法。而NOTIN表示属性值不在指定集合。确定集合-例子【例3-17】求籍贯为“江西南昌”或“四川成都”的学生学号、姓名和籍贯。se
46、lect学生表.学号,学生表.姓名,学生表.籍贯 from学生表 where学生表.籍贯 in(“四川成都”,“江西南昌”);确定集合-例子上述SQL语句可以等价于如下SQL语句。select学生表.学号,学生表.姓名,学生表.籍贯 from学生表 where学生表.籍贯=“四川成都”or学生表.籍贯=“江西南昌”;查询结果略。确定集合-例子【例3-18】求籍贯不为“江西南昌”和“四川成都”的学生学号、姓名和籍贯。select学生表.学号,学生表.姓名,学生表.籍贯 from学生表 where学生表.籍贯 notin(四川成都,江西南昌);确定集合-例子上述SQL语句可以等价于如下SQL语句。
47、select学生表.学号,学生表.姓名,学生表.籍贯 from学生表 where学生表.籍贯 四川成都and学生表.籍贯 江西南昌;(4)字符匹配谓词LIKE可以用来进行字符串的匹配。其一般语法格式如下:NOTLIKEESCAPE其含义是查找指定的属性列值与相匹配的元组。字符匹配可以是一个完整的字符串,也可以含有通配符*和?。*(星号)代表在任意位置(长度可以为0)上的任意字符。例如a*b表示以a开头,以b结尾的任意长度的字符串。如acb,addgb,ab等都满足该匹配串。?(问号)代表一个位置上任意字符。例如a?b表示以a开头,以b结尾的长度为3的任意字符串。如acb,afb等都满足该匹配串
48、。(4)字符匹配-例子【例3-19】查找以姓“杨”开头的学生学号和姓名。select学号,姓名 from学生表 where姓名 like“杨*”;字符匹配-例子【例3-20】查找以“慧”字为最后一个字符的学生学号和姓名。select学号,姓名 from学生表 where姓名 like“*慧”;字符匹配-例子【例3-21】查找第二个字符为“建”字的学生学号和姓名。select学号,姓名 from学生表 where姓名 like“?建*”;思考:下列SQL语句与上面的有何不同。select学号,姓名;from学生表;where姓名 like“*建*”字符匹配-例子【例3-22】查找江西籍的男性学生
49、的学号和姓名select学号,姓名,性别,籍贯 from学生表 where籍贯 like“江西*”and性别=“男”;字符匹配-例子【例3-23】查找江西和湖南籍的学生学号、姓名、性别和籍贯。select学号,姓名,性别,籍贯 from学生表 where籍贯 like“江西*”or籍贯 like“湖南*”;查询结果略。【例3-24】查找非江西和湖南籍的学生学号、姓名、性别和籍贯。select学号,姓名,性别,籍贯 from学生表 wherenot(籍贯 like“江西*”)andnot(籍贯 like“湖南*”);查询结果略。(5)查询结果输出到新表SELECT默认输出给用户浏览。SELECT
50、同时提供INTO子句来将查询结果输出到新表中,其格式为:SELECTALL|DISTINCT,INTOFROM,WHEREGROUPBYHAVINGORDERBYASC|DESC;INTO表示将查询结果保存到新表中。(5)查询结果输出到新表【例3-25】将籍贯为“江西”和“湖南”的学生学号、姓名、性别和籍贯输出到“湘赣学生名单”。select学号,姓名,性别,籍贯 into湘赣学生名单 from学生表 where籍贯 like“江西*”or籍贯 like“湖南*”;3)对查询结果排序用户可以用ORDERBY子句对查询结果按照一个或多个属性列的升序(ASC)或降序(DESC)排列,缺省值为升序。