面向对象与数据库技术_第1页
面向对象与数据库技术_第2页
面向对象与数据库技术_第3页
面向对象与数据库技术_第4页
面向对象与数据库技术_第5页
已阅读5页,还剩104页未读 继续免费阅读

下载本文档

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

文档简介

面向对象与数据库技术

O-OandDBMS机电学院杨静萍2013-2014(1)面向对象关系数据库数据库概述实体—关系(ER)模型关系数据库概述对象关系数据库数据仓库技术数据库概述数据库的概念数据库的由来数据库的发展数据库的体系结构数据模型数据库系统相关概念数据库与新技术的发展数据库的概念数据库是长期存储在计算机内有组织的共享的数据的集合。数据库中的数据按一定的数据模型组织、描述和储存。早在60年代,数据库技术作为现代信息系统基础的一门软件学科便应运而生了。现在,数据库技术已成为计算机领域中最重要的技术之一,它是软件学科中一个独立的分支。21世纪是“知识爆炸”的信息社会,如何组织和利用这些庞大的信息和知识已成为衡量一个国家科学技术水平高低的重要标志,多年来在美国等软件业发达国家,各种数据库管理系统(DBMS)的年销售额在各大类软件中居于第二位。在各行业中,数据库技术是应用最为广泛的软件技术之一。数据库的由来纸制系统文件系统数据库系统数据的存储可分为以下几个阶段:

~1950s中期科学计算卡片、纸带程序1950s后期~1960s中后期科学计算磁盘、磁鼓程序+文件1960s中后期~科学计算磁盘、磁鼓程序+数据库数据库的发展数据库发展的初级阶段:网状/层次数据模型Honeywell(阿波罗)/CODASYL/IBM

数据库发展的中级阶段关系数据模型IBM/Oracle

数据库发展的高级阶段对象—关系型数据模型Oracle

数据库系统发展的三个阶段数据库的体系结构内模式Internalschema模式Logicalschema外模式Externalschema三级体系结构模式:即数据库的结构(型)映像映像物理独立性逻辑独立性外模式又称为用户模式,是数据库用户和数据库系统的接口,是数据库用户的数据视图,是数据库用户可以看见和使用的局部数据的逻辑结构和特征的描述。外模式通常是模式的子集。一个数据库通常都有多个外模式。一个应用程序只能使用一个外模式,但同一外模式可为多个应用程序所用。保证数据库安全性的一个有力措施。内模式又称为存储模式,是数据库物理结构和存储方式的描述,是数据在数据库内部的表示方式。一个数据库只有一个内模式。内模式并不涉及物理记录,也不涉及硬件设备。映象是一种对应规则,说明映象双方如何进行转换外模式/模式映像模式/内模式映像

三级模式间的两层映象保证数据具有较高的逻辑独立性和物理独立性一、外模式/模式映象(定义在外模式描述中)作用:把描述局部逻辑结构的外模式与描述全局逻辑结构的模式联系起来。当模式改变时,只要对外模式/模式映象做相应的改变,使外模式保持不变,则以外模式为依据的应用程序不受影响,从而保证了数据与程序之间的逻辑独立性,也就是数据的逻辑独立性。二、模式/内模式映象(定义在模式描述中)作用:把描述全局逻辑结构的模式与描述物理结构的内模式联系起来。当内模式改变时,比如存储设备或存储方式有所改变,只要模式/内模式映象做相应的改变,使模式保持不变,则应用程序就不受影响,从而保证了数据与程序之间的物理独立性。二级映象功能与数据独立性数据库的二级映像保证了数据库外模式的稳定性,从而从底层保证了应用程序的稳定性数据与程序之间的独立性,使得数据的定义和描述可以从应用程序中分离出去。用户不必考虑存取路径等细节,简化了应用程序的编制,减少了应用程序的维护和修改。数据模型现实世界概念数据模型逻辑数据模型独立于任何计算机系统实现的,完全不涉及信息在计算机系统中的表示,只是用来描述某个特定组织所关心的信息结构,如实体联系(ER<P.P.Chen,1976>)模型。一种直接面向数据库中数据的逻辑结构,用来描述存储数据的容器以及在该容器中存储和检索数据的过程,例如:关系/网状/层次/面向对象模型等。数据结构数据操作数据完整性定义实体类型和实体间联系在计算机中的表达和实现;定义对数据库的检索和更新(包括插入、删除、修改)两类操作;定义数据及其联系应具有的制约和依赖规则;物理模型DBMS的任务,普通用户不必考虑物理级的细节层次模型(HierarchicalModel)用树形结构来表示实体及实体之间联系的数据模型。树的结点是记录类型,记录之间的联系通过指针实现。其主要特点有两个:①树的最高结点—根结点,只有一个,该结点没有双亲结点;②根以外的其他结点都与一个且只与一个父结点相连。例如1968年IBM公司研制推的IMS数据库管理系统是第一个基于层次模型的大型商用数据库管理系统。

