计算机软件技术数据结构_第1页
计算机软件技术数据结构_第2页
计算机软件技术数据结构_第3页
计算机软件技术数据结构_第4页
计算机软件技术数据结构_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机软件技术数据结构1第一页,共五十二页,编辑于2023年,星期一1.1数据库技术概念关系数据库表示:(数据、联系都用关系(即二维表)表示)3.数据库技术 用构造DB的方法管理数据的技术。4.数据库管理系统(DBMS) 构造DB应用系统的软件。S#SNSEXAGES1丁一男19S2马二女20S3张三女18S4李四男20…………S#C#GS1C189S1C290S1C395S4C190………S#CNHCC1DS603C2OS402C3DB402…….………………(学生表) (选课表) (课程表)2第二页,共五十二页,编辑于2023年,星期一 1968年:诞生了第一个商品化的DBMS----IMS(InformationManagementSystem),属层次模型。

1969年:提出了网状模型-----DBTG(DBTaskGroup)报告。

1970s后:关系模型占主导地位------dbase、Foxpro、Oracle、SQL/DS、SQLserver等。 目前,数据库技术日趋完善,应用广泛。如部门的MIS、AO、CAD/CAM、GIS等,都要用到数据库。数据库规模是衡量国家信息化程度的标志。5.数据库系统(DBS)数据库技术概念3第三页,共五十二页,编辑于2023年,星期一数据库技术概念

一个具体DBS,其核心是数据库,数据以文件形式存放在外存。支持数据库运行的软件有OS、DBMS。为了能够高效使用和更新数据,还需要有一批应用程序。 一个DBS特有的部分就是DBMS支持下的数据库和应用程序。DBMS的作用是:为定义数据库中数据的组织结构提供语言,也为应用程序提供存取数据的方法;通过操作系统完成数据的存取,并对数据库进行常规管理和维护。DBMS支持了数据库的整个生命期。

参与DBS工作的人员,一类是应用程序员,利用DBMS提供的语言,结合高级语言编写应用程序,为终端用户服务。终端用户可以用命令语句、也可以使用应用程序员编制的程序来对数据库进行操作。另一类参与DBS工作的人员是数据库管理员DBA,全面负责数据库的设计、管理和维护。4第四页,共五十二页,编辑于2023年,星期一数据库技术概念

数据库管理员DBA主要职责有:1)与用户和应用程序员紧密结合,规定数据库的任务范围,设计库结构,组织应用程序的设计;决定数据库的物理存储方法和存取策略,定义数据库的安全性检查和完整性约束条件,装入数据。2)监督控制数据库的使用和运行,收集系统数据库的使用信息以备改进。3)需要时改进和重新组织数据库。4)在数据库遭破坏时采取措施决定策略恢复数据。5第五页,共五十二页,编辑于2023年,星期一1.1.1数据库技术的发展1.手工管理阶段 从计算机面世到20世纪50年代中期的阶段。当时计算机主要为科学和工程计算工作,硬件、软件都很简单。这时计算机面对的主要是科学数据,数据与它的应用程序关系如下:a.数据从属于使用它的应用程序,程序不运行,数据不能使用,程序运行结束,数据随之从计算机中退出。b.计算机不单独保存数据。c.数据由程序员直接管理,直接对其存储结构、输入输出方式等作出安排。 这个阶段的数据与应用程序捆绑上机,完全不能独立,如图(a)。若应用程序需要,数据的存放就要调整;若数据存放方式改变,应用程序也必须修改。应用程序数据(a)6第六页,共五十二页,编辑于2023年,星期一数据库技术的发展2.文件系统阶段

50年代后期至60年代中期。从技术环境看,这时有了磁盘等直接存储设备,磁盘操作系统随之产生,其中包括专门管理数据文件的文件系统;从需求来看,社会生活要求计算机走出科研、设计、军事领域,介入数据管理;数据需要经常处理、利用,所以从技术上要求数据保存在计算机内,尽量做到共享,这时的数据管理方式是:a.数据按规则组织成文件,以文件的形式长期保存在计算机存储设备中。b.数据文件的存放由文件系统管理,程序员不必关心其存储细节,只通过文件名对数据进行存取。c.应用程序和数据相互独立存放,理论上实现了以文件为单位的数据共享。d.数据文件的组织方法依赖于应用程序,对它的安排使用面向具体应用,故而独立性差、共用性也差。e.文件以表格形式组织数据,不能表示复杂的数据关系,各文件的数据是孤立的,不能作相互关联的整体结构使用,一个文件的数据格式固定,少弹性,限制了它承担数据的能力。这个阶段中数据与应用的关系示意如图(b)。7第七页,共五十二页,编辑于2023年,星期一数据库技术的发展