网状模型(NetworkModel)把用有向图结构表示实体类型及实体之间联系的模型叫网状模型,有向图的结点是记录类型,记录之间的联系是通过指针来实现的,网状模型和层次模型在本质上是一样的。例如1969年,CODASYL组织(ConferenceOnDataSystemLanguage,数据库系统语言协会)推出的DBTG系统,又称CODASYL系统,奠定了网状数据库系统的基本概念、方法和技术。实际的基于网状模型的数据库系统有CullinetSoftwareInc公司的IDMS、Univac公司的DMS1100、Honeywell公司的IDS/2、HP公司的IMAGE。

系老师课程专业学生成绩聘任设置任课开设招收被选选课关系模型(RelationalModel)1970年由美国IBM公司SanJose研究室的研究员E.F.Codd提出的一种数据模型,该模型用二维表格来表示实体和实体间联系,称为关系模型(RelationalModel)。在层次模型和网状模型中,文件中存放的是数据,各文件之间的联系是通过指针来实现。关系模型中,文件存放两类数据:实体、实体间的联系。例如典型的关系数据库系统有ORACLE、SYBASE、DB/2、COBASE、PBASE、EasyBase、DM/2、OpenBase。面向对象模型(OOModel)面向对象的概念早在1968年就出现了,现已使用在数据库技术中。面向对象模型中最基本的概念是对象(object)和类(class)。现实世界中存在着许多复杂的数据结构,例如CAD数据、图形数据、嵌套递归数据等,这样的数据结构关系模型不能表达实现,但面向对象模型却可以方便地表示。

数据库系统相关概念数据(Data)、信息(Information)、数据处理(DataProcessing)数据库(Database,简记为DB)数据库管理系统(DatabaseManagementSystem,简记为DBMS)数据库系统(DatabaseSystem,简记为DBS)数据库与新技术的发展新技术的进展与数据库的发展密不可分Web数据库技术数据挖掘(DataMining)商业智能(BusinessIntelligence)WAP/更广泛无线上网技术801.11802.163G…数据、信息、数据处理数据(Data):现实中的事物的描述都可以称为数据,事物可以用数字、文字、图表、图像、声音等来描述。信息(Information):

数据经过一定的计算

过程得到的新的数据。数据处理(Dataprocessing):从某些已知的数据出发,推导加工出一些新的数据(即信息),数据处理是完成数据转换成信息的方法,包括数据的收集、存储、传递、加工、统计管理、输出等过程。数据、数据处理和信息的关系如图所示。数据处理数据信息数据库存储在磁带、磁盘、光盘或其他外存介质上,按一定结构组织在一起的相关数据的集合。数据对象+数据数据库存储过程(StoredProcedure)表(Table)视图(View)触发器(Trigger)数据对象(dataobject)数据(data)数据库管理系统

DBMS是用户与操作系统间的一层(对数据进行管理的)系统软件:数据定义功能(DDL:DataDefineLanguage)数据操纵功能(DML:DataManipulateLanguage)数据库的运行管理与维护(数据库的建立、数据库的恢复、数据库的并发控制、数据完整性控制、数据安全性控制等)数据库系统DBS是采用数据库技术的计算机系统:数据库(DB);数据库管理系统(DBMS);数据库管理员(DBA);用户;应用程序系统;等。用户用户用户应用系统应用开发工具数据库管理系统操作系统数据库文件数据库管理员实体—关系(ER)模型ER模型的相关概念实体的联系ER图的绘制ER图到关系模型设计的转换ER模型的相关概念⑴实体(entity):客观世界中可相互区别的事物。⑵属性(attribute)、值(value)和域(domain):分别指实体具有的特性、特性的取值以及取值范围。一个实体可具有多个属性,每个属性有各自的值域。

⑶实体集(entityset):属性名完全相同实体的集合。⑷码(key):能惟一标识实体的属性或属性集,有时也称为实体标识符,或简称为键。(5)域(domain):属性的取值范围。实体的联系实体及实体集之间存在的关联,也是实体,有自己的属性。(实例)(1)一对一联系(1:1)(2)一对多或多对一的联系(1:n)、(n:1)(3)多对多的联系(n:m)1:1n:11:mn:m实例图书馆借阅管理系统,读者与图书的联系问题。(1-N?)一位借阅者一次可以借阅多本图书一本图书一次只能被一位借阅者借阅在此情况下满足1-N,可以解决“某本图书当前是否被借出,被谁所借”之类的问题。但如果需求涉及“某本书在2008年被哪些借阅者借过”,1-N能否满足?实例实例1.1:M-N通过考虑借阅时间等因素:一位借阅者可以借阅多本图书一本图书可以借给多位借阅者此联系应该具有联系属性如“借阅流水号”、“借阅时间”和“归还时间”等实例实例1.1:结论联系类型应由需求,即现实世界的语义来确定不同角度的不同用户,看问题可能不同,造成冲突实例实例1.2:三元联系与三个二元联系选课系统,一门课程可以由多位教师开设,一个教师可以开设多门课程,学生可以选多门课程。可以用一个三元联系表示某位学生选了某位教师开设的某门课程选课<学生,教师,课程>可以用三个二元联系:1选课<学生,课程>,2讲授<教师,课程>,3上课<教师,学生>思考:两者有何区别?实例对于三个二元联系的语义:选课<学生,课程>

可知某位学生选了哪些课程,或某门课程被哪些学生所选讲授<教师,课程>

可知某位教师讲了哪些课程,或某门课程由哪些教师所讲上课<教师,学生>

可知某位教师给哪些学生上了课,或某位同学上了哪些教师的课实例一个三元联系的语义:选课<学生,教师,课程>

可知某位同学选了哪些教师所讲的哪些课程,或某位教师给哪些学生讲授了哪些课程,或某门课程被哪些教师所教的学生所选三个二元联系的语义在三元联系中全有,反之则不然。如:“06010034”号同学是否选了“王红”老师上的“C语言”在三个二元联系中找不出!实体的联系除基本联系外,实践中常遇到isa联系和弱实体集联系实体集及其子类的表示A与B是两个实体集,如果B在具有A所具有的全部属性的基础上又具有自己的属性,即B是A的一个子集。称B为A的子类,A为B的超类(借用面向对象的概念),用isa(属于)联系。实例例如,学生与本科生、研究生的联系:学生isaisa研究生本科生实例研究生和本科生除继承了学生的属性外,还各自具有自己的属性。isa联系实际上反映了超类和子类(supper-classandsubclass)间的联系!实体的联系弱实体没有独立标识,依赖于其它实体,需要从其所依赖的强实体借码来标识自己还有两种情况可能形成弱实体集:实体集B是实体集A的组成部分(形成层次结构),B为弱实体集。链接实体是弱实体集。弱实体集B到实体A必然是多对一联系。(标识依赖联系)A应为B的码提供自己的码。实例例如:学院与系即是一种层次结构,系是弱实体集。如下图所示:学院Unitof系ER图的绘制