3.数据库管理阶段

60年代末,数据管理技术进入数据库阶段。此时直接存取设备向大容量、高速度的方向飞速发展,为大规模高效率的数据管理作了物质上的准备。社会对计算机管理数据的期望值更高,需要管理的规模更大,领域更宽,数据更多,类型更复杂,更需要集中管理、数据共享。而对这样的社会需求,计算机对数据必须采取全新的组织方式,由专门的软件(DBMS)对数据进行管理,才能适应这种整体存储的要求。在这个阶段,数据与应用程序的关系如图(c)。应用程序2应用程序1应用程序n数据文件n数据文件1数据文件2………………

文件管理系统(b)8第八页,共五十二页,编辑于2023年,星期一数据库系统特点1.1.2数据库系统特点1.数据结构化 数据库包含的全部内容构成一个整体的结构而不是孤立的文件,解决了文件系统不能胜任的复杂联系问题。这种“结构化”大大的扩展了复杂数据的表达能力,它既可以记录各类数据本身,也可以描述不同对象间的复杂联系,而且结构灵活、便于共享、易于扩展。

:::应用程序n应用程序1应用程序2DBMS表1表3表2表n(c)

数据库管理各阶段应用程序与数据的关系9第九页,共五十二页,编辑于2023年,星期一数据库系统特点2.数据独立性强

DBMS把数据分成不同层次的管理,保证数据组织的变化不会影响应用程序的使用。数据与应用程序互不干扰,即DBS具有较高的数据独立性。3.少冗余 冗余----数据重复存放。DBS从两个意义上减少了冗余。一方面,数据库面向全体用户组织数据,各用户数据免于重复存放,避免了存储空间的浪费;另一方面,减少冗余可避免数据的不一致性。 数据的不一致性:E#ENSEXZCGZE1丁一男副教授3000E2马二女副教授3200E3张三男教授5000…………(人事处) (科研处)E#ENSEXZCXME1丁一男讲师MISE2马二女副教授DSSE3张三男教授OA…………10第十页,共五十二页,编辑于2023年,星期一数据库系统特点4.数据完整性好指数据一致、正确。5.数据安全性好 指防止非法存取,防止数据被盗、丢失和破坏。数据库面向全体用户,但并非向全体用户开放。用户只能在自己权限内进行合法操作,为此,系统设有用户授权机制和安全性检查步骤来防范非法入侵。6.系统有并发控制机制和数据恢复功能 系统在更新数据和其它存取活动同时发生时进行控制,以防止数据出现错误。系统故障、操作失误、恶意破坏,均可能造成系统瘫痪,系统有能力在这种情况出现后恢复数据,正常工作。 由此,可以概括说,数据库是一个任务范围内全部数据的集合,其数据组织结构化,冗余少,与应用程序独立,有专门的软件进行管理,在实现数据共享的同时也保证数据安全。

11第十一页,共五十二页,编辑于2023年,星期一1.2数据模型

现实世界、信息世界、计算机世界 现实世界是客观存在,有各种类型各异的个体,如有物质性的人、书、财物等等,非物质性的定义、计划等等,它们都可以是数据库的存储对象,每个对象都会有其客观存在且可见的特征,如男生王明,81年生人,来自保定,高个子。相同类型的存储对象可归为一类。

信息世界是现实世界的反映,称现实世界中的对象为实体,同类对象构成实体集。对象的特征由属性描述。描述实体各种特征的属性序列构成该类实体的型。一个实体在各个属性名下的值就是这个实体的具体描述。 计算机世界是信息世界在计算机中的表示,每个实体的值为一个记录,实体的属性值则转换为一系列数据项的值。12第十二页,共五十二页,编辑于2023年,星期一1.2数据模型

现实世界、信息世界和计算机世界中相应概念的转换如图所示。实体间的联系 一对一联系(1:1),例:

对象同类对象特征表现特征名称实体实体集属性值属性名记录文件数据项数据项名现实世界 信息世界 计算机世界企业法人11国家首都11居民身份证1113第十三页,共五十二页,编辑于2023年,星期一数据模型

一对多联系(1:n),例: 多对多联系(m:n),例:学院系1n医生病人1n班主任学生1n学生课程mn老师学生mn供应商客户mn14第十四页,共五十二页,编辑于2023年,星期一数据模型

数据库要存储的对象:实体(集),实体(集)间的联系。数据模型以某种结构表达实体间的联系,是数据库整体的结构。不同的数据组织方式表示成不同的数据模型。各种数据模型对实体的组织方式相同,它们的差别在于对联系的表达。1.层次模型(树)2.网络模型(图)15第十五页,共五十二页,编辑于2023年,星期一数据模型3.关系模型(表) 关系模型是用表格表示实体间联系的模型。在这种模型中,不管是实体还是实体间的联系全部用表格表达。 如学生关系S的关系模式:S[S#

,SN,SEX,AGE]

属性集U

关系名S

关系模型建立在数学基础上,有坚实的理论指导,查询操作以关系运算的方式完成,省去了指针操作,简化了存储管理,减少了出错机会。S#SNSEXAGES1丁一男19S2马二女20S3张三女18S4李四男20…………元组t分量t(x)16第十六页,共五十二页,编辑于2023年,星期一信息模型

需在数据库中存储的内容经分析、整理、归类、综合,构成了信息世界。信息世界中实体及实体间联系的模型称信息模型,它是现实世界复杂关系的反映。实体一联系图(E-R图)是信息模型采用的一种表达方式。 如学校教学管理数据库的信息模型:

学校教学管理部分信息模型使用S(学生)在C(课程)T(教师)管理BNBCSNAGEGC#CNHB#S#D#DNT#TNAGE时间1nmnnm1nmnB(书)担任选修D(系)17第十七页,共五十二页,编辑于2023年,星期一1.3数据库管理系统

数据库管理系统DataBaseManagementSystem,简称为DBMS,一种专门的管理数据库的软件。DBMS按照自己所依据的数据模型(层次、网络、关系)定义数据库结构、接收数据、存取数据并维护数据库的正常运行。它象个大管家,指挥协调监督着数据库的全面运行。1.3.1数据库的管理结构

1.数据库的三个抽象层次

DBMS对数据库进行三级管理,即分为用户层、概念层和存储层。1)用户层 用户层也称外层,是数据库用来供用户使用的层面。各用户所看到的局部数据库为数据库的外视图(用户视图,外模式),是用户观点的数据库。2)全局层 全局层是整体概念上的数据库。在这个层面上可看到数据库全局,称为全局视图(模式),它是所有用户视图的综合,是完整的数据库。3)存储层 数据库的存储层也称内层(内模式),关系到数据的物理存储。数据库的内层以文件为单位来组织数据。18第十八页,共五十二页,编辑于2023年,星期一数据库的三个抽象层次

2.

二级映射 一次映射是在内模式、全局模式之间。这次映射确定了全局模式中的一个记录与存储记录之间的对应;另一次是在全局模式和外模式之间,它确定了外模式的数据与全局模式的数据间的对应关系。用户程序n………………

映射

映射终端用户内视图全局视图DB用户程序1外视图1外视图n

数据库三级管理层次程序员数据库管理员DBMS19第十九页,共五十二页,编辑于2023年,星期一3.数据独立性

有了内模式和全局模式间的映射关系,如果数据库的存储模式发生变化,只须改变内模式和全局模式间的映射关系,而全局模式本身不受任何影响,从而不影响应用程序,这称为数据的物理独立性,即数据的物理存储与应用程序相互独立。比如,数据库在运行一段时间以后需调整数据的存储位置,而这存储结构的变动只会改变内模式和全局模式间的映射关系,而不会改动全局的概念视图,不影响用户使用。再如增加索引、改变记录长度等都会使存储模式发生变动,但都不会影响到全局模式,不会影响用户使用。 全局模式与外模式间的映射关系,使数据在全局逻辑结构发生变化时,只改变全局模式与外模式的映射关系,而不会影响到外模式,从而保证建立在外模式基础上的应用程序不需任何变动,这称为数据的逻辑独立性,即用户使用的局部逻辑结构独立于全局的逻辑结构。比如,数据库系统允许扩充内容,当有些新的数据内容要添加到数据库中时,数据库的全局结构必然发生变化,这个变化只会影响概念视图与外视图的映射关系,不会影响用户使用的外模式。一个外模式局部逻辑结构如果不涉及这些改变,它就不受任何影响,使用它的应用程序也不需作任何改动。20第二十页,共五十二页,编辑于2023年,星期一1.3.2数据存取流程