bookstitleisbnpagetypeyearpricewriteBooknameidbirthplaceauthorsbegin_dateauthors实体集:用矩形表示联系集:菱形表示属性集:椭圆形表示线段:有向边代表“1”,无向边代表“n”注意:联系本身也可能有属性。ER图到关系模型设计的转换bookstitleisbnpageyeartypepriceidauthorsnamebirthplacewriteBookbook(title,isbn,page,type,year,price)author(Id,Name,country,City)writeBook(isbn,authorID,begin_date)1)多对多联系集时,关系的键码是两个相关实体集的键码。2)多对一联系集时,关系的键码是“多”基数实体集的键码。3)一对一联系集时,关系的键码可以是任一个实体集的键码。关系数据库概述关系数据库的基本概念基本关系六性质关系数据库的基本要求关系的完整性关系数据库的范式SQL简介关系数据库的基本概念关系(Relation):即表,一个关系对应一张表。元组(Tuple):表中的一行。属性(Attribute):表中的一列,列的名称即属性名。主键(Key):表中可唯一确定一个元组的某个属性组。域(Domain):属性的取值范围。分量(Component):元组中的一个属性值。关系模式(RelationSchema):对关系的描述。在关系模型中,实体以及实体之间的联系都用关系来表示。

基本关系六性质基本关系六性质列是同质的;不同列可出自同一个域,每一列为一个属性,不同属性(列)给不同属性名;列的顺序可任意交换;任意两个元组不能完全相同;行的顺序可任意交换;每一分量是不可分的数据项。关系数据库的基本要求基于关系模型的关系数据库的基本要素有三部分组成:数据结构:关系操作的对象和结果都是集合。一个表由表结构和记录(数据)两部分组成。一个关系数据库可以包含一个或多个表。定义一个关系数据库,就是对它所包含的所有表的结构进行描述。关系操作集合:查询操作(包括专门的关系数据操作:选择、投影、连接,和传统集合操作中的并、交、差、笛卡尔积等),以及对数据库的检索和更新,包括增、删、改操作。关系的完整性:数据及其联系应具有的制约和依赖规则,包括:实体完整性(主键唯一性)、参照完整性(外键对应性)、用户定义的完整性。数据结构关系操作集合关系的完整性专门的关系数据操作45从关系中找出满足给定条件的行称为选择。选择条件以逻辑表达式给出,使该逻辑表达式的值为真的行被选出.从关系的所有属性中挑选若干属性组成新的关系称为投影。这是对列进行运算,相当于对关系进行垂直分解。联接是将两个关系的属性名拼接在一起,形成一个更宽的关系模式,生成新的关系中包含满足联接条件的元组投影联接选择关系的完整性关系模型的三类完整性:实体完整性:参照完整性:用户定义的完整性:实体完整性实体完整性:每一关系必有一主码,构成主码的各属性值均不能取空值。例如学生选课关系“选修(学号,课程号,成绩)”中,“学号、课程号”为主码,则“学号”和“课程号”都不能取空值,而不是整体不为空。参照完整性参照完整性:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:或者取空值(F的每个属性值均为空值)或者等于S中某个元组的主码值例如,学生选课系统,选课关系的学号按实体完整性要求,不能为空;按参照完整性要求,只能选学生关系中的学号,表示语义关系“只有注册的学生才能选课”。用户定义的完整性用户定义的完整性就是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。关系的并、交、差关系R关系Sidnamesexnationbirthdayclassidhome011001叶海平男汉1986-01-23011山西011002景风男汉1986-06-25011重庆012001华丽佳女汉1987-05-20012大连012002范治华男汉1986-06-12012山东idnamesexnationbirthdayclassidhome012002范治华男汉1986-06-12012山东013001李佳佳女汉1986-03-01013湖南013002史慧敏女汉1986-10-11013湖北014001安静女汉1986-03-23014山西关系的并Union