数据库系统中一个用户单元包括这样几个部分:用户程序、数据区和通信区。用户工作区中存放应用程序和与数据库交换的数据。以一次查询为例说明数据库使用时的工作流程。工作流见图:

1.用户程序向DBMS发出查询请求,提供查询参数。

695432187DBMSOS用户程序系统缓冲区内模式概念模式外模式数据区通信区DB系统的存取流程21第二十一页,共五十二页,编辑于2023年,星期一数据存取流程 2.DBMS对用户作合法性检查,决定是否接受用户的查询请求。对合法用户,根据应用程序对应的子模式确定访问对象。

3.调用模式,根据子模式——模式映射关系确定要访问的数据在全局模式中的位置。

4.根据模式——内模式映射关系确定访问对象的存贮信息。

5.向操作系统发出读取数据的命令。

6.OS按照存取方法把要访问的对象从存储设备读出并送入系统缓冲区。

7.DBMS把系统缓冲区的物理数据转换成用户所需的逻辑数据并送入用户工作区。

8.DBMS向用户单元的通信区发出数据查询完成的信号。

9.应用程序接到通信区的信号后从用户工作区读取数据。22第二十二页,共五十二页,编辑于2023年,星期一1.3.3DBMS的功能 1)数据定义功能及语言

DBMS提供数据定义语言DDL(DataDiscriptionLanguage)。DDL用于定义数据库结构。数据库系统有三个抽象层次,依据面对的不同层次,分为模式定义语言、子模式定义语言和存储模式定义语言。

2)数据存取功能及执行语言

DBMS为用户提供数据操纵语言DML(DataManipulationLanguage)。用于对数据库进行查询、插入、删除、修改等操作。

3)数据库的运行管理功能 数据库运行管理功能控制整个系统,保证数据库安全运行。在数据库的存取操作中进行安全性、完整性检查并实行并发控制。DBMS提供授权机制,掌握用户对数据库的使用权限,对非法用户拒绝操作;由数据控制语言DBCL完成安全性控制。另外,系统设有总控程序,以控制协调数据库的活动。23第二十三页,共五十二页,编辑于2023年,星期一DBMS的功能

4)数据库建立和维护功能 此功能包括:在定义好的数据库模式中装入初始数据,完成数据库的建造;建立工作日志并作有关数据更新的详细记录;数据库在开始运行后定期进行转储作为备份,以备数据库遭意外时恢复数据;数据库破坏后根据备份和工作日志进行恢复;进行性能监侧、分析,根据系统运行的时间空间使用情况以决定是否需要重新组织数据库;对数据库进行重组改进。系统备有一整套相应的服务性程序完成各项功能。

5)数据通信功能

DBMS要接受应用程序通过DML发出的操作请求,要通过操作系统访问数据库,即在数据与应用程序间传送数据,所以须具备向内对操作系统向外对应用程序的通信功能。24第二十四页,共五十二页,编辑于2023年,星期一第二章关系模型系统

在数据库技术中实际采用的三种数据模型中,关系模型普及最快、应用最广,仅凭通俗易懂易操作这一点,关系模型就从各类数据模型中胜出,成为数据库技术的主流产品。本章介绍关系模型的概念和关系模型的数据定义、数据操纵语言。2.1关系型数据库的特点

1)数据结构简单。关系即日常事务管理中使用的表格,通俗易懂。

2)结构划一。关系模型对实体和实体间联系都用关系表达。

3)数据操纵语言为非过程型。关系模型的查询是数学演算过程,通过查询语句提出条件,系统自己完成任务,用户只需了解少数几条规则即可使用,不必去了解物理存贮细节,这是关系型数据库系统在非专业用户中非常容易接受的主要原因。

4)数据独立性好。关系模型的查询通过查询条件完成,与数据结构无关,用户程序稳定,有利于数据共享。

5)关系型数据库系统有坚实的理论基础。关系模型的诞生和发展都在关系数据理论的指导下进行,其数学基础就是集合论,它的设计、操作都有理论依据,设计过程严谨、规范。

25第二十五页,共五十二页,编辑于2023年,星期一2.2关系及关系模型的概念2.2.1关系 设有n个集合(域)D1,D2……Dn。顺序从各个集合Di中任意取出一个元素di构成一个有序n元组〈d1,d2,……dn〉,其中di∈Di,这样的元组构成的集合即为一个D1

,……Dn上的n元关系,简称关系。例:集合A={a1,a2,a3},B={b1,b2},C={c1,c2,c3,c4}。则{〈a1,b2,c3〉,〈a3,b1,c4〉,〈a1,b1,c2〉}为A、B、C上的一个3元关系。 日常事务中,经常用表格的形式进行记录。如新生登记表是一个关系:关系有如下性质:1.关系中没有完全相同的元组;2.元组的顺序无关;3.同列元素出于同一个域,是同类型数据,不同列元素有不同的属性名,不同属性可以有相同的属性域;4.属性值是原子的,不能是元素组。通知号姓名性别年龄录取系报考地0001丁一男18计算机广州0002马二女17管理

上海0003张三女19计算机北京0004李四男18管理北京………………26第二十六页,共五十二页,编辑于2023年,星期一2.2.2关系模型1.关系模型 关系模型对实体及实体间的联系均用表格即关系表达,即一个关系模型就是一个关系模式的集合,这些关系模式构成一个整体,用整齐划一的结构表达了一个信息世界。如“学生选课”信息模型:有如下关系模式:

S[S#,SN,SEX,DN]属性集:学号、学生姓名、性别、系名;

C[C#,CN,H,C] 属性集:课号、课名、学时、学分;

SC[S#,C#

,G] 属性集:学号、课号、分数。关系名分别为S、C、SC,他们构成学生选课的一个关系模型。S#SNSEX学生DNGC#CNHC选课课程27第二十七页,共五十二页,编辑于2023年,星期一关系模型2.码(关键字key)

在一个关系中,若有一个或一组属性,其值可标识唯一元组,且不含多余属性,则称为关系的候选码,简称码,也称关键字。一个关系若有多个码,则在其中指定一个作为数据库的操作依据,称为主码。在上述关系S、C、SC中,主码分别为S#、C#

和(S#,C#)。 表达多个实体间复杂联系的关系,如关系SC,其码必然是多属性。极端情况下,码由全体属性组成,称为全码。如案件审理关系:

R[法官原告被告]

每个属性都不能代表唯一的元组,每两个属性也不行,必须3个属性一起,称为全码关系。3.外码 若某属性A在关系R1中不是码,但在关系R2中是主码,则称A为R1的外码。如在关系SC中,S#和C#

单独都不是SC的码,但它们分别是关系S和关系C的主码,所以它们在SC中是外码。28第二十八页,共五十二页,编辑于2023年,星期一关系模型

例:有学生S和系D关系:

D#是D的码,S的外码,在S中D#或是D中的一个值,或为空(刚转入的学生(如立四)可暂时不确认系)。4.关系型数据库必须遵循的完整性原则 实体完整性:关系的主码值不可为空。 相关完整性:关系R1的外码A的值,或在A作主码的关系R2中存在,或为空值。S#SNSEXD#S1丁一男D1S2马二女D1S3张三女D2S4李四男^…………D#DNDMLOCD1计算机王B1D2信息女B1…………SD29第二十九页,共五十二页,编辑于2023年,星期一2.3关系型数据库的数据操纵语言DML

数据操纵语言DML包括数据查询和数据插入、删除、修改等操作。2.3.1关系代数 关系代数通过运算实现查询。关系运算可分为两类,一类是集合运算,一类是关系特有的运算。1.集合运算设R、S两关系,则R∪S,R∩S、R-S和R×S(直积,笛卡尔积):

ABCa1b1c1a1b2c3a3b1c2a2b1c3

RABCa1b2c3a3b2c1a1b1c2a2b1c3

SABCa1b1c1a1b2c3a3b1c2a2b1c3a3b2c1a1b1c2

R∪SABC

a1b2c3a2b1c3R∩SABCa1b1c1a3b1c2R-SABCABCa1b1c1a1b2c3a1b1c1a3b2c1a1b1c1a1b1c2a1b1c1a2b1c3a1b2c3a1b2c3………………..………………..………………..

R×S30第三十页,共五十二页,编辑于2023年,星期一2.关系特有的运算1)

投影运算Π

定义:设属性集U上的关系R,X是U的子集。则R在X上的投影:

Πx(R)={t(X)|t∈R} t(X)表示元组t在X上的分量。

2)选择运算σ

定义:设属性集U上的关系R,选择运算从R中选出满足条件g元组,即:

σg(R)={t|t∈R∧g(t)为真}ABCa1b2c3a3b2c1a2b1c2a2b2c1RCAc3a1c1a3c2a2c1a2Π3,1(R)BCb2c3b2c1b1c2ΠBC(R)31第三十一页,共五十二页,编辑于2023年,星期一关系特有的运算例:设关系:

σD#=‘D1’∧SEX=‘女’(S)3)联接运算(条件联接)定义:属性集U和V上分别有关系R、S,属性组XU,YV,X与Y同名或同域可比,则R和S关于X和Y的条件联接,为元组r和s的串接:

RS={rs|r∈Rs∈S∧r(X)θs(Y)}

其中θ为算术比较符。S#SNSEXD#S1丁一男D1S2马二女D1S3张三女D2S4李四男^…………SS#SNSEXD#S2马二女D132第三十二页,共五十二页,编辑于2023年,星期一关系特有的运算例:建材关系J[J#ML],工程号:J#,材料:M,要求材料等级为L;供应商可供材料关系S[S#ML],表示供应商S#可供材料M,等级为L。4)自然联接 定义:R、S分别为属性集U、V上的关系,U、V的公共属性为X,则R和S的自然联接:

R∞S={|r∈R∧s∈S∧r(X)=s(X)},其中=V-X。上例,设X=ML,则R∞SJ#MLS#ML1

水泥

31水泥

21水泥32水泥32

钢筋

42钢筋

3JSS#ML1

水泥

22

水泥

3

3

水泥

42

钢筋

3J#

ML1

水泥

32

钢筋

4JSJ#

MLS#1水泥3233第三十三页,共五十二页,编辑于2023年,星期一关系特有的运算5)除法÷

定义:R、S分别为属性组XY、YZ上的关系,其中X与Y、Y与Z不相交,则R÷S为R上这样的X属性值:R上X值在Y属性值上的像集包含了S上所有的Y属性值。例: 因为S1的像集={C1,C3},不包含{C1,C2,C3},所以S1不为结果;而S2的像集={C1,C2,C3},故S2为结果(他选修了全部课程);同理,S3不为结果。ΠS#C#(SC)÷C

S#S2

S#C#GS1C190S1C376S2C183S2C269S2C372S3C266S3C389

SC

C#CNHC1

MATH96C2

DB72C3DS54

CXYY34第三十四页,共五十二页,编辑于2023年,星期一2.3.2关系代数完成数据查询

在学生管理数据库中完成以下查询。数据库有三个关系S[S#

SN

SEX

AGE

D]、C[C#

CN

H

T]和SC[S#

C#

G]。

1)给出计算机系所有女生的姓名: ∏SN(σD=‘计算机系’∧

SEX=‘女’(S))。