(R∪S)idnamesexnationbirthdayclassidhome011001叶海平男汉1986-01-23011山西011002景风男汉1986-06-25011重庆012001华丽佳女汉1987-05-20012大连012002范治华男汉1986-06-12012山东013001李佳佳女汉1986-03-01013湖南013002史慧敏女汉1986-10-11013湖北014001安静女汉1986-03-23014山西RS关系的交Intersection

(R∩S)idnamesexnationbirthdayclassidhome012002范治华男汉1986-06-12012山东RSR∩S关系的差Difference

(R-S)idnamesexnationbirthdayclassidhome011001叶海平男汉1986-01-23011山西011002景风男汉1986-06-25011重庆012001华丽佳女汉1987-05-20012大连RSR-S广义笛卡尔积关系R关系Cidnamesexnationbirthdayclassidhome011001叶海平男汉1986-01-23011山西011002景风男汉1986-06-25011重庆012001华丽佳女汉1987-05-20012大连012002范治华男汉1986-06-12012山东idCourse_idgrade011001100182011002100186011001200178广义笛卡尔积

关系R的列数为n(4),关系C的列数为m(此例为3),笛卡尔积RC是一个n+m(7)列的元组集合。每个元组的前n个分量来自R,后m个分量来自C。若R有k1(4)行,C有k2(3)行,则RC有k1k2行(12)。idnamesexnationidCourse_idgrade011001叶海平男汉011001100182011001叶海平男汉011002100186011001叶海平男汉011001200178011002景风男汉011001100182011002景风男汉011002100186011002景风男汉011001200178012001华丽佳女汉011001100182012001华丽佳女汉011002100186012001华丽佳女汉011001200178012002范治华男汉011001100182012002范治华男汉011002100186012002范治华男汉011001200178关系数据库的范式关系必须是规范化的,即关系必须满足一定的规范条件:范式一(1NF):范式二(2NF):范式三(3NF):SQL简介SQL的概念SQL的组成常用的SQL命令关系运算符连接运算符布尔运算符SQL的概念SQL(Structured

QueryLanguage),结构化查询语言。SQL最早是由IBM的圣约瑟研究实验室为其关系数据库管理系统SYSTEMR开发的一种查询语言。SQL语言结构简洁,功能强大,简单易学,自从IBM公司1981年推出以来,SQL语言得到了广泛的应用,1986年,美国ANSI(美国国家标准协会)采用SQL作为关系数据库管理系统的标准语言。SQL的组成SQL语言DMLDDLDCLDQL数据操纵语言DML(DataManipulationLanguage),例如INSERT、UPDATE、DELETE

数据控制语言DCL(DataControlLanguage),例如COMMIT、WORK、ROLLBACK、WORK数据定义语言DDL(DataDefinitionLanguage),例如CREATE、ALTER、DROP

数据查询语言DQL(DataQueryLanguage),例如SELECT常用的SQL命令DDL命令创建表:Createtable删除表:Droptable修改表:AlerttableDQL命令插入行:insert查询数据:select语句更新数据:update语句删除数据:delete语句练习创建表:Createtable格式(例如:)createtable表名(列名1数据类型【约束】,列名2数据类型【约束】,列名3数据类型【约束】)

varchar2(size)存放可变长字符数据,注:Derby数据格式见文档char(size)存放定长字符数据number(l,d)存放数值型数据,l代表总位数,d代表小数点后的位数blob二进制大对象raw(size)纯二进制数据date存放日期long存放可变长字符数据约束

null/notnullprimarykey要求进入该列的值是惟一的,且不为nullforeignkeyunique防止重复值进入该列,但允许为nullcheck限制属性列的输入值创建表:Createtable实例属性:公司名company-name、卡号card-number、初值starting-value、余额value-left、初始密码pin-number。设定:属性company-name可具有多达25个字符,属性value-left及starting-value用元及分来度量。属性card-number属性定义为主码;将pin-number属性定义为惟一码。请用命名约束来书写createtable。CreatetablecallingCard(companyNamevarchar(25),

cardNumbervarchar(20)primarykey,

startingValuedecimal(5,2),

valueLeftdecimal(5,2),

pinNumberchar(12)unique)创建表:Createtable实例属性:公司名company-name、卡号card-number、初值starting-value、余额value-left、初始密码pin-number。设定:属性company-name可具有多达25个字符,属性value-left及starting-value用元及分来度量。属性card-number属性定义为主码;将pin-number属性定义为惟一码。请用命名约束来书写createtable。CreatetablecallingCard(companyNamevarchar(25),

cardNumbervarchar(20)primarykey,

startingValuedecimal(5,2),

valueLeftdecimal(5,2),

pinNumberchar(12)unique);删除表:Droptable格式droptable表名例如:Droptableprogrammer

Createtableprogrammer(empnovarchar2(3)primarykey,namevarchar2(25)notnull,

hiredatedate,projectvarchar2(3),languagevarchar2(15),

tasknonumber(2));empnoNamehiredateprojectLanguageTaskno201John1/1/95NPRVB52789richard08/31/98RNCJAVA11134Andy08/15/94NITC++89Insertintoprogrammer(empno,name,hire-date,project,language,tashno)values(‘201’,’John’,’1995-01-01’,’NPR’,’VB’,52)修改表:Alerttable对已存在的表添加属性列对已存在的表修改属性列从表中删除约束在一个已存在的表中定义主键在一个已存在的表中定义外键对已存在的表添加属性列Altertable表名

add新列名数据类型【约束】;例1:在dep表中,加入一个名为managerName的新列。假设该列可长达25个字符。altertabledepdropcolumnmanagerName

altertabledepaddmanagerNamevarchar(25)对已存在的表修改属性列Altertable表名

altercolumn列名

setdatatype【数据类型/约束】;例1:在dep表中,增加name列大小。

altertabledepaltercolumnnamesetdatatypevarchar(45)从表中删除约束Altertable表名

dropprimarykeyAltertable表名

dropuniqueAltertable表名

drop约束名在一个已存在的表中定义主键使用altertable命令:

altertable表名

add【constraint约束名】primarykey(列1[,列2…])例如:

altertabledepdropprimarykey

altertabledepaddprimarykey(id)在一个已存在的表中定义外键使用altertable命令:

altertable表名