2)给出数学成绩优秀的学生及所在系: ∏SN,D((σCN=‘MATHG’∧G≥90(SC∞C∞S)))。

3)给出学过王老师课的学生名: ∏SN(SC∞σT=‘王’(C)∞S)。

4)查没学过王老师课的学生: ∏SN((∏S#(S)-∏S#(SC∞σT=‘王’(C)))∞S)。

5)查出学过王老师教的所有课的学生: ∏S#C#(SC)÷σT=‘王’(C)。35第三十五页,共五十二页,编辑于2023年,星期一2.4关系型数据库的标准语言SQL

SQL(StructuredQueryLanguage)----结构化查询语言,于1974年由IBM公司研制成功,在RDBMSSystemR上实现。它的功能强大、灵活、简单易学,很受用户欢迎,于86年美国标准局把它定为关系型数据库的标准语言,很快国际标准化组织也采纳了美国的标准。此后经过不断的增补,修订和扩充,形成了1992年公布的标准,使SQL的功能有了很大的提高,适用范围大大扩展。现在SQL已成为一种功能全面的数据库语言,是各种机型各种数据库系统都采用的数据存取标准语言。

SQL的起源是查询语言,随着不断的修订和扩充,SQL已成为包括数据定义、数据操纵、数据控制的全功能的数据语言。SQL可以支持一个关系数据库从建立到使用、运行、维护的全过程。

SQL的使用非常灵活,既可以在屏幕上做即席查询,也可嵌入主语言完成应用程序。两种使用方式的语法结构基本一致,语句使用英语短语,即使是非专业用户也非常容易理解。数据库技术的推广、普及、发展,很大程度上得益于SQL语言。36第三十六页,共五十二页,编辑于2023年,星期一2.4.1SQL的层次结构 SQL支持数据库系统三层结构的概念。SQL的概念层由一系列基本表构成。每个基本表有一个存储文件与之对应,对每一个表还可建立若干索引。存储文件、索引以及对它们的描述构成了数据库的内层。数据库的外层是用户访问数据库的窗口,称为视图,即用户的数据观点。视图也称为“虚表”。当视图被访问时,系统根据其定义把基本表中的数据映射到视图中提供给用户。SQL的层次结构见图:用户层概念层内层…………视图1基本表1存储文件1存储文件n基本表n视图2视图mDBMS…37第三十七页,共五十二页,编辑于2023年,星期一2.4.2SQL数据操纵语言DML

以学生管理数据库为例说明SQL的数据库操纵语言,即数据查询和数据更新。设数据库中有S[S#SNSEXAGED]、C[C#CNHT]和SC[S#C#G]三个关系模式,S和C分别表示学号、姓名、性别、年龄、系和课号、课名、学时、任课教师。1.数据查询SQL查询语句的基本格式为:

selectA1,A2,…AmfromR1,…Rn [where(条件)] [groupbyAi[hving(条件)]] [orderbyAj[ASC|DESC]];

意思是在关系R1…Rn中查找符合条件的元组,取这些元组中属性A1,…Am的值;结果元组可以按Ai,根据所给条件分组,可以Aj按排序。38第三十八页,共五十二页,编辑于2023年,星期一SQL的查询1)简单查询 例1:找出计算机系女同学的姓名和年龄,并按年龄降序排序:

selectSN,AGEfromS whereD=‘计算机系’ANDSEX=‘女’

orderbyAGEDESC;2)联接查询 例2:给出成绩优秀的学生名。 方法1:

select(DISTINCT)SNfromS,SC whereS.S#=SC.S#ANDG>=90; 方法2:

selectSNfromS whereS#

IN(selectS#fromSCwhereG>=90);39第三十九页,共五十二页,编辑于2023年,星期一SQL的查询

例3:查出数学成绩优秀的学生名。

selectSNfromS whereS#IN(selectS#fromSCwhereG>=90AND C#IN(selectC#fromCwhereCN=‘math’));

例4:查数学和英语均优的学生号(略)。 例5:查学过王老师课的学号。

selectS#fromSC whereC#IN(selectC#fromCwhereT=‘王’);40第四十页,共五十二页,编辑于2023年,星期一SQL的查询

3)使用元组变量的查询(略)

4)分组查询

SQL设了分组语句group,采用分组语句的查找格式为:

selectA,B,……fromRgroupby属性Ahaving(条件). group分语的含义是:满足条件的、属性A的值相同的元组为一组。R的元组分组后,得到R的若干子集,在每个子集中,属性A的值是共同的,其它属性值则构成集合。 例7:查学了王老师所有课的学号。

selectS#

fromSC groupbyS# havingSET(C#)CONTAINS(selectC#fromCwhereT=‘王’). SET(C#):某个S#

对应的一组中课号C#的集合,即相应S#学过的课。若这个集合包含了王老师教的全部课,则此S#被选出。41第四十一页,共五十二页,编辑于2023年,星期一SQL的查询5)

统计查询

SQL设有库函数可在查询中直接引用,除集合函数SET已经用过,还有COUNT(计数)、SUM(求和)、AVG(求平均值)、MAX(取最大值)、MIN(取最小值)。 例10:求所有学生的平均年龄。

selectAVG(AGE)fromS;

例11:求各门课的最高分,最低分,平均分:

selectC#,MAX(G),MIN(G),AVG(G)fromSC groupbyC#;

6)模糊查询

SQL还提供了模糊查询即条件不完全查询的查询方式,比如查学生“王力”,where语句中写入SN=‘王力’即可。但如果要查的是一个王姓同学,则可在where语句中写SNLIKE‘字符串’。字符串中下划线表示单个字符,百分号%代表任意长字符。如只知姓王则可用‘王%’代之。 例:selectSNfromS whereSNLIKE‘王%’;42第四十二页,共五十二页,编辑于2023年,星期一SQL的数据更新

数据更新操作包括插入、删除和修改。1)插入插入命令的语句格式:

insertintoR(A1,A2,…An)values(t1,t2,…tn); 或:insertintoR(A1,A2,…An)(select语句); 前一命令是向关系R插入一个新元组值,元组中各属性值的顺序要与属性名表中属性的顺序对应。后一命令是把一个现有关系中的数据成批地插到关系R中,查询语句中的属性名表须与命令中的属性名表一致。 例1:把王力的情况记录插入学生关系S中:

insertintoSvalues(S30,王力,男,18,机械系); 例2:新生报到后,新生记录在关系SS中,现要按系存到各系的学生关系中,如计算机系关系为S-C,则:

insertintoS-C(select*fromSSwhereD=‘计算机系’);

例3:现有课选课表SC2[S#,C#],要插到关系SC中:

insertintoSC(S#,C#)(selectS#,C#fromSC2);

插入命令中只有SC的两个属性,则系统自动把插入元组的G值置为空。43第四十三页,共五十二页,编辑于2023年,星期一SQL的数据更新2)删除 数据删除可以一次删除指定的一个元组或是满足条件的全部元组,删除命令是delete。

例:deletefromSCwhereS#=‘S1’;deletefromSwhereS#=‘S1’;

前一命令删除SC中有关S1的一批元组,后一命令在S中删除S1一个元组。(如果只有后一个命令,会造成什么局面?)3)修改 修改命令的格式为: updateRsetA=(新值)where(条件);

即更新关系R中满足条件的元组中属性A的值,新值在set语句中给出。例1:学生李力调到计算机系。

updateSsetD=‘计算机’

whereS#

IN(selectS#fromSwhereSN=‘李力’)。

例2:计算机系学生年龄增加1岁。

updateSsetAGE=AGE+1 whereS#

IN(selectS#fromSwhereD=‘计算机系’);44第四十四页,共五十二页,编辑于2023年,星期一2.4.3嵌入式SQL

前面介绍了SQL的基本语句。当以交互式访问数据库时,键入SQL语句就可以实现对数据库的查询或更新。但这些语句不能构成应用程序,因而使用效率较低。大规模数据管理需要自动、快速、大批量的处理数据,这就需要大型应用程序来承担这样的任务。应用程序由高级语言编写,SQL嵌入高级语言即主语言的程序中,成为高级语言和数据库之间的数据接口:SQL负责与数据库操作和交换数据,程序的控制、数据的处理由高级语言完成。SQL可嵌入的高级语言有COBOL、FORTRAN、C等。 嵌入式SQL与交互式SQL语法结构相同,但使用方式不同,所以必须作些相应的准备。

1)设立SQL与主语言的通信区SQLCA,通信区中主要是描述系统当前状态和运行环境的数据。

2)为区别于主语言,SQL语句要加标志。语句前的标志为前缀“EXECSQL”。

3)交互式select语句直接把查询结果在屏幕上显示或打印输出。嵌入式SQL中,称主程序的变量为主变量,查询出的数据要送入主变量交由主语言处理,输入数据也由主变量给出,即嵌入式SQL要通过主变量与主语言交换数据。SQL语句中的主变量前加“:”。45第四十五页,共五十二页,编辑于2023年,星期一嵌入式SQL

如要把学号主变量X=‘S3’的学生情况从数据库查出送给主变量Y、Z、W(姓名、年龄、系),则SQL语句写为:

selectSN,AGE,Dinto:Y,:Z,:WfromSwhereS#=:X;

主变量在说明节中说明,其格式为:

EXECSQLBEGINDECLARESECTION

主变量名类型长度(如:Xchar6) …… EXECSQLENDDECLARESECTION

通过主变量从SQL语句取得数据后即可对其进行处理。

SQL的查询结果经常是一批数据,但一个主变量名一次只能接收一个值。为了协调SQL和主语言的处理节奏,SQL设立了游标(指针),指向一组查询结果,称为游标的活动集。46第四十六页,共五十二页,编辑于2023年,星期一嵌入式SQL游标操作(1)游标定义:

DECLARE游标名CURSORFOR(select子查询)。如:EXECSQLDECLARESSCURSORFOR (selectS#,SN,AGEfromSwhereD=‘计算机系’); 即说明游标SS是查询计算机系学生结果元组的指针。(2)用游标作查询 打开游标:OPENSS。启动游标SS,执行相应的select语句,且游标指向查询结果的第一个元组。 拔动游标:FETCHSSINTO(主变量表)。把游标所指的当前值送给主变量,拨动游标,使之指向查询的下一个元组。 关闭游标:CLOSESS。游标不再有效,FETCH语句不再起作用。

47第四十七页,共五十二页,编辑于2023年,星期一嵌入式SQL

例:用游标SS读出计算机系学生。

EXECSQLOPENSS; EXECSQLFETC

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论