add【constraint约束名】foreignkey(列名)references参照表名(列名);例如定义外键:altertabledepaddforeignkey(regionId)referencesregion(id)插入行:insert格式(例如:)insertinto表名(列1,列2,……列N)values(值1,值2……值N)一条语句只允许一次插入一行。如果写在values子句中的数据项的顺序与createtable命令中表的属性顺序相同,则不用在insertinto子句中写出列名。插入行:insert实例将下列数据插入callingCard表移动123709643550.0012.45987234569871联通5497443544100.0011.37433809835833InsertintocallingCard(companyName,cardNumber,startingValue,valueLeft,pinNumber)values('移动,'1237096435',15.00,11.37,'987234569871')InsertintocallingCard(companyName,cardNumber,startingValue,valueLeft,pinNumber)values('联通','5497443544',100.00,11.37,'433809835833')注:所有的字符数据都放再单引号内。查询数据:select语句Where子句的比较运算符:=,<>,<,<=,>,>=查询表中所有列信息:select*from表名格式:(例1,例2)select列1,列2……列Nfrom表1,……表N【where条件】【orderby列1[asc|desc][列2[asc|desc]…]】查询数据:select语句(例1)例1:使用callingCard表查询移动公司发行的电话卡的卡号和初值。查询显示按卡号从小到大排列。selectcardNumber,startingValuefromcallingCardwherecompanyName='移动'orderbycardNumberasc查询数据:select语句(例2)使用employee表显示在会计部门工作的所有雇员的姓名及职务。

2.按雇员姓名的字母顺序显示上一个查询结果。IDNAMEDEPTTITLE100SmithSalesClerk200JohnMarketingClerk300MartinAccountingClerk400BellAccountingSr.accountant1.Selectname,titlefromemployeewheredept='Accounting‘2.Selectname,titlefromemployeewheredept='Accounting'orderbyname更新数据:update语句例1:将卡号为1237096435的电话卡的公司名改为联通。

updatecallingCardsetcompanyName='联通'wherecardNumber='1237096435'格式:Update表名

set列1=新值1,……列N=新值Nwhere条件删除数据:delete语句(例1)格式:

Deletefrom表名where条件;……删除指定行

Delete表名;…………删除表中所有数据例1:删除callingCard表中联通的所有电话卡记录。

DeletefromcallingCardwherecompanyName='联通'练习:创建emp表,属性如下:列名描述/数据类型Id每个雇员惟一的标识号,最长为3个字符Name雇员的姓名,最长为20个字符Userid雇员登陆系统的ID,最长为8个字符StartDate雇员开始在公司工作的日期ManagerId雇员经理的ID,最长为3个字符Title雇员在公司里的职务,最长为25个字符DeptId雇员的部门ID,最长为3个字符Salary雇员的工资,共11位数,包括2位小数Commision雇员赢得的佣金百分率,共4位数,包括2位小数练习:创建emp表,属性如下:

1.根据emp表,列出所有雇员的姓名、ID及职务,要求不同职务按字母顺序排列,对相同职务的雇员,按其姓名的降序排列。2.给在部门41工作的所有雇员提高工资200元。对结果加以验证。万一出错,确保所有的变化均能取消。如果操作有误,用户如何取消这些变化。Selectname,id,titleFromempOrderbytitle,name

descupdateempsetsalary=salary+200wheredepid=41select*fromempwheredepid=41关系运算符使用distinct取消重复的行select[all|distinct]列1,列2……列Nfrom表1,……表N【where条件】【orderby列1[asc|desc][列2[asc|desc]…]】;例:在emp表中,有多少不同的职务?selectdistincttitlefromemp连接运算符连接(join)运算允许我们将来自两个或多个表的数据形成一个单一表。主要的连接类型:

等值连接:两表通过共同的等值列而连接

自连接:一个表与其本身的连接

外连接:两个表之间的连接,决定一个表的所有行在另一表中没有匹配的元组。等值连接select表1.列1,表1.列2…,表2.列1,…表2.列Nfrom表1,表2where表1.列名=表2.列名;如果在两个表中没有相同的列,则没有必要在列名前加表名。例1等值连接:例1列名描述/数据类型Id每个部门惟一的标识号,最长为3个字符Name部门名称,最长为20个字符RegionId部门所在的区域id,最长为3个字符例1:查询所有雇员的姓名及所在部门名称。

S,Fromemp,depWhereemp.depid=dep.id;使用表别名:

SelectA.name,B.nameFromemp

A,depBWhereA.depid=B.id自连接自连接是一个表与其自身的连接例1:显示每一个雇员的名字及他或她的管理者的名字。

selectE.nameasemployee,

M.nameasmanagerfromemp

E,empMwhereM.id=E.managerId外连接假设有两个表的连接,有时我们想知道不满足其中一个表指定条件的另一个表的行。例如,我们想知道还没有管理者的雇员。

select表1.列1,表1.列2…,表2.列1,…表2.列Nfrom表1,表2where表1.列名(+)=表2.列名;用于计算在表1中所有与表2不匹配的行的外连接

select表1.列1,表1.列2…,表2.列1,…表2.列Nfrom表1,表2where表1

温馨提示

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

评论

0/150

提交评论