数据库课件 第三章

上传人:壹****1 文档编号:569505608 上传时间:2024-07-30 格式:PPT 页数:338 大小:670KB
返回 下载 相关 举报
数据库课件 第三章_第1页
第1页 / 共338页
数据库课件 第三章_第2页
第2页 / 共338页
数据库课件 第三章_第3页
第3页 / 共338页
数据库课件 第三章_第4页
第4页 / 共338页
数据库课件 第三章_第5页
第5页 / 共338页
点击查看更多>>
资源描述

《数据库课件 第三章》由会员分享,可在线阅读,更多相关《数据库课件 第三章(338页珍藏版)》请在金锄头文库上搜索。

1、第第3章章关系数据库标准语言关系数据库标准语言SQLl3.1SQL概述概述l3.2学生学生课程数据库课程数据库l3.3数据定义数据定义l3.4数据查询数据查询l3.5数据更新数据更新l3.6视图视图l3.7小结小结户枉缩涌析咸蔑姜坎顿菲准袖挑窟镊烤觉灸赊奄旬谓税流睦谎掘采雏服斋数据库课件第三章数据库课件第三章关系数据库标准语言关系数据库标准语言SQL(续续)l结构化查询语言,是关系数据库的标准结构化查询语言,是关系数据库的标准语言语言l是一个通用的、功能极强的关系数据库是一个通用的、功能极强的关系数据库语言语言华傈缸演擂哥谢陛劲锹咱肩涟决篷您仆拳便妆胯流庸播完胀挂吝线钮根丛数据库课件第三章数据

2、库课件第三章第第3章章关系数据库标准语言关系数据库标准语言SQLl3.1SQL概述概述l3.2学生学生课程数据库课程数据库l3.3数据定义数据定义l3.4数据查询数据查询l3.5数据更新数据更新l3.6视图视图l3.7小结小结嘶航荔忌赏傈败蓟幌愿漏止哺煞婉更另殃圃豁伯漾龙签旁伏刃邻件腐功穗数据库课件第三章数据库课件第三章3.1SQL概概述述l3.1.1SQL的产生与发展的产生与发展l3.1.2SQL的特点的特点l3.1.3SQL的基本概念的基本概念宾游捣哼逆靠岸治兔影腥清蜗划略浚顿奔揽敷巡盲深孤握杏开扣桨剔脂耕数据库课件第三章数据库课件第三章3.1SQL概概述述l3.1.1SQL的产生与发展的

3、产生与发展l3.1.2SQL的特点的特点l3.1.3SQL的基本概念的基本概念乡陇正韩知毁岿毗帽秸肌蚊帽咙熄症橙咬镣亦俄撕主饺洁曾纲戈砖盆沤襟数据库课件第三章数据库课件第三章3.1.1SQL的的产生与生与发展展lSQL语言语言(StructuredQueryLanguage)1974年由年由Boyce和和Chamberlin提出提出1975年年1979年年IBM公公司司在在SystemR原原型型系系统上实现统上实现是是关关系系数数据据库库的的标标准准语语言言,是是数数据据库库领领域域中中一个主流语言一个主流语言狂巢蒙廷判沃岂叛庇绿恫沈胀养秽埋舒西剐恕废祥坞嫉幼辙盼执傅耿软腕数据库课件第三章数据

4、库课件第三章SQL的的产生与生与发展展(续续)lSQL标准标准SQL-86第一个第一个SQL标准标准由由 美美 国国 国国 家家 标标 准准 局局 ( American NationalStandardInstitute,简称,简称ANSI)公布)公布1987年年 国国 际际 标标 准准 化化 组组 织织 ( InternationalOrganizationforStandardization,简简称称ISO)通通过过SQL-89SQL-92SQL99SQL2003滨皂蹿灰宜晦矿钞囤扁挽急显獭哼烂析万酉椿磺烯附欣椽引悉捣擎闭院撼数据库课件第三章数据库课件第三章3.1SQL概概述述l3.1.1

5、SQL的产生与发展的产生与发展l3.1.2SQL的特点的特点l3.1.3SQL的基本概念的基本概念祷狞惩啤嫁啃嘉雷眩全钉形抚怖斋凋渺碘柯津歹烧糕滦他孕识泰陇微赖膊数据库课件第三章数据库课件第三章3.1.2SQL的特点的特点l综合统一综合统一l2.高度非过程化高度非过程化l3.面向集合的操作方式面向集合的操作方式l4.同一种语法结构提供多种使用方式同一种语法结构提供多种使用方式l5.语言简捷,易学易用语言简捷,易学易用伊殊窘乳剃撩幅嫌响烦雪棍冕话蛔污基皇乳耐赚敷骚刑赴澡谦汝存膏笆铆数据库课件第三章数据库课件第三章综合统一综合统一lSQL语语言言集集数数据据查查询询、数数据据定定义义语语言言DDL

6、、数数据据操操纵纵语语言言DML、数数据据控控制制语语言言DCL的的功功能于一体能于一体l非关系模型的数据语言非关系模型的数据语言模式数据定义语言(模式模式数据定义语言(模式DDL)外外模模式式数数据据定定义义语语言言(外外模模式式DDL或或子子模模式式DDL)与数据存储有关的描述语言(与数据存储有关的描述语言(DSDL)数据操纵语言(数据操纵语言(DML)灸镀粪睬贰架沼锄瑚觉田搔谷址扔凿孜斯暑珐们久乡穗茶郡徒挂瞳疯田休数据库课件第三章数据库课件第三章2.高度非过程化高度非过程化l用用户户只只需需提提出出“做做什什么么”,而而不不必必指指明明“怎么做怎么做”l存存取取路路径径的的选选择择以以及

7、及SQL语语句句的的操操作作过过程程由由系系统统自自动动完完成成。大大大大减减轻轻了了用用户户负负担,而且有利于提高数据独立性。担,而且有利于提高数据独立性。澡惕转肯锅勘茄下揣帖李宗俯暖创浙伏片讣缅家兼强全峨确岔冤夕捧贫郡数据库课件第三章数据库课件第三章3.面向集合的操作方式面向集合的操作方式lSQL语言采用集合操作方式语言采用集合操作方式 操作对象、查找结果可以是元组的集合操作对象、查找结果可以是元组的集合 一一次次插插入入、删删除除、更更新新操操作作的的对对象象可可以以是是元组的集合元组的集合l非非关关系系数数据据模模型型采采用用的的是是面面向向记记录录的的操操作方式,操作对象是一条记录。

8、作方式,操作对象是一条记录。总鬃粥淀屈婶母蝉律准氢赡餐桨巫珐岛亡峻段熟施叮埔宗垃龚两必盼近病数据库课件第三章数据库课件第三章4.同一种语法结构提供多种使用方式同一种语法结构提供多种使用方式l独立语言独立语言能能够够独独立立地地用用于于联联机机交交互互的的使使用用方方式式,用用户户可可以以在在终终端端键键盘盘上上直直接接键键入入SQL命命令令对对数数据据库进行操作库进行操作l嵌入式语言嵌入式语言能能够够嵌嵌入入到到高高级级语语言言(例例如如C,COBOL,FORTRAN,PL/1)程程序序中中,供供程程序序员员设设计计程序时使用。程序时使用。两种不同使用方式下,两种不同使用方式下,SQL语言的语

9、法结构基语言的语法结构基本一致本一致迟缮绎簧突谰煤晃捅娥掉纵化庞嗜巨蠕槐锤辗曼惶喻碧砚霸墅贸生典艰慰数据库课件第三章数据库课件第三章5.语言简捷,易学易用语言简捷,易学易用显胃寞磐恍呻闭袱皂东鼎谣焉予锣夺娃慧壕帮锄焰凛禾啃切喧焰蒜括弘百数据库课件第三章数据库课件第三章3.1SQL概概述述l3.1.1SQL的产生与发展的产生与发展l3.1.2SQL的特点的特点l3.1.3SQL的基本概念的基本概念难把姐肺髓赘拦貉戎升奋饭偿嘎强卖咽贬墅洱鲜绪顾舜畏里签绑介澜妙勇数据库课件第三章数据库课件第三章3.1.3SQL语言的基本概念语言的基本概念禁才鹤呜峡暗脯炔啡菌侈与姓罩御凭辗客球胳威涛折胖扯玉困尼彻倾沙

10、笋数据库课件第三章数据库课件第三章SQL语言的基本概念(续)语言的基本概念(续)l用户用用户用SQL语言对基本表和视图进行操作语言对基本表和视图进行操作l基本表基本表本身独立存在的表,一个关系对应一个表本身独立存在的表,一个关系对应一个表一个(或多个)基本表对应一个存储文件一个(或多个)基本表对应一个存储文件一个表可以带若干索引,索引也存放在存储文件中一个表可以带若干索引,索引也存放在存储文件中l存储文件存储文件存储文件的逻辑结构组成了关系数据库的内模式存储文件的逻辑结构组成了关系数据库的内模式存储文件的物理结构是任意的,对用户是透明的存储文件的物理结构是任意的,对用户是透明的l视图视图从一个

11、或几个基本表或视图导出的表从一个或几个基本表或视图导出的表是虚表,只存放视图的定义而不存放对应数据是虚表,只存放视图的定义而不存放对应数据毋稽坍冉钢俯张也泵眠变玉蹄坷幌队获投秸样韶神疑歪科嘶踏肖猩耿秃板数据库课件第三章数据库课件第三章第第3章章关系数据库标准语言关系数据库标准语言SQLl3.1SQL概述概述l3.2学生学生课程数据库课程数据库l3.3数据定义数据定义l3.4数据查询数据查询l3.5数据更新数据更新l3.6视图视图l3.7小结小结簧懦性顽斧肪孩熏室檀识均康谜棘掐陇塔榔积猩拖棘交丢娩就触藏凶膊联数据库课件第三章数据库课件第三章3.2学生学生课程数据库课程数据库l学生学生课程数据库中

12、包括以下课程数据库中包括以下3个表:个表:-学生表:学生表:Student(Sno,Sname,Ssex,Sage,Sdept)-课程表:课程表:Course(Cno,Cname,Cpno,Ccredit)-学生选课表:学生选课表:SC(Sno,Cno,Grade)关系的主码加下划线表示。关系的主码加下划线表示。豆妨术绒捌织菲冶淳惰预踏柄铰儿炙鼠污蹭筐痘溜苹屡下挣狭涩女笺乒猫数据库课件第三章数据库课件第三章学生学生课程数据库(续)课程数据库(续)学生表:学生表:学号学号Sno姓名姓名Sname性别性别Ssex年龄年龄Sage所在系所在系Sdept200215121李勇李勇男男20CS20021

13、5122刘晨刘晨女女19CS200215123王敏王敏女女18MA200215125张立张立男男19IS裂每筛茨湛擒求描铭祈爪司馆橱泪祸忻骏袭卧褐炙威培试肛锑衬驯除恫址数据库课件第三章数据库课件第三章学生学生课程数据库(续)课程数据库(续)课程表:课程表:课程号课程号Cno课程名课程名Cname先行课先行课Cpno学分学分Ccredit1数据库数据库542数学数学23信息系统信息系统144操作系统操作系统635数据结构数据结构746数据处理数据处理27PACAL语言语言64贬训蒙卓贰粕车聘辞候骡腑虎岗查咖儒力犊贩企库崔悔蕊诣元峡勉运该蝗数据库课件第三章数据库课件第三章学生学生课程数据库(续)课

14、程数据库(续)学生选课表:学生选课表:学号学号Sno课程号课程号Cno成绩成绩Grade200215121192200215121285200215121388200215122290200215122380任崖涎畴福回夹败拓岸盂迪知扑挎按赛曹养些通契胁包嘶蛙茎拧娇泪哲刻数据库课件第三章数据库课件第三章第第3章章关系数据库标准语言关系数据库标准语言SQLl3.1SQL概述概述l3.2学生学生课程数据库课程数据库l3.3数据定义数据定义l3.4数据查询数据查询l3.5数据更新数据更新l3.6视图视图l3.7小结小结糯叶金坦逛糠抿晒页康绅绳攒灶倾咱宗摘含站糠密搀瞥衷腆洗骡岂笺泽室数据库课件第三章数

15、据库课件第三章数据定义概述数据定义概述lSQL的数据定义功能的数据定义功能定义模式定义模式创建模式创建模式删除模式删除模式定义表定义表创建表创建表删除表删除表修改表定义修改表定义悟充掖殊链假语矛砰悬媳泣娠驴垢炊慢涌腑拎飘乖报凯酋恤荷亲滑尝屠麓数据库课件第三章数据库课件第三章数据定义概述数据定义概述(续续)lSQL的数据定义功能(续)的数据定义功能(续)定义视图定义视图(外模式外模式)创建视图创建视图删除视图删除视图间接修改视图定义:删除间接修改视图定义:删除+创建创建定义索引定义索引(内模式内模式)创建索引创建索引删除索引删除索引间接修改索引定义:删除间接修改索引定义:删除+创建创建川掉瞻郧江

16、儡闸照驴塘恋证烤豹比斩刷聋障飞啄骗胞珊费迫全昔椽嫩淀决数据库课件第三章数据库课件第三章数据定义概述数据定义概述(续续)表表3.2SQL的数据定义语句的数据定义语句操作操作对象对象操作方式操作方式创建创建删除删除修改修改模式模式CREATESCHEMADROPSCHEMA表表CREATETABLEDROPTABLEALTERTABLE视图视图CREATEVIEWDROPVIEW索引索引CREATEINDEXDROPINDEX奶翁弯乌鬃啡柄骚芝舟赂绵聊测港铱骄瓷拦晴简巨肪鸭佣燕温斯蜘绷狮滥数据库课件第三章数据库课件第三章3.3数数据据定定义义l3.3.1模式的定义与删除模式的定义与删除l3.3.2

17、基本表的定义、删除与修改基本表的定义、删除与修改l3.3.3索引的建立与删除索引的建立与删除肋熄受烟挠彼长缀帚挣畜压测丽硷访泅脸蛇拌频伪奥珠聋播将杂岩秉给夺数据库课件第三章数据库课件第三章3.3数数据据定定义义l3.3.1模式的定义与删除模式的定义与删除l3.3.2基本表的定义、删除与修改基本表的定义、删除与修改l3.3.3索引的建立与删除索引的建立与删除皑拙聊徐析庙哺髓迟潍澳颜璃幌怒东拴渝羔啪馒宜其诈奢攘一萝谷用尘很数据库课件第三章数据库课件第三章3.3.1模式的定义与删除模式的定义与删除l1.定义模式定义模式l2.删除模式删除模式蚊袋菌婆菜嫂呐租荡音澎骨晒藐邪拱识顺躯歪车蝗拭瘩怜跪履代翠姜

18、麻酋数据库课件第三章数据库课件第三章3.3.1模式的定义与删除模式的定义与删除l1.定义模式定义模式l2.删除模式删除模式竿粱穗蛋冒芯棚魏帝据悦袒垫瞅邵妇扰繁疹遁皑炕脐粱枝逐历竹萎耳毯篷数据库课件第三章数据库课件第三章一、定义模式一、定义模式l模式定义语句为:模式定义语句为:CREATESCHEMAAUTHORIZATION-若没有指定若没有指定,则,则隐含为隐含为-要创建模式,调用该命令的用户必须拥有要创建模式,调用该命令的用户必须拥有DBA权限,权限,或者获得了或者获得了DBA授予的授予的CREATESCHEMA的权限的权限窒水勺骄裸绅灼塘检宰拭余览离实真埔建郴膳剔裤辑恿另甚菌坟牵徒对煞数

19、据库课件第三章数据库课件第三章定义模式(续)定义模式(续)例例1定义一个学生定义一个学生课程模式课程模式STCREATESCHEMA“S-T”AUTHORIZATIONWANG;为用户为用户WANG定义了一个模式定义了一个模式S-T例例2CREATESCHEMAAUTHORIZATIONWANG;语句没有指定语句没有指定,则,则隐含为用户名隐含为用户名WANG昔皇耻海堆尧植净娄抉匹举芥忙评副隘丈咽弘欺婉潮惹仕要逢叔拟戳冻嘛数据库课件第三章数据库课件第三章定义模式(续)定义模式(续)l定义模式实际上定义了一个命名空间,在这个定义模式实际上定义了一个命名空间,在这个空间中可以进一步定义该模式包含的

20、数据库对空间中可以进一步定义该模式包含的数据库对象,例如基本表、视图、索引等象,例如基本表、视图、索引等l目前,在目前,在CREATESCHEMA中可以接受中可以接受CTEATETABLE,CREATEVIEWTGRANT子句。即可以在创建模式的同时在这个模式定子句。即可以在创建模式的同时在这个模式定义中进一步创建基本表、视图,定义授权义中进一步创建基本表、视图,定义授权CREATESCHEMAAUTHORIZATION会邦棍立兄贱佳陌处开矛状玫援谨陕掉魄峨剁梆慧缅馈幅釜心景岁剑凹唆数据库课件第三章数据库课件第三章定义模式(续)定义模式(续)例例3CREATESCHEMATESTAUTHORI

21、ZATIONZHANGCREATETABLETAB1(COL1SMALLINT,COL2INT,COL3CHAR(20),COL4NUMERIC(10,3)COL5DECIMAL(5,2);为用户为用户ZHANG创建了一个模式创建了一个模式TEST,并且在其中定,并且在其中定义了一个表义了一个表TAB1.秃刑噬俯坊吝牡彻怠访奠跟蕊酿语你帚草湃姬叮卫嫁曾刷找剩岿豺绎章嘎数据库课件第三章数据库课件第三章3.3.1模式的定义与删除模式的定义与删除l1.定义模式定义模式l2.删除模式删除模式争猩摘翱榆耻涯顽婿制擞砰牌棠庐湾肚擞札博挣副诲骄必躬交放郡釉扣溢数据库课件第三章数据库课件第三章二、删除模式二、

22、删除模式l删除模式语句如下删除模式语句如下:DROPSCHEMA-选择了选择了CASCADE(级联),表示在删除模式的同(级联),表示在删除模式的同时把该模式中所有的数据库对象全部一起删除。时把该模式中所有的数据库对象全部一起删除。-选择了选择了RESTRICT(限制),表示若该模式中已经(限制),表示若该模式中已经定义了下属的数据库对象,则拒绝该删除语句的执行,定义了下属的数据库对象,则拒绝该删除语句的执行,只有当该模式中没有任何下属的对象时才能执行删除只有当该模式中没有任何下属的对象时才能执行删除语句。语句。五添妒弯双釜彬生灾厄轧兵极沁莆惦星浦斋味坏颜泻猿铬月妨妈剃忙咬恫数据库课件第三章数

23、据库课件第三章删除模式(续)删除模式(续)例例4DROPSCHEMAZHANGCASCADE该语句删除了模式该语句删除了模式ZHANG,同时该模,同时该模式中已经定义的表式中已经定义的表TAB1也被删除了。也被删除了。智卉花办轩轻锻触概吝齐忍枕野肉镜厕乔坠赢蝇欧伍榷适彝任劝蓄宋葛帆数据库课件第三章数据库课件第三章3.3数数据据定定义义l3.3.1模式的定义与删除模式的定义与删除l3.3.2基本表的定义、删除与修改基本表的定义、删除与修改l3.3.3索引的建立与删除索引的建立与删除恿虑舜秧洋蚂侥蚂财今攒吏附掉承探八机壶娠吻核信雹篇命虎压兆纺铲屠数据库课件第三章数据库课件第三章3.3.2基本表的定

24、义、删除与修改基本表的定义、删除与修改一、定义基本表一、定义基本表二、数据类型二、数据类型三、模式与表三、模式与表四、修改基本表四、修改基本表五、删除基本表五、删除基本表竭冶请杉吮截崔衡洼侣席蓖遵精丧欺钵牙藐份艰景卫啦豪怪蚂圆膳丰劣售数据库课件第三章数据库课件第三章3.3.2基本表的定义、删除与修改基本表的定义、删除与修改一、定义基本表一、定义基本表二、数据类型二、数据类型三、模式与表三、模式与表四、修改基本表四、修改基本表五、删除基本表五、删除基本表泼认意缠媒鲜好吮篙貌氧侵鄙劝乔榨丈势但军盔准瘫允囱恢尽哼违率初建数据库课件第三章数据库课件第三章一、定义基本表一、定义基本表l语句格式语句格式C

25、REATETABLE(,););:所要定义的基本表的名字:所要定义的基本表的名字:组成该表的各个属性(列):组成该表的各个属性(列):涉涉及及相相应应属属性性列列的的完完整整性性约束条件约束条件:涉及一个或多个属性列的:涉及一个或多个属性列的完整性约束条件完整性约束条件邦掣事眨讳封悦呵语斋漱辈窖津棚抡嗓翌滓序辊皿增益马媳门茫萧援哀盟数据库课件第三章数据库课件第三章定义基本表(续)定义基本表(续)l表级完整性约束与列级完整性约束表级完整性约束与列级完整性约束l常用完整性约束常用完整性约束主码约束:主码约束:PRIMARYKEY参照完整性约束:参照完整性约束:FOREIGNKEY属性列名属性列名R

26、EFERENCES表名(列名)表名(列名)唯一性约束:唯一性约束:UNIQUE非空值约束:非空值约束:NOTNULL取值约束:取值约束:CHECK馆搀檬览皑诣寞喝守垮苯哺起豹舌驯溃珊引梗捞度匿妮认蒙绥砾琼嫁谰肆数据库课件第三章数据库课件第三章例题例题例例5 5 建建立立一一个个“学学生生”表表StudentStudent,它它由由学学号号SnoSno、姓姓名名SnameSname、性性别别SsexSsex、年年龄龄SageSage、所所在在系系SdeptSdept五五个个属属性性组组成成。其其中中学学号号不不能能为为空空,值是唯一的,并且姓名取值也唯一。值是唯一的,并且姓名取值也唯一。 CRE

27、ATETABLEStudent(SnoCHAR(9)PRIMARYKEY,SnameCHAR(20)UNIQUE,SsexCHAR(2),SageSMALLINT,SdeptCHAR(20);躯射仓植樱乾饱腕钉圭违燥伎告饶筹晾铁油埂抹油沉妈竿拜辊擞表垮径蒲数据库课件第三章数据库课件第三章例题(续)例题(续)例例6 6 建建立立一一个个“课课程程”表表Course,Course,由由课课程程号号Cno,Cno,课课程程名名Cname,Cname,先先行行课课CpnoCpno和和学学分分CcreditCcredit组组成成,CnoCno为主码。为主码。 CREATE TABLE CourseCRE

28、ATE TABLE Course (Cno CHAR(4) PRIMARY KEY, (Cno CHAR(4) PRIMARY KEY, Cname CHAR(40), Cname CHAR(40), Cpno CHAR(4), Cpno CHAR(4), Ccredit SMALLINT, Ccredit SMALLINT, FOREIGN KEY Cpno REFERENCES Course(Cno); FOREIGN KEY Cpno REFERENCES Course(Cno);涩技藏擂吁冯奈觉垂画贰旺屏慌铝用涯盂蛾则正富什缅画田驱港棵弯饥酚数据库课件第三章数据库课件第三章例题例题(续

29、)(续)例例7 7 建立一个建立一个“学生选课学生选课”表表SCSC,它由学号,它由学号SnoSno、课程号课程号CnoCno,修课成绩,修课成绩GradeGrade组成,其中组成,其中(Sno, (Sno, Cno)Cno)为主码。为主码。CREATE TABLE SC(CREATE TABLE SC( Sno CHAR(9) , Sno CHAR(9) , Cno CHAR(4) , Cno CHAR(4) , Grade SMALLINT, Grade SMALLINT, PRIMARY KEY (Sno, Cno), PRIMARY KEY (Sno, Cno), FOREIGN KE

30、Y (Sno) REFERENCES Student(Sno), FOREIGN KEY (Sno) REFERENCES Student(Sno), FOREIGN KEY (Cno) REFERENCES Course(Cno); FOREIGN KEY (Cno) REFERENCES Course(Cno);光较宁七铰阶递宛狡卯非眠肉摔守嫂戊讽尽帝皂尘李哮蔡肌言额粪禹家卒数据库课件第三章数据库课件第三章3.3.2基本表的定义、删除与修改基本表的定义、删除与修改一、定义基本表一、定义基本表二、数据类型二、数据类型三、模式与表三、模式与表四、修改基本表四、修改基本表五、删除基本表五、删除基

31、本表挎念思癌谎婿栈荫陌抱得锁丁瑟肾游酋拯施皖貌伙访臀粉狰液症弊梳树履数据库课件第三章数据库课件第三章二、数据类型二、数据类型l关系模型中每一个属性来自一个域,它关系模型中每一个属性来自一个域,它的取值必须是域中的值的取值必须是域中的值lSQL中域的概念用数据类型来实现。定中域的概念用数据类型来实现。定义表的各个属性时需要指明其数据类型义表的各个属性时需要指明其数据类型及长度及长度l一个属性选用哪种数据类型要根据实际一个属性选用哪种数据类型要根据实际情况来决定,般要从两个方面考虑,一情况来决定,般要从两个方面考虑,一是数值范围,二是要做哪些运算是数值范围,二是要做哪些运算注硝瞅鸥恫漏殆姿瞩聋篓阂

32、后勋帆疏伯扦妨缸禽兵瞩踌钥柜胁旷凸实吧拨数据库课件第三章数据库课件第三章数据类型(续)数据类型(续)lSQL提供的主要数据类型,如下所示:提供的主要数据类型,如下所示:数据类型数据类型含义含义CHAR(n)长度为长度为n的定长字符串的定长字符串VARCHAR(n)最大长度为最大长度为n的变长字符串的变长字符串INT长整数(也可以写作长整数(也可以写作INTEGER)SMALLINT短整数短整数NUMERIC(p,d)定点数,由定点数,由p位数字组成,小数后面有位数字组成,小数后面有d位数字位数字REAL取决于机器精度的浮点数取决于机器精度的浮点数DoublePrecision取决于机器精度的双

33、精度浮点数取决于机器精度的双精度浮点数FLOAT(n)浮点数,精度至少为浮点数,精度至少为n位数字位数字DATE日期,包含年、月、日,格式为日期,包含年、月、日,格式为YYYY-MM-DDTIME时间,包含一日的时、分、秒,格式为时间,包含一日的时、分、秒,格式为HH:MM:SS匿丙菌毁蓑款绷坡膝蛤翼阵梧击塔漂驱拦噎龙陛儿显仪碳咙覆枫委丰誓糟数据库课件第三章数据库课件第三章数据类型(续)数据类型(续)l数据类型数据类型不同的数据库系统支持的数据类型不完全相同不同的数据库系统支持的数据类型不完全相同IBMDB2SQL支持的数据类型支持的数据类型SMALLINT半字长二进制整数。半字长二进制整数。

34、INTEGER或或INT全字长二进制整数。全字长二进制整数。DECIMAL(p,q)压缩十进制数,共压缩十进制数,共p位,其中小数位,其中小数或或DEC(p,q)点后有点后有q位。位。0qp15,q=0时可以省略不写。时可以省略不写。FLOAT双字长浮点数双字长浮点数。儒膜痒跟骂雹向剔帽呀旋豆盾霜任戈存扭信韭祷耻昔篱擞腹肆熊乒映釜君数据库课件第三章数据库课件第三章数据类型(续)数据类型(续)l数据类型(续)数据类型(续)CHARTER(n)长度为长度为n的定长字符串。的定长字符串。或或CHAR(n)VARCHAR(n)最大长度为最大长度为n的变长字符串。的变长字符串。GRAPHIC(n)长度为

35、长度为n的定长图形字符串。的定长图形字符串。VARGRAPHIC(n)最大长度为最大长度为n的变长图形字符串。的变长图形字符串。DATE日期型,格式为日期型,格式为YYYY-MM-DD。TIME时间型,格式为时间型,格式为HH.MM.SS。TIMESTAMP日期加时间。日期加时间。裙豫竭血邢芬右煤锅困基宠睁略陌担斋跋桌立双脸痘庭钨旨嘶锑钒慈坊沁数据库课件第三章数据库课件第三章数据类型(续)数据类型(续)ORACLESQL支持的数据类型支持的数据类型VARCHAR2(n)CHAR(n)NUMBER(p,q)DATELONGRAW或或LONGRAW警情摹惑闷颈敏禽渡霄佛睫览柬梗星年癣她盆绩谢杂芳仆

36、洪冕卵轩景送商数据库课件第三章数据库课件第三章数据类型(续)数据类型(续)KingBaseISQL支持的数据类型支持的数据类型字符串类型字符串类型CHARACTER(长度长度)最大长度为最大长度为256个字符个字符CHAR(长度长度)CHARACTIC的同义的同义词词CHARACTERVARYING(n)VARCHAR(n)TEXT大文本大文本头辛瞒美厚该奖闺澡执慧旱事柔稻计欣遣八炉坐妄缄芒俩杂齐毛渍双茧跟数据库课件第三章数据库课件第三章数据类型(续)数据类型(续)KingBaseISQL支持的数据类型支持的数据类型精确数值类型精确数值类型NUMERIC(精精度度,标标度度)标标度度值值应应小

37、小于于精精度度值值标度缺省为标度缺省为0,精度缺省为精度缺省为10DECIMAL(精度精度,标度标度)DEC(精度精度,标度标度)DECIMAL的同义词的同义词INTEGERINTINTEGER的同义词的同义词SMALLINT蓬毗铅嗡豁辜雍域屹氦狸绚彝溉温也详孪剐烂妓圭撇广祟衡虐沛孜惮伊跳数据库课件第三章数据库课件第三章数据类型(续)数据类型(续)KingBaseISQL支持的数据类型支持的数据类型近似数值类型近似数值类型FLOAT(精度精度)可选精度浮点数可选精度浮点数REAL单精度浮点数单精度浮点数DOUBLEPRECISION双精度浮点数双精度浮点数DOUBLE同义词同义词证莫衅陕遏铁农

38、锣瓜网疮授广匿窘柠尉弦虱蛹肤跑临铬蓖用乳徐决要遇最数据库课件第三章数据库课件第三章数据类型(续)数据类型(续)KingBaseISQL支持的数据类型支持的数据类型日期时间类型日期时间类型DATE日期日期TIMEWITHTIMEZONE时间时间TIMETZTIMEWITHOUTTIMEZONETIMETIMESTAMPWITHTIMEZONE日期和时间日期和时间TIMESTAMPTZTIMESTAMPWITHOUTTIMEZONETIMESTAMPINTERVAL通用的时间间隔通用的时间间隔笔见翁挂柏肋颈蒸响哎帆碴浮槐夯坏渣第坏腔拽惠岁佣伙拧轨洒吭舞鼎哄数据库课件第三章数据库课件第三章数据类型(

39、续)数据类型(续)KingBaseISQL支持的数据类型支持的数据类型位串位串BIT(n)定长位串定长位串BITVARYING(n)变长位串变长位串BINARYLARGEOBJECT二进制大对象二进制大对象BLOBBINARYLARGEOBJECT的同义词的同义词BYTEA二进制位串二进制位串布尔型布尔型BOOLEAN逻辑布尔量逻辑布尔量BOOLBOOLEAN的同义词的同义词怀纹笨茸稿铂亚成掸尤图转敬规骂带性较蔽伏国闲屯雏驴瑟否住篙帮瞅雌数据库课件第三章数据库课件第三章3.3.2基本表的定义、删除与修改基本表的定义、删除与修改一、定义基本表一、定义基本表二、数据类型二、数据类型三、模式与表三、

40、模式与表四、修改基本表四、修改基本表五、删除基本表五、删除基本表煽剑锦啡赖蛆绸碗寒裕助删征诈捆墩亡敷变导裂能恕詹阳裂吧泪刷橙蜘傲数据库课件第三章数据库课件第三章三、模式与表三、模式与表l每一个基本表都属于某一个模式,一个模式包每一个基本表都属于某一个模式,一个模式包含多个基本表含多个基本表l定义基本表时定义它所属的模式有三种方法:定义基本表时定义它所属的模式有三种方法:- -方法一:在表名中明显地给出模式名。如:方法一:在表名中明显地给出模式名。如:CREATETABLE“S-T”.Student(); - - 方法二:在创建模式语句中同时创建表,如例方法二:在创建模式语句中同时创建表,如例3

41、 3所所示。示。 - - 方法三:设置所属的模式,这样在创建表时表名中方法三:设置所属的模式,这样在创建表时表名中不必给出模式名不必给出模式名欢功占幂雀讯伞车畜钙曝涨秀娩甄晦吞芍检萌须钧晋茶颤议断点活沟祥笋数据库课件第三章数据库课件第三章模式与表(续)模式与表(续)l当用户创建基本表时若没有指定模式,系统根当用户创建基本表时若没有指定模式,系统根据搜索路径来确定该对象所属的模式据搜索路径来确定该对象所属的模式l搜索路径包含一组模式列表,搜索路径包含一组模式列表,RDBMS会使用会使用模式列表中第一个存在的模式作为数据库对象模式列表中第一个存在的模式作为数据库对象的模式名的模式名l显示当前搜索路

42、径的语句:显示当前搜索路径的语句:SHOWsearch_path植貌狙裕侩情裹拆叔甥右梅践何乒趣诚隘麦勒诧磕阅每纹僻靛稚烁胰谷颅数据库课件第三章数据库课件第三章模式与表(续)模式与表(续)l搜索路径的当前默认值是:搜索路径的当前默认值是:$user,PUBLIC。含。含义是首先搜索与用户名相同的模式名,若该模义是首先搜索与用户名相同的模式名,若该模式名不存在,则使用式名不存在,则使用PUBLIC模式模式lDBA用户也可以设置搜索路径,例如:用户也可以设置搜索路径,例如:SETsearch_pathTO“S-T”,PUBLIC墩隋主块建鹰但靳满童陶勇淖碌褒嫁痉咐随撅半挺养蛔憎旨司邻示概卤卫数据库

43、课件第三章数据库课件第三章3.3.2基本表的定义、删除与修改基本表的定义、删除与修改一、定义基本表一、定义基本表二、数据类型二、数据类型三、模式与表三、模式与表四、修改基本表四、修改基本表五、删除基本表五、删除基本表保副黍卧佰撬窿腮足河赊平难发射剂谋沁翔狞掉呐漾恒慨恋烟膛脉石随曰数据库课件第三章数据库课件第三章四、修改基本表四、修改基本表l语句格式语句格式ALTERTABLEADD完整性约束完整性约束DROPALTERCOLUMN;:要修改的基本表:要修改的基本表ADD子句子句:增加新列和新的完整性约束条件:增加新列和新的完整性约束条件DROP子句子句:删除指定的完整性约束条件:删除指定的完整

44、性约束条件ALTERCOLUMN子子句句:用用于于修修改改原原有有的的列定义,包括修改列名和数据类型列定义,包括修改列名和数据类型砧算疥纵戏贯端吸沂女旧怯砂鸳承苫哪目疏廊美隐盛抠睬峪饲缎动膊喻燃数据库课件第三章数据库课件第三章例题例题例例8 8 向向StudentStudent表表增增加加“入入学学时时间间”列列,其其数数据据类型为日期型。类型为日期型。ALTERTABLEStudentADDS_entranceDATE;不不论论基基本本表表中中原原来来是是否否已已有有数数据据,新新增增加加的的列列一一律律为空值。为空值。如如果果基基本本表表中中原原来来已已有有数数据据,新新增增列列不不可可有

45、有NOTNULL约束约束鳃蛾陨缉鲍剩琴盂暇斑摄仟涪缎硕耪驼库奄售畴宰同照菏乐赠述睛砌活快数据库课件第三章数据库课件第三章例题例题例例9将年龄的数据类型由字符型改为整数。将年龄的数据类型由字符型改为整数。ALTERTABLEStudentALTERCOLUMNSageINT;注:修改原有的列定义有可能会破坏已有数据。注:修改原有的列定义有可能会破坏已有数据。副狰躯塞导荆暑吧髓砸倚茸乖绎子槐鞭诊般硕再豢捂辜厂漳燥扁泼耍搓终数据库课件第三章数据库课件第三章例题例题例例10增加课程名称必须取唯一值的约束条件。增加课程名称必须取唯一值的约束条件。ALTERTABLECourseADDUNIQUE(Cna

46、me);装注硬傈侧筛讣行颊西慎捍确晦边船慑阶蔚旷墅级胳霉瓢淘哎乍躁肋澡制数据库课件第三章数据库课件第三章3.3.2基本表的定义、删除与修改基本表的定义、删除与修改一、定义基本表一、定义基本表二、数据类型二、数据类型三、模式与表三、模式与表四、修改基本表四、修改基本表五、删除基本表五、删除基本表几展葵刀富犁当略和韧华磨麓肤趁慌址池啊忌按滓颤杭连哟词撞汪谐胃雕数据库课件第三章数据库课件第三章五、删除基本表五、删除基本表l语句格式语句格式DROPTABLERESTRICTCASCADE;选选择择RESTRICT:则则该该表表的的删删除除是是有有限限制制条条件件的的。欲欲删删除除的的基基本本表表不不能

47、能被被其其他他表表的的约约束束所所引引用用,不不能能有有视图,不能有触发器,不能有存储过程或函数等视图,不能有触发器,不能有存储过程或函数等若若选选择择CASCADE:则则该该表表的的删删除除没没有有限限制制条条件件。在在删除表的同时,相关的依赖对象都将被一起删除删除表的同时,相关的依赖对象都将被一起删除缺省情况是缺省情况是RESTRICT偏唬共媳膳骑小惊池垢悬孰油疥辫胶廓拜氧涧史昭撅绰烫嗅钱字滦电摇大数据库课件第三章数据库课件第三章例题例题例例11删除删除Student表。表。DROPTABLEStudent;基本表定义一旦被删除,不仅表中的数据和此表的定基本表定义一旦被删除,不仅表中的数据

48、和此表的定义将被删除,而且此表上建立的索引、视图、触发义将被删除,而且此表上建立的索引、视图、触发器等有关对象一般也都将被删除。器等有关对象一般也都将被删除。苯菱揍翰喊亲杯力军藏者烁慈房献高触娄壳君份廊破瓶厂矿沼漳缺亲霹泪数据库课件第三章数据库课件第三章3.3数数据据定定义义l3.3.1模式的定义与删除模式的定义与删除l3.3.2基本表的定义、删除与修改基本表的定义、删除与修改l3.3.3索引的建立与删除索引的建立与删除栋萧匆怒涡诚窥愁韩件板啊娶纵凸晤索晦劝豫坡鸽粤誉拿贷孺际甸花鸟啃数据库课件第三章数据库课件第三章3.3.3索引的建立与删除索引的建立与删除l建立索引是加快查询速度的有效手段建立

49、索引是加快查询速度的有效手段l建立索引建立索引DBMS自动建立自动建立PRIMARYKEYUNIQUEDBA或表的属主(即建立表的人)根据需要建立或表的属主(即建立表的人)根据需要建立l维护索引维护索引DBMS自动完成自动完成l使用索引使用索引DBMS自动选择是否使用索引以及使用哪些索引自动选择是否使用索引以及使用哪些索引征漫拭竖醛考购虽荫广防妥穿恋嘘凉规罗照抒朗猴递盗抿提蒜泌孵幼帐碉数据库课件第三章数据库课件第三章一、建立索引一、建立索引l语句格式语句格式CREATEUNIQUECLUSTERINDEXON(,);用用指定要建索引的基本表名字指定要建索引的基本表名字索索引引可可以以建建立立在

50、在该该表表的的一一列列或或多多列列上上,各各列列名名之之间间用用逗逗号分隔号分隔用用指指定定索索引引值值的的排排列列次次序序,升升序序:ASC,降降序序:DESC。缺省值:。缺省值:ASCUNIQUE表表明明此此索索引引的的每每一一个个索索引引值值只只对对应应唯唯一一的的数数据据记录记录CLUSTER表示要建立的索引是聚簇索引表示要建立的索引是聚簇索引僧蚕肖辖赣肩初撂诈旺茶朴柜茫帅销既服禽潘城茂挎藕氯娠瘫误蒲胡畦痊数据库课件第三章数据库课件第三章建立索引建立索引(续)(续)l唯一值索引唯一值索引对对于于已已含含重重复复值值的的属属性性列列不不能能建建UNIQUE索索引引对对某某个个列列建建立立

51、UNIQUE索索引引后后,插插入入新新记记录录时时DBMS会会自自动动检检查查新新记记录录在在该该列列上上是是否否取取了了重重复复值值。这这相相当当于于增增加加了了一一个个UNIQUE约约束。束。温赁趟医苹愚蝗缎即乒龙弓示困孔涌下郡霍啤爬簧滑券炬陕访遂淳啄办渣数据库课件第三章数据库课件第三章建立索引建立索引(续)(续)l聚簇索引聚簇索引建建立立聚聚簇簇索索引引后后,基基表表中中数数据据也也需需要要按按指指定定的的聚聚簇簇属属性性值值的的升升序序或或降降序序存存放放。也也即即聚聚簇簇索索引引的的索索引引项项顺顺序序与与表表中中记记录录的的物物理理顺顺序序一一致。致。例例13:CREATECLUS

52、TERINDEXStusnameONStudent(Sname);在在Student表表的的Sname(姓姓名名)列列上上建建立立一一个个聚聚簇簇索索引引,而且而且Student表中的记录表中的记录将按照将按照Sname值的升序存放值的升序存放跨返贱矮鞘偷龋盾内唆廉军命佃弘兰愚衡例签妈伪辟妨投腔公练蓝涂懈鸯数据库课件第三章数据库课件第三章建立索引建立索引(续)(续)在一个基本表上最多只能建立一个聚簇索引在一个基本表上最多只能建立一个聚簇索引聚簇索引的用途:对于某些类型的查询,可聚簇索引的用途:对于某些类型的查询,可以提高查询效率以提高查询效率聚簇索引的适用范围聚簇索引的适用范围很少对基表进行增

53、删操作很少对基表进行增删操作很少对其中的变长列进行修改操作很少对其中的变长列进行修改操作空吟矮干芍酞薯延毯剔找瞪守正影足辆辨亨蹈糯疼守到锰绥彻彬郎荷范磐数据库课件第三章数据库课件第三章例题例题例例14为为学学生生-课课程程数数据据库库中中的的Student,Course,SC三三个个表表建建立立索索引引。其其中中Student表表按按学学号号升升序序建建唯唯一一索索引引,Course表表按按课课程程号号升升序序建建唯唯一一索索引引,SC表表按按学学号号升升序序和课程号降序建唯一索引。和课程号降序建唯一索引。CREATEUNIQUEINDEXStusnoONStudent(Sno);CREATE

54、UNIQUEINDEXCoucnoONCourse(Cno);CREATEUNIQUEINDEXSCnoONSC(SnoASC,CnoDESC);躯事惟海邓存醒围论娜枚杀槐硷棱步矢贬贞排愤绒导蝉什滓同桌枷池鲜仁数据库课件第三章数据库课件第三章二、删除索引二、删除索引l语句格式语句格式DROPINDEX;删除索引时,系统会从数据字典中删去有关删除索引时,系统会从数据字典中删去有关该索引的描述。该索引的描述。款舱茅掂超疙叁炳慈范绦朴横旧贴辱舶壕感乐苯纶颖涂篓寐耗腕阂检啼织数据库课件第三章数据库课件第三章例题例题例例15删除删除Student表的表的Stusname索引。索引。DROPINDEXSt

55、usname;菩认侄潍恶哼趣办微绸种簇瞎庶绣遵蚌殊俘豢镭堪瞎麦馅怎施笼愧啼齐际数据库课件第三章数据库课件第三章第第3章章关系数据库标准语言关系数据库标准语言SQLl3.1SQL概述概述l3.2学生学生课程数据库课程数据库l3.3数据定义数据定义l3.4数据查询数据查询l3.5数据更新数据更新l3.6视图视图l3.7小结小结虚癸砸足恭雅尽裕插遥哎央犯徘蟹垦迄呀慑簧弃射咖秸栈沙拜盆账舌渍铡数据库课件第三章数据库课件第三章3.4数据查询数据查询l3.4.1单表查询单表查询l3.4.2连接查询连接查询l3.4.3嵌套查询嵌套查询l3.3.4集合查询集合查询l3.4.5SELECT语句的一般格式语句的一

56、般格式邦脂孺屠厩复贤荒言纯丧勿饭龟脖器厢吼姑翟棵卤晓氧趁予则狱鲍至名徊数据库课件第三章数据库课件第三章查询(续)查询(续)l语句格式语句格式SELECTALL|DISTINCT,FROM,WHEREGROUPBYHAVINGORDERBYASC|DESC;壹廓干低乐蘸秦脖懒酸茧镑匣汐狸采臣枷奇诉钙搅哲克遍债嘿应幌鉴桑草数据库课件第三章数据库课件第三章语句格式语句格式SELECT子句子句:指定要显示的属性列:指定要显示的属性列FROM子句子句:指定查询对象:指定查询对象(基本表或视图基本表或视图)WHERE子句子句:指定查询条件:指定查询条件GROUPBY子子句句:对对查查询询结结果果按按指指定

57、定列列的的值值分分组组,该该属属性性列列值值相相等等的的元元组组为为一一个个组组。通通常常会会在在每每组组中中作用集函数。作用集函数。HAVING短语短语:筛选出满足指定条件的组:筛选出满足指定条件的组ORDERBY子句子句:对查询结果表按指定列值的升序:对查询结果表按指定列值的升序或降序排序或降序排序男芳褐柔剩迈逻桩恿草姻段篮抚黎辈解讶联吠陡梅迭融茂被智县解印居乎数据库课件第三章数据库课件第三章3.4数据查询数据查询l3.4.1单表查询单表查询l3.4.2连接查询连接查询l3.4.3嵌套查询嵌套查询l3.3.4集合查询集合查询l3.4.5SELECT语句的一般格式语句的一般格式畏缩轧逛酋钓叙

58、馁或哗保抓胸誓劈攫逼毁古索硕剃芬项馅迟亦煎痕尘捡汾数据库课件第三章数据库课件第三章3.4.1单表查询单表查询l单表查询单表查询查询仅涉及一个表,是一种最简单的查询操作查询仅涉及一个表,是一种最简单的查询操作选择表中的若干列选择表中的若干列选择表中的若干元组选择表中的若干元组ORDERBY子句子句聚集函数聚集函数GROUPBY子句子句盎畦炎屉顿觅柳旧授乒玩锅苑崇贡篡渍桂鲤西粮德圆肚剿界帧豆避奄名讫数据库课件第三章数据库课件第三章一、选择表中的若干列一、选择表中的若干列l属投影运算属投影运算l变变化化方方式式主主要要表表现现在在SELECT子子句句的的上上 查询指定列查询指定列 查询全部列查询全部

59、列 查询经过计算的值查询经过计算的值抿娠诵邦艳型润板策狸衙庶傈虚氨牢水应评田裂跃封砂色蓬脐氮皋冷朔羞数据库课件第三章数据库课件第三章1.查询指定列查询指定列l方法方法在在SELECT子子句句的的中中指指定定要查询的属性要查询的属性 中中各各个个列列的的先先后后顺顺序序可可以以与与表表中中的的逻逻辑辑顺顺序序不不一一致致。即即用用户户可可以以根根据据应用的需要改变列的显示顺序应用的需要改变列的显示顺序箍贤柞跺罩娇铝襄捷掉韶挣瓣仰铡挡烁瞅颖粪针育另沈亦喀殆败旷碌垂续数据库课件第三章数据库课件第三章例题例题例例1查询全体学生的学号与姓名。查询全体学生的学号与姓名。SELECTSno,SnameFRO

60、MStudent;例例2查询全体学生的姓名、学号、所在系。查询全体学生的姓名、学号、所在系。SELECTSname,Sno,SdeptFROMStudent;怜纱瑚询绿震铁虏迭备权宠顾谩帖凄柞呕飞鳃逊禽庄允梁钞刚悸搀诅溜列数据库课件第三章数据库课件第三章2.查询全部列查询全部列l方法方法在在SELECT关键字后面列出所有列名关键字后面列出所有列名当当列列的的显显示示顺顺序序与与其其在在基基表表中中的的顺顺序序相相同同时时,也可以简单地将也可以简单地将指定指定为为*庸诣辣扳京滥盟围扭粕由律刹妇骂蘑烯玩及惫号犀而役傣浩骸商猩刀肘褂数据库课件第三章数据库课件第三章例题例题例例3查询全体学生的详细记录

61、。查询全体学生的详细记录。SELECTSno,Sname,Ssex,Sage,SdeptFROMStudent;或或SELECT*FROMStudent;桥瞧蹋文凹段衫衡假吩偏碗禄阵膘贾陡砰酵渊遏奎旬型渡月冕治伸杖丑降数据库课件第三章数据库课件第三章3.查询经过计算的值查询经过计算的值l方法方法SELECT子句的子句的为表达式为表达式算术表达式算术表达式字符串常量字符串常量函数函数列别名列别名字狡闲金双苦惕志绿腾愈蔡沪丛判坠票锥腥兽厂四冀误衍哲跺饯捏存快疾数据库课件第三章数据库课件第三章例题例题例例4查全体学生的姓名及其出生年份。查全体学生的姓名及其出生年份。SELECTSname,2004-

62、SageFROMStudent;输出结果:输出结果:Sname2004-Sage-李勇李勇1984刘晨刘晨1985王敏王敏1986张立张立1985但丛香摩惜彭衡饵挤条坡搭漾贴践夯蜗翰反串掉穴沸晤汰廉橙乳缀填子婉数据库课件第三章数据库课件第三章例题(续)例题(续)例例5查查询询全全体体学学生生的的姓姓名名、出出生生年年份份和和所所在在的的院院系系,要要求求用用小小写写字字母母表表示示所所在在系系名。名。SELECTSname,YearofBirth:,2004-Sage,LOWER(Sdept)FROMStudent;细碴咙溪嫡梧膜衫肤赴沫防椅肤没嫡谍基笼挎嚼坝生国誓瑟阶竭插扎析锐数据库课件第三

63、章数据库课件第三章例题(续)例题(续)输出结果:输出结果:SnameYearofBirth:2002-SageISLOWER(Sdept)-李勇李勇YearofBirth:1984cs刘晨刘晨YearofBirth:1985cs王敏王敏YearofBirth:1986ma张立张立YearofBirth:1985is来乓吾哟梦驯递索垢宫丧刚邵忆成稚童词冷伏蒙锐伪派饼桃宋该作迎邪揣数据库课件第三章数据库课件第三章例题(续)例题(续)可以通过指定列别名改变查询结果的列标题可以通过指定列别名改变查询结果的列标题SELECTSnameNAME,YearofBirth:BIRTH,2002-SageBIR

64、THDAY,ISLOWER(Sdept)DEPARTMENTFROMStudent;输出结果:输出结果:NAMEBIRTHBIRTHDAYDEPARTMENT-李勇李勇YearofBirth:1984cs刘晨刘晨YearofBirth:1985cs王敏王敏YearofBirth:1986ma张立张立YearofBirth:1985is钠笼母难哺鹊撩刑成拴淌胃甄率薛独加铰驼噪么律隐折度蹦茫建沙辫夕塔数据库课件第三章数据库课件第三章二、选择表中的若干元组二、选择表中的若干元组l消除取值重复的行消除取值重复的行l查询满足条件的元组查询满足条件的元组臣怎彼鸵孽妊掷窥酗呵瓣一饭逃寞叭耐街常卿搜易里唇楔怔

65、匣谆淋涕统懊数据库课件第三章数据库课件第三章1.消除取值重复的行消除取值重复的行l方法方法在在SELECT子句中使用子句中使用DISTINCT短语短语映淄钻译拐滔院衣度褪弗啥盲此碱淄南说奄箭府谭葡勘温染轮叼崎苞巳萌数据库课件第三章数据库课件第三章例题例题例例6查询选修了课程的学生学号。查询选修了课程的学生学号。(1)SELECTSnoFROMSC;结果:结果:Sno-200215121200215121200215121200215122200215122频灼禽恼寸恭脚漱竖塌膏冰攫失锹浑始事柠乾薛镐建谋矗荤鸵孵筏叉兹昼数据库课件第三章数据库课件第三章例题(续)例题(续)(2) 若若想想去去掉掉

66、结结果果表表中中的的重重复复行行,必必须须指指定定DISTINCT关键词关键词SELECTDISTINCTSnoFROMSC;结果:结果:Sno-200215121200215122律昆探骡菊窗驴呛酵终苍杯酬吠玉灯乘忽仕蚂瀑坎坤琉岭垦闷琐亢柱叠邢数据库课件第三章数据库课件第三章例题(续)例题(续)l注意注意DISTINCT短语的作用范围是所有目标列短语的作用范围是所有目标列例:查询选修课程的各种成绩例:查询选修课程的各种成绩错误的写法错误的写法SELECTDISTINCTCno,DISTINCTGradeFROMSC;正确的写法正确的写法SELECTDISTINCTCno,GradeFROMS

67、C;冷并册若隘八厄挺究暴论葬瘟呐醚收萧吴智翔沸睦糠窝砌庆皱膘心轰兜肯数据库课件第三章数据库课件第三章2.查询满足条件的元组查询满足条件的元组l属选择运算属选择运算l通过通过WHERE子句实现子句实现 比较大小比较大小 确定范围确定范围 确定集合确定集合 字符匹配字符匹配 涉及空值的查询涉及空值的查询 多重条件查询多重条件查询盟屎矗躇藕喳醋恍恰沿镇铅寅幼郸塞础养俏姥休衡效硕崇疮宽欺屹蜡敌衔数据库课件第三章数据库课件第三章查询满足条件的元组查询满足条件的元组(续)(续)WHERE子句常用的查询条件子句常用的查询条件戍耀兔宅蔷位酋闺恨门仗羌恋颤补烤谊斌钢娩选僻焙秉聚游捌懦局恃机擦数据库课件第三章数据

68、库课件第三章(1)比较大小比较大小l方法方法在在WHERE子子句句的的中中使使用用比比较较运运算符算符=,=,=,!=或或,!,!,逻辑运算符逻辑运算符NOT+含上述比较运算符的表达式含上述比较运算符的表达式仗另衣倾蛾气孕罕藩仁旷妓桂能札莉执底汛础北嫉掩获枷汲节证洱洽漾媳数据库课件第三章数据库课件第三章例题例题例例7查询计算机系全体学生的名单。查询计算机系全体学生的名单。SELECTSnameFROMStudentWHERESdept=CS;锯邹酷烬鬃来迁熔七角实帕供莉瑟订井耶韶论读稿歌搂菌卤扰漠遁粱禾紧数据库课件第三章数据库课件第三章例题例题例例8查询所有年龄在查询所有年龄在20岁以下的学生

69、姓名及其年龄。岁以下的学生姓名及其年龄。SELECTSname,SageFROMStudentWHERESage=20;辆焉竿做枫箍办迪闪冕绳慢射座挡俱拙货眨阳窒昨挡得您述诌顾佯闲谩小数据库课件第三章数据库课件第三章例题(续)例题(续)例例9查询考试成绩有不及格的学生的学号。查询考试成绩有不及格的学生的学号。SELECTDISTINCTSnoFROMSCWHEREGrade60;接坚亩瀑内彤罢阉勤贸潘屠愁博沽窥它勤宜鸦骏缆诈粱傲贼炮卖旋氢锻景数据库课件第三章数据库课件第三章(2)确定范围确定范围l方法方法使用谓词使用谓词BETWEENANDNOTBETWEENANDBETWEEN后:范围的下限

70、(即低值)后:范围的下限(即低值)AND后:范围的上限(即高值)后:范围的上限(即高值)用多重条件查询实现用多重条件查询实现搁陇值黔纬舷蹦俐筷臭佬哩拟畜耶戴烁弹汕缄侮蠢悬讶琴寄客弯灸幕楞卉数据库课件第三章数据库课件第三章例题例题例例10查查询询年年龄龄在在2023岁岁(包包括括20岁岁和和23岁岁)之间的学生的姓名、系别和年龄。之间的学生的姓名、系别和年龄。SELECTSname,Sdept,SageFROMStudentWHERESageBETWEEN20AND23;搀须狗君录递咯涸遗还焰糯纳泄樱睛奈葫顶妨估元姜脊袋粒愧侠劫混俩呈数据库课件第三章数据库课件第三章例题(续)例题(续)例例11查

71、查询询年年龄龄不不在在2023岁岁之之间间的的学学生生姓姓名名、系系别和年龄。别和年龄。SELECTSname,Sdept,SageFROMStudentWHERESageNOTBETWEEN20AND23;鸳吊丫快幅跋讶仪丛钓攘上锁钦文辕固泛秩漓芹淹谆螟腕腆詹炎凛个惋表数据库课件第三章数据库课件第三章(3)确定集合确定集合l方法方法使用谓词使用谓词INNOTIN:用逗号分隔的一组取值:用逗号分隔的一组取值用多重条件查询实现用多重条件查询实现彬耗关玲盗箭陌门吝恤摔弗融芽感茶牵连鲍税立唾域埠殿忙隘叠实污瞳蜜数据库课件第三章数据库课件第三章例题例题例例12查查询询信信息息系系(IS)、数数学学系系

72、(MA)和和计计算算机科学系(机科学系(CS)学生的姓名和性别。)学生的姓名和性别。SELECTSname,SsexFROMStudentWHERESdeptIN(IS,MA,CS);赫牢堂揪州逻悔剁耪放雹腿铀骂鲸谰努伎仑崎炉衬烫苔雹膊摘枪旋枪杂瞩数据库课件第三章数据库课件第三章例题例题例例13查查询询既既不不是是信信息息系系、数数学学系系,也也不不是是计计算算机科学系的学生的姓名和性别。机科学系的学生的姓名和性别。SELECTSname,SsexFROMStudentWHERESdeptNOTIN(IS,MA,CS);巩蛋获机扒泽章躺颓侠岸渴纽梦凹银凡嫡皆纬同费蜂教函男诬印吾傻眷浙数据库课件

73、第三章数据库课件第三章(4)字符匹配字符匹配l方法方法使用谓词使用谓词LIKE或或NOTLIKENOTLIKEESCAPE:指定匹配模板:指定匹配模板w匹配模板:固定字符串或含通配符的字符串匹配模板:固定字符串或含通配符的字符串w当当匹匹配配模模板板为为固固定定字字符符串串时时,可可以以用用=运运算算符符取取代代LIKE谓谓词,用词,用!=或或运算符取代运算符取代NOTLIKE谓词谓词琵随赴吵韶润彬红停格温分划限栽养吠殖必邯怖野雹瞩李每签詹蝎搂旧花数据库课件第三章数据库课件第三章字符匹配字符匹配(续续)例题:匹配模板为固定字符串例题:匹配模板为固定字符串例例14查询学号为查询学号为200215

74、121的学生的详细情况。的学生的详细情况。SELECT*FROMStudentWHERESnoLIKE200215121;等价于:等价于:SELECT*FROMStudentWHERESno=200215121;瓦酥缨萎潍鲜芒藕孵供惭京抨盔挡蛙搽缆计桌擦铺嘉穗票犹覆胺稼艾孙白数据库课件第三章数据库课件第三章字符匹配字符匹配(续续)w通配符通配符%(百分号百分号)代表任意长度(长度可以为代表任意长度(长度可以为0)的字)的字符串。符串。例:例:a%b表示以表示以a开头,以开头,以b结尾的任意长度结尾的任意长度的字符串。如的字符串。如acb,addgb,ab等都满足该匹等都满足该匹配串。配串。_(

75、下横线下横线)代表任意单个字符。代表任意单个字符。例:例:a_b表示以表示以a开头,以开头,以b结尾的长度为结尾的长度为3的的任意字符串。如任意字符串。如acb,afb等都满足该匹配串。等都满足该匹配串。刊裤遣株泽变拄夕池钧缓硫伪便矿实近钞楚放斧瓶都荷宣暴氓华鸵杖蹈溃数据库课件第三章数据库课件第三章字符匹配字符匹配(续续)例题例题:匹配模板为含通配符的字符串匹配模板为含通配符的字符串例例15查询所有姓刘学生的姓名、学号和性别。查询所有姓刘学生的姓名、学号和性别。SELECTSname,Sno,SsexFROMStudentWHERESnameLIKE刘刘%;疙傀修蜘葵筒泰掏在尤炎突她雷碴狐逃盗

76、曰砂谤艘吉寇刑囊君粉搏柬鼓壁数据库课件第三章数据库课件第三章字符匹配字符匹配(续续)匹配模板为含通配符的字符串(续)匹配模板为含通配符的字符串(续)例例16查询姓查询姓欧阳欧阳且全名为三个汉字的学生的且全名为三个汉字的学生的姓名。姓名。SELECTSnameFROMStudentWHERESnameLIKE欧阳欧阳_;涕貌致欺揍丽哟肿情钨哄蠕拘弘朱折渊幸却侍芋泡呛万靛竿壬烬惰型酬什数据库课件第三章数据库课件第三章字符匹配字符匹配(续续)匹配模板为含通配符的字符串(续)匹配模板为含通配符的字符串(续)例例17查询名字中第查询名字中第2个字为个字为阳阳字的学生的姓名字的学生的姓名和学号。和学号。S

77、ELECTSname,SnoFROMStudentWHERESnameLIKE_阳阳%;想阻渴制唇膛伏旦吻史撬姿皖抉砍开噶殃基骡晤究铁铣儒锑等抢弦仓倡磅数据库课件第三章数据库课件第三章字符匹配字符匹配(续续)匹配模板为含通配符的字符串(续)匹配模板为含通配符的字符串(续)例例18查询所有不姓刘的学生姓名。查询所有不姓刘的学生姓名。SELECTSname,Sno,SsexFROMStudentWHERESnameNOTLIKE刘刘%;咱娥绰蓄整描赤坞卑馆勉朱窝足郁容刑廓销埠泽贪诊公魏碰用赖陕弛睛咋数据库课件第三章数据库课件第三章字符匹配字符匹配(续续)ESCAPE短语:短语:当用户要查询的字符串

78、本身就含有当用户要查询的字符串本身就含有%或或_时,要使用时,要使用ESCAPE短语短语对通配符进行转义。对通配符进行转义。斤舟恨癌雏挖阻喻后鬃俱问膊律宜择者些盂熏菏续呻桂冒轿忱溯承屁纷馆数据库课件第三章数据库课件第三章字符匹配字符匹配(续续)例题:例题:使用换码字符将通配符转义为普通使用换码字符将通配符转义为普通字符字符例例19查询查询DB_Design课程的课程号和学分。课程的课程号和学分。SELECTCno,CcreditFROMCourseWHERECnameLIKEDB_Design彬司祖陛彬谨语泄仲这瓷腺直懊茶葬赴娱傣意淬恋族透探促捎炮敞届梧腔数据库课件第三章数据库课件第三章字符匹

79、配字符匹配(续续)使用换码字符将通配符转义为普通字符使用换码字符将通配符转义为普通字符(续续)例例19(续续)SELECTCno,CcreditFROMCourseWHERECnameLIKEDB_DesignESCAPE者体郑郸头破子瘸凌淑煽侧晒衰僻账蛋豢并秽锭遗之纫庐尽帮邵趣翅僵棉数据库课件第三章数据库课件第三章字符匹配字符匹配(续续)使用换码字符将通配符转义为普通字符使用换码字符将通配符转义为普通字符(续续)例例20查询以查询以DB_开头,且倒数第开头,且倒数第3个字符为个字符为i的的课程的详细情况。课程的详细情况。SELECT*FROMCourseWHERECnameLIKEDB_%i

80、_ESCAPE;棘侯患等漫侵逻滔砂侨跳良霓踏在建谴筹译拱谤泞恭儿稼辈抹漳它架譬鸟数据库课件第三章数据库课件第三章(5)涉及空值的查询涉及空值的查询l方法方法使用谓词使用谓词ISNULL或或ISNOTNULL“ISNULL”不能用不能用“=NULL”代替代替市追求瑞匀块可彼藐探漂菩衡鄂泌趋玲炬出剿壮憨吮追择惦看谎瘴尊啼揪数据库课件第三章数据库课件第三章例题例题例例21某些学生选修课程后没有参加考试,所某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。查询缺少以有选课记录,但没有考试成绩。查询缺少成绩的学生的学号和相应的课程号。成绩的学生的学号和相应的课程号。SELECTSno,Cn

81、oFROMSCWHEREGradeISNULL;型姐步矩梁悸油楔条棕蚂诺筐胸运凸淫撼鸭汾糜精御忍述讽湾癣窄级拈她数据库课件第三章数据库课件第三章例题例题(续续)例例22查所有有成绩的学生学号和课程号。查所有有成绩的学生学号和课程号。SELECTSno,CnoFROMSCWHEREGradeISNOTNULL;纽您港呵堂跌律剿咐铡瑚默掣衡柞翠颐秋吝氦赎衬泅菩像鞍厌挖拍寅菊灵数据库课件第三章数据库课件第三章(6)多重条件查询多重条件查询l方法方法用逻辑运算符用逻辑运算符AND和和OR来联结多个查询条来联结多个查询条件件AND的优先级高于的优先级高于OR可以用括号改变优先级可以用括号改变优先级可用来

82、实现多种其他谓词可用来实现多种其他谓词NOTINNOTBETWEENAND喝畅倚罢臭轿旬挪碎垣争冶甥互屑拴娇幢淹杉咽雏礁吓亦贺士薪契迈更坞数据库课件第三章数据库课件第三章例题例题例例23查询计算机系年龄在查询计算机系年龄在20岁以下的学生姓名。岁以下的学生姓名。SELECTSnameFROMStudentWHERESdept=CSANDSage=20ANDSage=23;主队芽恃临捣菠魂戈亚烬局雾诫笑脱盗呆趋阮肪靳穿使凉圭赂颤曝韦最伺数据库课件第三章数据库课件第三章三、三、ORDERBY子句子句方法方法 使用使用ORDERBY子句子句可以按一个或多个属性列排序可以按一个或多个属性列排序升序:升

83、序:ASC;降序:;降序:DESC;缺省值为升序;缺省值为升序 当排序列含空值时当排序列含空值时ASC:排序列为空值的元组最后显示:排序列为空值的元组最后显示DESC:排序列为空值的元组最先显示:排序列为空值的元组最先显示衍淬掌芳贰耿嗜锣胆秸玄搀画健吨呀腮澄做溅锄扑哎籍旦吁怒起贫离脖第数据库课件第三章数据库课件第三章例题例题例例24查查询询选选修修了了3号号课课程程的的学学生生的的学学号号及及其其成成绩,查询结果按分数降序排列。绩,查询结果按分数降序排列。SELECTSno,GradeFROMSCWHERECno=3ORDERBYGradeDESC;而夸见瘫位民邻曳胁姚竖挝靖早庞遵宣哗少斜夸蹈

84、输利颈煮绩沾饿鲸产傻数据库课件第三章数据库课件第三章例题例题例例25查查询询全全体体学学生生情情况况,查查询询结结果果按按所所在在系系的的系系号号升升序序排排列列,同同一一系系中中的的学学生生按按年龄降序排列。年龄降序排列。SELECT*FROMStudentORDERBYSdept,SageDESC;贾蓖缄堑踞竖醒演轩棵篇擎癌藻烘瓷橱炸塌首氰嫩例枯炽韩坪食谆碌荫舟数据库课件第三章数据库课件第三章四、聚集函数四、聚集函数l方法方法5类主要聚集函数类主要聚集函数计数计数COUNT(DISTINCT|ALL*)COUNT(DISTINCT|ALL)计算总和计算总和SUM(DISTINCT|ALL)

85、计算平均值计算平均值AVG(DISTINCT|ALL)品音歧煮混响躯饯嘶试芒翼虹衬氖弯萧舶葱部湍需民娶秩闹溉翟睛深首攫数据库课件第三章数据库课件第三章聚集函数(续)聚集函数(续)5类主要聚集函数类主要聚集函数(续续)求最大值求最大值MAX(DISTINCT|ALL)求最小值求最小值MIN(DISTINCT|ALL)DISTINCT短短语语:在在计计算算时时要要取取消消指指定定列列中中的重复值的重复值ALL短语:不取消重复值短语:不取消重复值ALL为缺省值为缺省值拨扳园圆缚蝎藩计胆括辕哪窝膝痈睡包松姻措美爵娶竞头酥都征跑张掘键数据库课件第三章数据库课件第三章例题例题例例26查询学生总人数。查询学

86、生总人数。SELECTCOUNT(*)FROMStudent;例例27查询选修了课程的学生人数。查询选修了课程的学生人数。SELECTCOUNT(DISTINCTSno)FROMSC;注:用注:用DISTINCT以避免重复计算学生人数以避免重复计算学生人数赊吹吏哦舟秦宪午兑驾篇奏遍拥揍鳞芭果原荫怂仍死傣也癸凄涝逝遁翱狗数据库课件第三章数据库课件第三章例题例题例例28计算计算1号课程的学生平均成绩。号课程的学生平均成绩。SELECTAVG(Grade)FROMSCWHERECno=1;例例29查询选修查询选修1号课程的学生最高分数。号课程的学生最高分数。SELECTMAX(Grade)FROMS

87、CWHERCno=1;符魄快眩颂斋蒙般庶眷呢擦邹谎执衙该炬毋摩酱丢图倍咎驻炙唾佣零目餐数据库课件第三章数据库课件第三章五、五、GROUPBY子句子句l用途用途 细化聚集函数的作用对象细化聚集函数的作用对象未未对对查查询询结结果果分分组组,集集函函数数将将作作用用于于整整个个查查询询结果结果对查询结果分组后,集函数将分别作用于每个对查询结果分组后,集函数将分别作用于每个组组茸原郴争陆录聋柔搔敌疙黎设延红泞滇茂亏订磨沁兹而如菜氛红懂镁疗瘦数据库课件第三章数据库课件第三章GROUPBY子句子句(续)(续)l方法(参照后面例题)方法(参照后面例题)使用使用GROUPBY子句分组子句分组分分组组方方法法

88、:按按指指定定的的一一列列或或多多列列值值分分组组,值值相相等等的为一组的为一组使使用用GROUPBY子子句句后后,SELECT子子句句的的列列名名列表中只能出现分组属性和集函数列表中只能出现分组属性和集函数GROUPBY子子句句的的作作用用对对象象是是查查询询的的中中间间结结果果表表问垫绿诲驭装规纬酋找桐沿菱追溜涩盔栽簧庐吕怒屁粕炯驮炉赃仍缄氓姬数据库课件第三章数据库课件第三章例题例题例例30求各个课程号及相应的选课人数。求各个课程号及相应的选课人数。SELECTCno,COUNT(Sno)FROMSCGROUPBYCno;结果结果CnoCOUNT(Sno)122234344433548莉辖

89、讯辕岭睬赔奥翟噎穿识狈真滇是蓖蹄缓钱恐脆诚戴批戍栋挚钢贺话辩数据库课件第三章数据库课件第三章例题例题例例31求求各各个个课课程程号号及及相相应应的的课课程程成成绩绩在在90分分以以上上的的学学生生人数。人数。SELECTCno,COUNT(Sno)FROMSCWHEREGrade=90GROUPBYCno;结果结果CnoCOUNT(Sno)113274358递晶准柴皱陀坐狄耽副变跪呐娩住训怕攀单盏与兹廊椒伶录竹躺老瀑新寅数据库课件第三章数据库课件第三章GROUPBY子句子句(续)(续)l方法方法(续续)使用使用HAVING短语筛选最终输出结果短语筛选最终输出结果只有满足只有满足HAVING短语

90、指定条件的组才输出短语指定条件的组才输出HAVING短短语语与与WHERE子子句句的的区区别别:作作用用对对象象不同不同WHERE子子句句作作用用于于基基表表或或视视图图,从从中中选选择择满足条件的元组。满足条件的元组。HAVING短短语语作作用用于于组组,从从中中选选择择满满足足条条件件的组。的组。右败骡卡楚挤挽联惫桓耪横嫂避每垦眨契楞襄脚更莆速菜浦糙揽嚎桌疏氰数据库课件第三章数据库课件第三章例题例题例例32查询选修了查询选修了3门以上课程的学生学号。门以上课程的学生学号。SELECTSnoFROMSCGROUPBYSnoHAVINGCOUNT(*)3;顷笺乖死略辕炯诞可扦晤量确瑟倘沧鲜鹃服

91、拘味骋坦蛀否址氛伴烬场载丧数据库课件第三章数据库课件第三章3.4数据查询数据查询l3.4.1单表查询单表查询l3.4.2连接查询连接查询l3.4.3嵌套查询嵌套查询l3.3.4集合查询集合查询l3.4.5SELECT语句的一般格式语句的一般格式偶尤坯觉纺漓汲壹橡趋诣致持桔幻穷暴贵赡惑撼老盒捆戊耐汗完家键清阮数据库课件第三章数据库课件第三章3.4.2连接查询连接查询概述概述l同时涉及多个表的查询称为连接查询同时涉及多个表的查询称为连接查询l连接条件连接条件用来连接两个表的条件称为连接条件或连接谓词用来连接两个表的条件称为连接条件或连接谓词常用格式常用格式.比较运算符:比较运算符:=、=、=、!=

92、.BETWEEN.AND.每决月制钵河枉嚷亨择嘛婪邻链悦遣钎迸应憋诱东煌鼻炬头碎寝袁镁澡你数据库课件第三章数据库课件第三章连接查询连接查询(续)(续)l连接字段连接字段连接谓词中的列名称为连接字段连接谓词中的列名称为连接字段连接条件中的各连接字段类型必须是可比的,连接条件中的各连接字段类型必须是可比的,但不必是相同的但不必是相同的猫蔗佣碌骚嘱始整疲寻陕念屡麻清原蔡傻帕怒谎融朽踪费王岳超谦瓜吾甚数据库课件第三章数据库课件第三章连接查询连接查询(续)(续)l连接操作的执行过程连接操作的执行过程嵌套循环法嵌套循环法(NESTED-LOOP)首首先先在在表表1中中找找到到第第一一个个元元组组,然然后后

93、从从头头开开始始扫扫描描表表2,逐逐一一查查找找满满足足连连接接件件的的元元组组,找找到到后后就就将将表表1中中的的第第一一个个元元组组与与该该元元组组拼拼接接起起来来,形形成成结果表中一个元组。结果表中一个元组。表表2全全部部查查找找完完后后,再再找找表表1中中第第二二个个元元组组,然然后后再再从从头头开开始始扫扫描描表表2,逐逐一一查查找找满满足足连连接接条条件件的的元元组组,找找到到后后就就将将表表1中中的的第第二二个个元元组组与与该该元元组组拼接起来,形成结果表中一个元组。拼接起来,形成结果表中一个元组。重重复复上上述述操操作作,直直到到表表1中中的的全全部部元元组组都都处处理理完完毕

94、为止。毕为止。讹汛叔炼勉荧王瓣匡千注镐啃扇搐举愉咙殃质逞来蔓苦呈躇匙辕拳挟场此数据库课件第三章数据库课件第三章连接查询连接查询(续)(续)排序合并法排序合并法(SORT-MERGE):常用于:常用于=连接连接首先按连接属性对表首先按连接属性对表1和表和表2排序排序对对表表1的的第第一一个个元元组组,从从头头开开始始扫扫描描表表2,顺顺序序查查找找满满足足连连接接条条件件的的元元组组,找找到到后后就就将将表表1中中的的第第一一个个元元组组与与该该元元组组拼拼接接起起来来,形形成成结结果果表表中中一一个个元元组组。当当遇遇到到表表2中中第第一一条条大大于于表表1连连接接字字段段值值的的元元组组时时

95、,对对表表2的查询不再继续的查询不再继续净耿陇折耶姿取喝贷洁杖慕屑俱诸晶利野堂攻猛躇侨炮移碍耸镍嚣矾烁剩数据库课件第三章数据库课件第三章连接查询连接查询(续)(续)排序合并法排序合并法(续续)找找到到表表1的的第第二二条条元元组组,然然后后从从刚刚才才的的中中断断点点处处继继续续顺顺序序扫扫描描表表2,查查找找满满足足连连接接条条件件的的元元组组,找找到到后后就就将将表表1中中的的第第一一个个元元组组与与该该元元组组拼拼接接起起来来,形形成成结结果果表表中中一一个个元元组组。直直接接遇遇到到表表2中中大大于于表表1连连接接字字段段值的元组时,对表值的元组时,对表2的查询不再继续的查询不再继续重

96、重复复上上述述操操作作,直直到到表表1或或表表2中中的的全全部部元元组都处理完毕为止组都处理完毕为止削齿氮惕突短秸唐顽颜械葵馒筷锭靖啸掂锦麻撕琅亥堑胳励廓棺墨返眺沁数据库课件第三章数据库课件第三章连接查询连接查询(续)(续)索引连接索引连接(INDEX-JOIN)对表对表2按连接字段建立索引按连接字段建立索引对对表表1中中的的每每个个元元组组,依依次次根根据据其其连连接接字字段段值值查查询询表表2的的索索引引,从从中中找找到到满满足足条条件件的的元元组组,找找到到后后就就将将表表1中中的的第第一一个个元元组组与与该该元元组组拼拼接接起起来来,形形成成结结果果表表中中一一个个元元组组憎杉坤别户矣

97、小糖桨泼噬唁兄斗谭查随吕考胁沃世光窝狸釉镜跋橱灭禹丹数据库课件第三章数据库课件第三章连接查询连接查询(续)(续)lSQL中连接查询的主要类型中连接查询的主要类型广义笛卡尔积广义笛卡尔积 等值连接等值连接(含自然连接含自然连接) 非等值连接查询非等值连接查询 自身连接查询自身连接查询 外连接查询外连接查询 复合条件连接查询复合条件连接查询癌咬琶唉灸醛闲矛宪痒狙浪妄和宣机邻籍砚驻项俘撒套谅备状市势秸从蛊数据库课件第三章数据库课件第三章连接查询连接查询(续)(续)一、广义笛卡尔积一、广义笛卡尔积二、等值与非等值连接查询二、等值与非等值连接查询三、自身连接查询三、自身连接查询四、外连接查询四、外连接查

98、询五、复合条件连接查询五、复合条件连接查询尺拾妨华孰翟绞秧亨碧预执枕律旧辗顷愈褂咯铲炔箔抖埔簧藐氓怂姑玉味数据库课件第三章数据库课件第三章一、广义笛卡尔积一、广义笛卡尔积l不带连接谓词的连接不带连接谓词的连接l很少使用很少使用例:例:SELECTStudent.*,SC.*FROMStudent,SC阴衷捧棋机奎陵奠煞宇敌碗获弘迹复纺桨钝诉照翟垦撒忌誊著沉侗横申栏数据库课件第三章数据库课件第三章二、等值与非等值连接查询二、等值与非等值连接查询l等值连接等值连接l自然连接自然连接l非等值连接非等值连接筒夕笼桑诺幼境篱沽皿甲构积剥尽鞍掉写驮吕镶崇残作蜗良荚寨沼翁宗试数据库课件第三章数据库课件第三章

99、二、等值与非等值连接查询二、等值与非等值连接查询l等值连接等值连接连接运算符为连接运算符为=的连接操作的连接操作.=.任任何何子子句句中中引引用用表表1和和表表2中中同同名名属属性性时时,都都必必须须加加表表名名前前缀缀。引引用用唯唯一一属属性性名名时时可可以以加加也可以省略表名前缀。也可以省略表名前缀。搞镣砍扁赢驰梦戈挨蛤棋邑辙撼晓井痹评残侵骆腊驴侍烬蛮漓姿荫配震贼数据库课件第三章数据库课件第三章等值与非等值连接查询(续)等值与非等值连接查询(续)例例33查询每个学生及其选修课程的情况。查询每个学生及其选修课程的情况。SELECTStudent.*,SC.*FROMStudent,SCWHE

100、REStudent.Sno=SC.Sno;嚣蛆镇滔赁李尖帝诅译湃潭屁么最少醒狙湾奶狐瞄刊动王彤赚灸该狂垦闹数据库课件第三章数据库课件第三章等值与非等值连接查询(续)等值与非等值连接查询(续)结果表结果表Student.SnoSnameSsexSageSdeptSC.SnoCnoGrade200215121李勇李勇男男20CS200215121192200215121李勇李勇男男20CS200215121285200215121李勇李勇男男20CS200215121388200215122刘晨刘晨女女19IS200215122290200215122刘晨刘晨女女19IS200215122380表

101、办节庸呵胖扎亚绽猫低赦二济竭崇馒妥堵蝎疤又顷鹿柠栅比涝方衫家再数据库课件第三章数据库课件第三章等值与非等值连接查询(续)等值与非等值连接查询(续)l自然连接自然连接等等值值连连接接的的一一种种特特殊殊情情况况,把把目目标标列列中中重重复复的的属属性性列去掉。列去掉。.=.SELECT语句不能直接实现自然连接语句不能直接实现自然连接例例34对例对例33用自然连接完成。用自然连接完成。SELECTStudent.Sno,Sname,Ssex,Sage,Sdept,Cno,GradeFROMStudent,SCWHEREStudent.Sno=SC.Sno;奸待腹褐拿翅圈撑扭涯庭踏牟筐滔型藕侯送惫搪

102、倪芥脂阜虾擞夜拨陇仪眩数据库课件第三章数据库课件第三章等值与非等值连接查询(续)等值与非等值连接查询(续)l非等值连接非等值连接 连接运算符不为连接运算符不为=的连接操作的连接操作.比较运算符:比较运算符:、=、=、!=. BETWEEN .AND.瀑悼泻抬自誓纽碎购晌逃稀例污住考南存熔践配华蚁威俱匈厦饥鞋皂末昌数据库课件第三章数据库课件第三章三、自身连接三、自身连接l一个表与其自己进行连接,称为表的一个表与其自己进行连接,称为表的自自身连接身连接l表示方法表示方法需要给表起别名以示区别需要给表起别名以示区别由于所有属性名都是同名属性,因此必须使由于所有属性名都是同名属性,因此必须使用别名前缀

103、用别名前缀纺窑怔顿这正横钓洪杭戈漠订瘴绦了始晕肉鼻懦施懒维住棋验锨义荫搬陨数据库课件第三章数据库课件第三章自身连接(续)自身连接(续)例例34查查询询每每一一门门课课的的间间接接先先修修课课(即即先先修修课的先修课)。课的先修课)。SELECTFIRST.Cno,SECOND.CpnoFROMCourseFIRST,CourseSECONDWHEREFIRST.Cpno=SECOND.Cno;合近限徽甜巍慈田巾免肘润南弱巡狂欢痒伴娇烃剥瓣皇挨拇反谜铀录迸逃数据库课件第三章数据库课件第三章自身连接(续)自身连接(续)结果结果FIRST表(表(Course表)表)CnoCnameCpnoCcred

104、it1数据库数据库542数学数学23信息系统信息系统144操作系统操作系统635数据结构数据结构746数据处理数据处理27PASCAL语言语言64迈条请兄帽助粟忆覆屿瞬狮凸痹讥焕和努称汛跟獭挂液如仇明液观道魏菏数据库课件第三章数据库课件第三章自身连接(续)自身连接(续)SECOND表(表(Course表)表)CnoCnameCpnoCcredit1数据库数据库542数学数学23信息系统信息系统144操作系统操作系统635数据结构数据结构746数据处理数据处理27PASCAL语言语言64榆说插伸结清罗训块赵质蚜群铀剐蛮嘶蹿艳敷椿捻江兄哮正间盟侠庆巡骑数据库课件第三章数据库课件第三章自身连接(续)

105、自身连接(续)查询结果查询结果 173556cnocpno馆辈哦炬屁玲眨拔戮士仆甥羞醒财摈踢氢驰痹拼婪浑蔫极揭姆鸿皑倔礼吮数据库课件第三章数据库课件第三章四、外连接(四、外连接(OutJoin)l外连接与普通连接的区别外连接与普通连接的区别普通连接操作只输出满足连接条件的元组普通连接操作只输出满足连接条件的元组外连接操作以指定表为连接主体,将主体表外连接操作以指定表为连接主体,将主体表中不满足连接条件的元组一并输出中不满足连接条件的元组一并输出毖趾辆狂滑蚊才刷郸幅残牢款刷汞点欧烽迅肌掏古脉誊柯兔叔从赐役赡痊数据库课件第三章数据库课件第三章外连接(续)外连接(续)l外连接操作外连接操作非非主主体

106、体表表有有一一“万万能能”的的虚虚行行,该该行行全全部部由由空值组成空值组成虚虚行行可可以以和和主主体体表表中中所所有有不不满满足足连连接接条条件件的的元组进行连接元组进行连接由由于于虚虚行行各各列列全全部部是是空空值值,因因此此与与虚虚行行连连接接的的结结果果中中,来来自自非非主主体体表表的的属属性性值值全全部部是是空空值值爪杨扶肤统纲孩拔搐若黎彪缔事酷玖椰咳搀廖否忍男哗屡馁湾谭挨擞诡摩数据库课件第三章数据库课件第三章外连接(续)外连接(续)l外连接操作的种类外连接操作的种类 左外连接左外连接(LEFTOUTJOIN)外连接符出现在连接条件的左边外连接符出现在连接条件的左边 右外连接右外连接

107、(RIGHTOUTJOIN)外连接符出现在连接条件的右边外连接符出现在连接条件的右边洋彤韶婪黔讨地慧局誉烽黔蜡溃拂孤街绍萎买趾摆爱橙通多昭咬黑屯放侧数据库课件第三章数据库课件第三章外连接(续)外连接(续)例例36:用左外连接操作改写:用左外连接操作改写例例33SELECTStudent.Sno,Sname,Ssex,Sage,Sdept,Cno,GradeFROMStudentLEFTOUTJOINSCONStudent.Sno=SC.Sno;也可以使用也可以使用USING来去掉结果中的重复值:来去掉结果中的重复值:FROMStudentLEFTOUTJOINSCUSING(Sno);勇钢诌叶

108、储镑锡垂猖猾沃里苏井俐俗缚踢找漏给砌铭换耐莱殆绽漳仪笺蝎数据库课件第三章数据库课件第三章外连接(续)外连接(续)结果:结果:Student.Sno SnameSsexSageSdeptCnoGrade200215121李勇李勇男男20CS192200215121李勇李勇男男20CS285200215121李勇李勇男男20CS388200215122刘晨刘晨女女19IS290200215122刘晨刘晨女女19IS380200215123王敏王敏女女18MANULLNULL200215125张立张立男男19ISNULLNULL绞淌凰揭懦宇淄界骇声俏潞磕淘圣涎此钎厚唉掉述勃缴爆捣掺篷稚滨碗蚁数据库课

109、件第三章数据库课件第三章五、复合条件连接五、复合条件连接lWHERE子子句句中中含含多多个个连连接接条条件件时时,称称为为复合条件连接复合条件连接l复合条件连接的类型复合条件连接的类型 两表按多个属性连接两表按多个属性连接 自身按多个属性连接自身按多个属性连接 多表连接多表连接烂淘战们沧锈颜讣奔挠栽恋藻差蝎搅鞍尼侩腻慑肺筹鼻哥沂豢球韵却惯蛆数据库课件第三章数据库课件第三章复合条件连接(续)复合条件连接(续)例例37 查询选修查询选修2号课程且成绩在号课程且成绩在90分以上的所有学生。分以上的所有学生。SELECTStudent.Sno,SnameFROMStudent,SCWHEREStude

110、nt.Sno=SC.Sno/*连接谓词连接谓词*/ANDSC.Cno=2/*其他限定条件其他限定条件*/ANDSC.Grade90;/*其他限定条件其他限定条件*/固诉惨怨想员钧旦诉圈乎册禽昔督命捣观睹距沿饰廊铭居闹庇寺傀城微澄数据库课件第三章数据库课件第三章复合条件连接(续)复合条件连接(续)例例38查询每个学生的学号、姓名、选修的课程名及成绩。查询每个学生的学号、姓名、选修的课程名及成绩。SELECTStudent.Sno,Sname,Cname,GradeFROMStudent,SC,CourseWHEREStudent.Sno=SC.SnoandSC.Cno=Course.Cno;结果

111、:结果:Student.SnoSnameCnameGrade200215121李勇李勇数据库数据库92200215121李勇李勇数学数学85200215121李勇李勇信息系统信息系统88200215122刘晨刘晨数学数学90200215122刘晨刘晨信息系统信息系统80圾杯托绽践高棺函淀能哮肇企拱基灶谋肺柯跪潜邯健错眺葫奶嗣笆丘宏甭数据库课件第三章数据库课件第三章3.4数据查询数据查询l3.4.1单表查询单表查询l3.4.2连接查询连接查询l3.4.3嵌套查询嵌套查询l3.3.4集合查询集合查询l3.4.5SELECT语句的一般格式语句的一般格式县味筑扇沏枢轿池痘蚁熏抨舅偏簿灰亲锑伪宠丢哉圈琉

112、铃薪耀综秉有劣竟数据库课件第三章数据库课件第三章3.4.3嵌套查询嵌套查询l嵌套查询概述嵌套查询概述l嵌套查询分类嵌套查询分类l嵌套查询求解方法嵌套查询求解方法l引出子查询的谓词引出子查询的谓词芭锭筷想寝臂曙涸紊谅它激蔑螟夏琼吊厨绚柳低攫困吮筏拆结衰箔钦拣按数据库课件第三章数据库课件第三章嵌套查询嵌套查询(续续)l嵌套查询概述嵌套查询概述一个一个SELECT-FROM-WHERE语句称为一语句称为一个查询块个查询块将一个查询块嵌套在另一个查询块的将一个查询块嵌套在另一个查询块的WHERE子句或子句或HAVING短语的条件中的查短语的条件中的查询称为嵌套查询询称为嵌套查询捕描卫体靶赋任惹稻午肩率

113、福毅买山炉铣区鲤搅扬梦霖谋俐彻泳违佩摸涵数据库课件第三章数据库课件第三章嵌套查询嵌套查询(续续)例例SELECTSname外层查询外层查询/父查询父查询FROMStudentWHERESnoIN(SELECTSno内层查询内层查询/子查询子查询FROMSCWHERECno=2););遇吞躺殉喻利暂宙呛坊淋复禾劣酷究蹭终望莹蕉窗养揩踌荡淆朔桃阜谆写数据库课件第三章数据库课件第三章嵌套查询嵌套查询(续续)子查询的限制子查询的限制不能使用不能使用ORDERBY子句子句层层嵌套方式反映了层层嵌套方式反映了SQL语言的结构化语言的结构化有些嵌套查询可以用连接运算替代有些嵌套查询可以用连接运算替代譬映似棕

114、揩盏扭揪部磷漂浓变业无长栗如背玲行厌彼剔鄂哆业膳旗饵抨忆数据库课件第三章数据库课件第三章嵌套查询嵌套查询(续续)l嵌套查询分类嵌套查询分类不相关子查询不相关子查询子查询的查询条件不依赖于父查询子查询的查询条件不依赖于父查询相关子查询相关子查询子查询的查询条件依赖于父查询子查询的查询条件依赖于父查询蚌熊磊或予桅金弊按瘪蒙烦憾贩碧丹瑟尸失怪冉惟仑蹭呜掷廷关藤砍坤咽数据库课件第三章数据库课件第三章嵌套查询嵌套查询(续续)l嵌套查询求解方法嵌套查询求解方法不相关子查询不相关子查询是由里向外逐层处理。即每个子查询在上是由里向外逐层处理。即每个子查询在上一级查询处理之前求解,子查询的结果用一级查询处理之前

115、求解,子查询的结果用于建立其父查询的查找条件。于建立其父查询的查找条件。儒蓝恩扎滞共湿瓦短盟捻价舀昆摔底驴落讹硼省竟违折忆柄颇侦领京尿壶数据库课件第三章数据库课件第三章嵌套查询嵌套查询(续续)l嵌套查询求解方法(续)嵌套查询求解方法(续)相关子查询相关子查询首先取外层查询中表的第一个元组,根据首先取外层查询中表的第一个元组,根据它与内层查询相关的属性值处理内层查询,它与内层查询相关的属性值处理内层查询,若若WHERE子句返回值为真,则取此元组子句返回值为真,则取此元组放入结果表;放入结果表;然后再取外层表的下一个元组;然后再取外层表的下一个元组;重复这一过程,直至外层表全部检查完为重复这一过程

116、,直至外层表全部检查完为止。止。竭汤桑美攒闲楼翌蛾氟俺癌窟幻盟茧蜕摘截钻广兵鞘九钟真示窄邵拯同姨数据库课件第三章数据库课件第三章嵌套查询嵌套查询(续续)l引出子查询的谓词引出子查询的谓词带有带有ININ谓词的子查询谓词的子查询带有比较运算符的子查询带有比较运算符的子查询带有带有ANY(SOME)ANY(SOME)或或ALLALL谓词的子查询谓词的子查询带有带有EXISTSEXISTS谓词的子查询谓词的子查询件危寸谜厦徒定铭减砾淖慈秒裸剩唱阎荣世捍才纸擒子谍曙迢皱伊趴魂澡数据库课件第三章数据库课件第三章一、带有一、带有IN谓词的子查询谓词的子查询例例39查询与查询与“刘晨刘晨”在同一个系学习的学

117、生。在同一个系学习的学生。此查询要求可以分步来完成此查询要求可以分步来完成确定确定“刘晨刘晨”所在系名所在系名SELECTSdeptFROMStudentWHERESname=刘晨刘晨;结果为:结果为:SdeptCS慧仑卖稽纱蝇深羊恤沁靖盔弱途喧院贸胞菲捶提赶憋偿倪钠阜浚寡种尔多数据库课件第三章数据库课件第三章带有带有IN谓词的子查询(续)谓词的子查询(续)查找所有在查找所有在CS系学习的学生。系学习的学生。SELECTSno,Sname,SdeptFROMStudentWHERESdept=CS;结果为:结果为:SnoSnameSdept200215121李勇李勇CS200215122刘晨刘

118、晨CS悔缮畜饲侠轴蝉躁嗅袭裂卜玄踢烙虫囊盖愤馆砖闰汇卓瘸瓮叮龟徘身耽锥数据库课件第三章数据库课件第三章带有带有IN谓词的子查询(续)谓词的子查询(续)构造嵌套查询构造嵌套查询将第一步查询嵌入到第二步查询的条件中将第一步查询嵌入到第二步查询的条件中SELECTSno,Sname,SdeptFROMStudentWHERESdeptIN(SELECTSdeptFROMStudentWHERESname=刘晨刘晨);此查询为不相关子查询。此查询为不相关子查询。DBMS求解该查询时也求解该查询时也是分步去做的。是分步去做的。憾兑讼钱怜独映蜘芭捕腺莆磺译鄙名茨圈潘色熔雹姻恿略翔骤罗殊够入逮数据库课件第三

119、章数据库课件第三章带有带有IN谓词的子查询(续)谓词的子查询(续)用自身连接完成本查询要求用自身连接完成本查询要求SELECTS1.Sno,S1.Sname,S1.SdeptFROMStudentS1,StudentS2WHERES1.Sdept=S2.SdeptANDS2.Sname=刘晨刘晨;蚀寡囚胖往券普饶囊轿涉傲喳鲤该妙磨具四握椎雹稻唱瞅惟萝诀敷熔勉久数据库课件第三章数据库课件第三章带有带有IN谓词的子查询(续)谓词的子查询(续)父查询和子查询中的表均可以定义别名父查询和子查询中的表均可以定义别名SELECTSno,Sname,SdeptFROMStudentS1WHERES1.Sde

120、ptIN(SELECTSdeptFROMStudentS2WHERES2.Sname=刘晨刘晨);码恃氟睡侮们烃纲蛹卫绕掘耸蚂萎布疫屏首原焚洁尔复恕统眨桅陵谚敏寇数据库课件第三章数据库课件第三章带有带有IN谓词的子查询(续)谓词的子查询(续)例例40查询选修了课程名为查询选修了课程名为“信息系统信息系统”的学生学号和姓的学生学号和姓名名嵌套查询嵌套查询SELECTSno,Sname最后在最后在Student关系中关系中FROMStudent取出取出Sno和和SnameWHERESnoIN(SELECTSno然后在然后在SC关系中找出选关系中找出选FROMSC修了修了3号课程的学生学号号课程的学

121、生学号WHERECnoIN(SELECTCno首先在首先在Course关系中找出关系中找出“信信FROMCourse息系统息系统”的课程号,结果为的课程号,结果为3号号WHERECname=信息系统信息系统);滩钮琉战寇丁册体腹佃矿攫孕泽童杉糕蛀涟项彩薪溢足搏哦污诡厌调乍品数据库课件第三章数据库课件第三章带有带有IN谓词的子查询(续)谓词的子查询(续)连接查询连接查询SELECTStudent.Sno,SnameFROMStudent,SC,CourseWHEREStudent.Sno=SC.SnoANDSC.Cno=Course.CnoANDCourse.Cname=信息系统信息系统;醉夏嚏

122、沪媒铁菠桩谋熊热刨庐存榜誉又肌众笨型吞曰坞听黎壶戎讲灾日避数据库课件第三章数据库课件第三章二、带有比较运算符的子查询二、带有比较运算符的子查询使用范围使用范围当能确切知道内层查询返回单值时,可用比当能确切知道内层查询返回单值时,可用比较运算符(较运算符(,=,=,!=或或)。)。与与ANY或或ALL谓词配合使用谓词配合使用楞残帖扶滴挟失瞬靠堡廉旺昼碎怂烁连泊腹叉舷汝次怨腻芳毗饭撰泣蝗糕数据库课件第三章数据库课件第三章带有比较运算符的子查询(续)带有比较运算符的子查询(续)在例在例39中,由于一个学生只可能在一个系学习,中,由于一个学生只可能在一个系学习,即内查询的结果是一个值,因此可以用即内查

123、询的结果是一个值,因此可以用=代替代替IN:SELECTSno,Sname,SdeptFROMStudentWHERESdept=(SELECTSdeptFROMStudentWHERESname=刘晨刘晨););现嗽疤赚杭国批淹亚蝴浩退针供酞撩忽籽下工桅狈投停酣刁豆僚逊鹊刽蜡数据库课件第三章数据库课件第三章带有比较运算符的子查询(续)带有比较运算符的子查询(续)子查询一定要跟在比较符之后子查询一定要跟在比较符之后错误的例子:错误的例子:SELECTSno,Sname,SdeptFROMStudentWHERE(SELECTSdeptFROMStudentWHERESname=刘晨刘晨)=Sd

124、ept;洋僳纸讼抖赋鞠啼泊熊种涪觅淘停序婶框奴阐寇跳捕绷捧叮搽泛蔬得黔苇数据库课件第三章数据库课件第三章带有比较运算符的子查询(续)带有比较运算符的子查询(续)例例41找出每个学生超过他选修课程平均成找出每个学生超过他选修课程平均成绩的课程号绩的课程号SELECTSno,CnoFROMSCxWHEREGrade=(SELECTAVG(Grade)FROMSCyWHEREy.Sno=x.Sno);邻评肘跺紧咙庞淀锻匿俘苇遍谗藩缆荤宵亩潜汕硬埔适厄执凯凳胰徊啥欧数据库课件第三章数据库课件第三章三、带有三、带有ANY(SOME)或或ALL谓词的谓词的子查询子查询谓词语义谓词语义ANY(SOME):任

125、意一个值:任意一个值ALL:所有值:所有值览铺答耳雕估一指泼梆谊叙态敷邹竟幼匿首贯痛拥起琅梭蟹傣很陪妄杉炙数据库课件第三章数据库课件第三章带有带有ANY或或ALL谓词的子查询(续)谓词的子查询(续)需要配合使用比较运算符需要配合使用比较运算符ANY大于子查询结果中的某个值大于子查询结果中的某个值ALL大于子查询结果中的所有值大于子查询结果中的所有值ANY小于子查询结果中的某个值小于子查询结果中的某个值=ANY大于等于子查询结果中的某个值大于等于子查询结果中的某个值=ALL大于等于子查询结果中的所有值大于等于子查询结果中的所有值=ANY小于等于子查询结果中的某个值小于等于子查询结果中的某个值=A

126、LL小于等于子查询结果中的所有值小于等于子查询结果中的所有值=ANY等于子查询结果中的某个值等于子查询结果中的某个值=ALL等于子查询结果中的所有值(通常没有实际意义)等于子查询结果中的所有值(通常没有实际意义)!=(或(或)ANY不等于子查询结果中的某个值不等于子查询结果中的某个值!=(或(或)ALL不等于子查询结果中的任何一个值不等于子查询结果中的任何一个值谬梁胃屈蠢催迂获添藩迎迭俭符压笔股套蜡仁伙搓腺往吏伙瞅坡淹蒸槽雕数据库课件第三章数据库课件第三章例题例题例例42查询其他系中比计算机科学系某一学生年查询其他系中比计算机科学系某一学生年龄小的学生姓名和年龄龄小的学生姓名和年龄SELECT

127、Sname,SageFROMStudentWHERESageANY(SELECTSageFROMStudentWHERESdept=CS)ANDSdeptCS;/*注意这是父查询块中的条件注意这是父查询块中的条件*/秽劳毅略风啸傲蜂蹈霹撞侥颐网稿距斯毛泛层铃闪惨较欢皖吵要饯刃仔教数据库课件第三章数据库课件第三章例题例题结果结果SnameSage王敏王敏18张立张立19执行过程执行过程DBMS执行此查询时,首先处理子查询,找执行此查询时,首先处理子查询,找出出IS系中所有学生的年龄,构成一个集合系中所有学生的年龄,构成一个集合(19,18)。然后处理父查询,找所有不是。然后处理父查询,找所有不是

128、IS系且系且年龄小于年龄小于19或或18的学生。的学生。凯剧舀朋讹墓掐嚼胺升籽俏颗委手王勘主顿纱蓑煞僳帕袒缅勇蔑膨就寄纲数据库课件第三章数据库课件第三章带有带有ANY(SOME)或或ALL谓词的子查谓词的子查询(续)询(续)ANY和和ALL谓词有时可以用集函数实现谓词有时可以用集函数实现ANY与与ALL与集函数的对应关系与集函数的对应关系=或或!=ANYIN-MAXMIN=MINALL-NOTINMINMAX=MAX蹿夷鼻度仁滑月祥讶聊楚埃谁考拱泳嗓掸捅冀揣此裁詹藏婶震墨蕊缩彬匪数据库课件第三章数据库课件第三章带有带有ANY(SOME)或或ALL谓词的子查谓词的子查询(续)询(续)用集函数实现

129、子查询通常比直接用用集函数实现子查询通常比直接用ANY或或ALL查询效率要高,因为前者通常能够减查询效率要高,因为前者通常能够减少比较次数少比较次数琵买稿斑串孩抑掷覆馆拧倦蘑脉萌焊余渊应至泣响茄工恿损捎杂揉酱韩夺数据库课件第三章数据库课件第三章带有带有ANY或或ALL谓词的子查询(续)谓词的子查询(续)例例42:用聚集函数实现例:用聚集函数实现例42SELECTSname,SageFROMStudentWHERESage(SELECTMAX(Sage)FROMStudentWHERESdept=CS)ANDSdeptCS;尧闯鼠廉阁舱怪浮仙悲蜕攘蚊麓涕程些罩郡峻杂设侣激铝李尝质篱良蓝了数据库课

130、件第三章数据库课件第三章例题例题例例43查询其他系中比计算机科学系所有学生年查询其他系中比计算机科学系所有学生年龄都小的学生姓名及年龄。龄都小的学生姓名及年龄。方法一:用方法一:用ALL谓词谓词SELECTSname,SageFROMStudentWHERESageALL(SELECTSageFROMStudentWHERESdept=CS)ANDSdeptCS;腺萎绍孺菠钩橡悠采湍焦侩迪钝迁青幢烛劝里歪韦舞芍鹰过氓从耕爱摸谍数据库课件第三章数据库课件第三章例题例题方法二:用聚集函数方法二:用聚集函数SELECTSname,SageFROMStudentWHERESage(SELECTMIN(

131、Sage)FROMStudentWHERESdept=CS)ANDSdeptCS;抡弛印硝磅蛇昧澳沿淘奄阀采瘦豆惧抨谴耍唆豪重朗彬折霍嘿叼劲潘警丸数据库课件第三章数据库课件第三章四、带有四、带有EXISTS谓词的子查询谓词的子查询1.EXISTS谓词谓词2.NOTEXISTS谓词谓词3.不同形式的查询间的替换不同形式的查询间的替换4.相关子查询的效率相关子查询的效率5.用用EXISTS/NOTEXISTS实现全称量词实现全称量词6.用用EXISTS/NOTEXISTS实现逻辑蕴函实现逻辑蕴函坯点戊祟语谎少受筷擞滞馒舒堰酶弄浅蔽祭喘瘴浊稼搁仅仓鲁效鲁玻郑睫数据库课件第三章数据库课件第三章带有带有

132、EXISTS谓词的子查询谓词的子查询(续续)1. EXISTS1. EXISTS谓词谓词代表存在量词代表存在量词 带有带有EXISTSEXISTS谓词的子查询不返回任何数据,谓词的子查询不返回任何数据,只产生逻辑真值只产生逻辑真值“true”“true”或逻辑假值或逻辑假值“false”“false”。若内层查询结果非空,则返回真值若内层查询结果非空,则返回真值若内层查询结果为空,则返回假值若内层查询结果为空,则返回假值由由EXISTSEXISTS引出的子查询,其目标列表达式通引出的子查询,其目标列表达式通常都用常都用* * ,因为带,因为带EXISTSEXISTS的子查询只返回真的子查询只返

133、回真值或假值,给出列名无实际意义值或假值,给出列名无实际意义2. NOT EXISTS2. NOT EXISTS谓词谓词徊运撇讥苏任茫趣脓贾伏善奎爆花饿盗惮绥赴洽吁强巧啤悯惕驴埔藏冻乌数据库课件第三章数据库课件第三章带有带有EXISTS谓词的子查询谓词的子查询(续续)例例44 44 查询所有选修了查询所有选修了1 1号课程的学生姓名。号课程的学生姓名。 思路分析:思路分析: 本查询涉及本查询涉及StudentStudent和和SCSC关系。关系。 在在StudentStudent中依次取每个元组的中依次取每个元组的SnoSno值,用此值去值,用此值去检查检查SCSC关系。关系。 若若SCSC中

134、存在这样的元组,其中存在这样的元组,其SnoSno值等于此值等于此Student.SnoStudent.Sno值,并且其值,并且其Cno= 1Cno= 1,则取此,则取此Student.SnameStudent.Sname送入结果关系。送入结果关系。酷江有疥爷职虫夕控苹枪改禹瓢僳扒汉啮咨脓抒闭辖鬼汀刚晌艾铭酣毡捶数据库课件第三章数据库课件第三章带有带有EXISTS谓词的子查询谓词的子查询(续续)用嵌套查询用嵌套查询 SELECT Sname SELECT Sname FROM Student FROM Student WHERE EXISTS WHERE EXISTS (SELECT * (S

135、ELECT * FROM SC FROM SC WHERE Sno=Student.Sno AND WHERE Sno=Student.Sno AND Cno= 1 ) Cno= 1 ); 抵皂隔谗蔽若篙侵畦拎浪侮号坤吠滴庆赖郎秋占寞噎责踞谋蜕厌鞋骑拢讨数据库课件第三章数据库课件第三章带有带有EXISTS谓词的子查询谓词的子查询(续续)用连接运算用连接运算SELECT SnameSELECT SnameFROM Student, SCFROM Student, SCWHERE Student.Sno=SC.Sno AND WHERE Student.Sno=SC.Sno AND SC.Cno=

136、 1;SC.Cno= 1;经磺姑董顿瞳遮袁米恃助捅租篮诣诀蛆绣严取拿碍虽纬甘紧敬惹揩料挣呵数据库课件第三章数据库课件第三章带有带有EXISTS谓词的子查询谓词的子查询(续续)例例45 45 查询没有选修查询没有选修1 1号课程的学生姓名。号课程的学生姓名。 SELECT Sname SELECT Sname FROM Student FROM Student WHERE NOT EXISTS WHERE NOT EXISTS (SELECT * (SELECT * FROM SC FROM SC WHERE Sno = Student.Sno WHERE Sno = Student.Sno A

137、ND Cno=1) AND Cno=1);鬼毗谐湖诌渍遮霉状采牢泼狡芥搏槽促芋疯竣堵遭涪麻砂腻扬扮喊是矣振数据库课件第三章数据库课件第三章带有带有EXISTS谓词的子查询谓词的子查询(续续)3. 3. 不同形式的查询间的替换不同形式的查询间的替换一些带一些带EXISTSEXISTS或或NOT EXISTSNOT EXISTS谓词的子查询不谓词的子查询不能被其他形式的子查询等价替换能被其他形式的子查询等价替换所有带所有带ININ谓词、比较运算符、谓词、比较运算符、ANYANY和和ALLALL谓词谓词的子查询都能用带的子查询都能用带EXISTSEXISTS谓词的子查询等价谓词的子查询等价替换。替换

138、。 饶每藤车薛亥乞毒哉呆抢虾犬取除盾捆筹女玻臣娱弃放傲媒隶夯堑妥拽叼数据库课件第三章数据库课件第三章带有带有EXISTS谓词的子查询谓词的子查询(续续)例例3939可以用带可以用带EXISTSEXISTS谓词的子查询替换:谓词的子查询替换: SELECT Sno SELECT Sno,SnameSname,SdeptSdept FROM Student S1 FROM Student S1 WHERE EXISTS WHERE EXISTS (SELECT *(SELECT * FROM Student S2 FROM Student S2 WHERE S2.Sdept = S1.Sdept

139、AND WHERE S2.Sdept = S1.Sdept AND S2.Sname = S2.Sname = 刘晨刘晨 ) );攒上暇详魔屑粒宿斩足灭纺徐壕劳薄顶淫尖肉沏忻果颜魔设衬睛凉她餐荆数据库课件第三章数据库课件第三章带有带有EXISTS谓词的子查询谓词的子查询(续续)4. 4. 相关子查询的效率相关子查询的效率由于带由于带EXISTSEXISTS量词的相关子查询只关心内层量词的相关子查询只关心内层查询是否有返回值,并不需要查具体值,因查询是否有返回值,并不需要查具体值,因此其效率并不一定低于其他形式的查询。此其效率并不一定低于其他形式的查询。不相关子查询的效率高于相关子查询的效率不相

140、关子查询的效率高于相关子查询的效率绊的惰礁燃冯憋碉肘狭鸭噪遂摩佰嫂介饺烟黎团惦氛百打泵耍峰永肆汉哈数据库课件第三章数据库课件第三章带有带有EXISTS谓词的子查询谓词的子查询(续续)相关子查询的效率可能高于连接查询相关子查询的效率可能高于连接查询例:查询选修了课程的学生姓名例:查询选修了课程的学生姓名法一:法一: SELECT Sname SELECT Sname FROM Student FROM Student WHERE EXISTS WHERE EXISTS (SELECT * (SELECT * FROM SC FROM SC WHERE Sno=Student.Sno) WHERE

141、 Sno=Student.Sno);施潞娩滋护人董钱硝债腔澜勤判夕奶诞氮寸雌矣草伶畦陀屏姜磕石唆废谭数据库课件第三章数据库课件第三章带有带有EXISTS谓词的子查询谓词的子查询(续续)法二:法二: SELECT Sname SELECT Sname FROM Student FROM Student,SCSC WHERE Student.Sno=SC.Sno WHERE Student.Sno=SC.Sno;怒虎滋饱显害搁羽遍胃茂单丸龙驳改扬醇琳畏难脐牙鄂伙讶趟湍案悍博自数据库课件第三章数据库课件第三章带有带有EXISTS谓词的子查询谓词的子查询(续续)法三:法三: SELECT Sname

142、SELECT Sname FROM Student FROM Student WHERE sno in WHERE sno in (SELECT distinct sno (SELECT distinct sno FROM SC) FROM SC);紧姑守劳耙妄嚷盖且识倦誓虫徊灰啡劈六挫贯聊莱嚏屋瘪视犁刚桂瑚即吠数据库课件第三章数据库课件第三章带有带有EXISTS谓词的子查询谓词的子查询(续续)5.5.用用EXISTS/NOT EXISTSEXISTS/NOT EXISTS实现全称量词实现全称量词( (难点难点) )SQLSQL语言中没有全称量词语言中没有全称量词 (For allFor al

143、l)可以把带有全称量词的谓词转换为等价的带有可以把带有全称量词的谓词转换为等价的带有存在量词的谓词:存在量词的谓词: ( ( x)P x)P ( ( x( x( P) P) 娇论蘸缄积稀舅柿州瞪逸瓣误坦趴慷幅移化惕企股执逢拂洲茬氢歼靴皮果数据库课件第三章数据库课件第三章带有带有EXISTS谓词的子查询谓词的子查询(续续)例例46 46 查询选修了全部课程的学生姓名。查询选修了全部课程的学生姓名。 SELECT Sname SELECT Sname FROM Student FROM Student WHERE NOT EXISTS WHERE NOT EXISTS (SELECT *SELEC

144、T * FROM Course FROM Course WHERE NOT EXISTS WHERE NOT EXISTS (SELECT * (SELECT * FROM SC FROM SC WHERE Sno= Student.Sno WHERE Sno= Student.Sno AND Cno= Course.Cno AND Cno= Course.Cno);戎猩呛表张誉恐阎索弛惧渡蒋耻歼费苫雅跨扶赢袜屹肩押睫周润滥呈啡墓数据库课件第三章数据库课件第三章带有带有EXISTS谓词的子查询谓词的子查询(续续)6.用用EXISTS/NOTEXISTS实现逻辑蕴函实现逻辑蕴函(难点难点)SQL

145、语言中没有蕴函语言中没有蕴函(Implication)逻辑运算逻辑运算可以利用谓词演算将逻辑蕴函谓词等价转换为:可以利用谓词演算将逻辑蕴函谓词等价转换为:pq pq( ( y)P y)P q ( ( y( y( (P (P q) ) ( ( y( y( ( ( pq) ( ( y( y(p q)访精褪幅桶偷滋歧铱希加掐塌住随烫商眯共捌称噪耘喻欣球赏者忻岭卤湖数据库课件第三章数据库课件第三章带有带有EXISTS谓词的子查询谓词的子查询(续续)例例47 47 查询至少选修了学生查询至少选修了学生200215122200215122选修的全部课程的选修的全部课程的学生号码。学生号码。解题思路:解题思

146、路:用逻辑蕴函表达:查询学号为用逻辑蕴函表达:查询学号为x x的学生,对所有的课程的学生,对所有的课程y y,只要,只要200215122200215122学生选修了课程学生选修了课程y y,则,则x x也选修了也选修了y y。形式化表示:形式化表示:用用P P表示谓词表示谓词 “ “学生学生200215122200215122选修了课程选修了课程y”y”用用q q表示谓词表示谓词 “ “学生学生x x选修了课程选修了课程y”y”则上述查询为则上述查询为: (: ( y) p y) p q q 潞且唉泥寂征辱臣拨妨恶寻彭蓑偷睁调杰辛澡婿欧牛饱化糖左奄寥安据摘数据库课件第三章数据库课件第三章带有

147、带有EXISTS谓词的子查询谓词的子查询(续续)变换后语义:不存在这样的课程变换后语义:不存在这样的课程y,学生,学生200215122200215122选修了选修了y,而学生,而学生x没有选。没有选。粒厢了娩等姆钾刃诬秦靡缘虫概藉坎咨涎孤阮省褐控伙闲厘崩洒粗轻憨厩数据库课件第三章数据库课件第三章带有带有EXISTS谓词的子查询谓词的子查询(续续)用用NOTEXISTS谓词表示谓词表示:SELECTDISTINCTSnoFROMSCSCXWHERENOTEXISTS(SELECT*FROMSCSCYWHERESCY.Sno=200215122200215122ANDNOTEXISTS(SELE

148、CT*FROMSCSCZWHERESCZ.Sno=SCX.SnoANDSCZ.Cno=SCY.Cno);绷厚歇呵伴韵毫邢撩丘歼缔因类硒谱沈纽绞贬耿毯廓淑酮刽靡疵纲傍素扫数据库课件第三章数据库课件第三章3.4数据查询数据查询l3.4.1单表查询单表查询l3.4.2连接查询连接查询l3.4.3嵌套查询嵌套查询l3.3.4集合查询集合查询l3.4.5SELECT语句的一般格式语句的一般格式拉宠先瑶帆界庚芳颁世宁饰趣申回稼洼低总并禹寸味力县娩遥紊仑舵夕素数据库课件第三章数据库课件第三章3.4.4 3.4.4 集合查询集合查询l标准标准SQLSQL直接支持的集合操作种类直接支持的集合操作种类并操作并操作

149、(UNION)(UNION)l一般商用数据库支持的集合操作种类一般商用数据库支持的集合操作种类并操作并操作(UNION)(UNION)交操作交操作(INTERSECT)(INTERSECT)差操作差操作(MINUS)(MINUS)咐移需丁仅然振圭高赃酸唱尾彦联宗枯波构正斩谱皂懒竟蹋数垦归邵允贫数据库课件第三章数据库课件第三章1并操作并操作l形式形式UNION参加参加UNION操作的各结果表的列数必须相操作的各结果表的列数必须相同;对应项的数据类型也必须相同同;对应项的数据类型也必须相同喳越席您贴吞敌氟涡颈奎啄赫烟煽诚士墅袁频烷煎瑚垮轻仪称银孜倍讥计数据库课件第三章数据库课件第三章并操作(续)并

150、操作(续)例例48查询计算机科学系的学生及年龄不大于查询计算机科学系的学生及年龄不大于19岁的学生。岁的学生。方法一:方法一:SELECT*FROMStudentWHERESdept=CSUNIONSELECT*FROMStudentWHERESage=19;叶徐训避债临矢盗丢淫逻拦骆酌忱遭脉遥簇用啥蛮指哄锯泊纺詹性僵罐瀑数据库课件第三章数据库课件第三章并操作(续)并操作(续)方法二:方法二:SELECTDISTINCT*FROMStudentWHERESdept=CSORSage=19;规佃揩棺感环吠嫉酶澳会抹粥冈红叠黍痰聪焦挛班测卓韩三刹皆抚香葬记数据库课件第三章数据库课件第三章并操作(续

151、)并操作(续)例例49查询选修了课程查询选修了课程1或者选修了课程或者选修了课程2的学生。的学生。方法一:方法一:SELECTSnoFROMSCWHERECno=1UNIONSELECTSnoFROMSCWHERECno=2;拷瓶唯待早噪损昂蓑化樊疚暖驻梯鹃顿婚颠瓢踪丑河夷惭埃堪阜炸馅敞汉数据库课件第三章数据库课件第三章并操作(续)并操作(续)方法二:方法二:SELECTDISTINCTSnoFROMSCWHERECno=1ORCno=2;慨醛品耽画墩参浮悔撞瓤俊喀笑愈出眷矛蚤许俊凸斑诽谊纪敞失污滔括盗数据库课件第三章数据库课件第三章2交操作交操作标准标准SQL中没有提供集合交操作,但可中没有

152、提供集合交操作,但可用其他方法间接实现。用其他方法间接实现。卜犯砖逞习雄谦奏勇藩少泻度炯部考遗搁瞒妈遂锁氦螺伞圈樱淌流匙碗绿数据库课件第三章数据库课件第三章2交操作交操作例例50查询计算机科学系的学生与年龄不大于查询计算机科学系的学生与年龄不大于19岁的学生岁的学生的交集的交集本例实际上就是查询计算机科学系中年龄不大于本例实际上就是查询计算机科学系中年龄不大于19岁的岁的学生学生SELECT*FROMStudentWHERESdept=CSANDSage=19;或或SELECT*FROMStudentWHERESdept=CSINTERSECTSELECT*FROMStudentWHERESa

153、ge19;或或SELECT*FROMStudentWHERESdept=CSEXCEPTSELECT*FROMStudentWHERESage=19;榨航晓钳俯谈棍恕剐俯爵耶半甚稀蓄谦笛番侧勇糟非尘且肮婚胎帆积踞镜数据库课件第三章数据库课件第三章4.对集合操作结果的排序对集合操作结果的排序lORDERBY子句只能用于对最终查询结子句只能用于对最终查询结果排序,不能对中间结果排序果排序,不能对中间结果排序l任何情况下,任何情况下,ORDERBY子句只能出现子句只能出现在最后在最后l对集合操作结果排序时,对集合操作结果排序时,ORDERBY子子句中用数字指定排序属性句中用数字指定排序属性new惑虱

154、伟鞋猎贰之众叹脊籽蓬廓绩雪汲走辆旺湃条墟氢长多亥揩瑰斤袜彦宦数据库课件第三章数据库课件第三章对集合操作结果的排序(续)对集合操作结果的排序(续)例例53错误写法错误写法SELECT*FROMStudentWHERESdept=CSORDERBYSnoUNIONSELECT*FROMStudentWHERESage=19ORDERBYSno;new哈肮梯诣萧农碗广盎辕泄序骡嘱蛤驱忍淖祟家行合飘罢牵收挟劈矾息所碰数据库课件第三章数据库课件第三章对集合操作结果的排序(续)对集合操作结果的排序(续)正确写法正确写法SELECT*FROMStudentWHERESdept=CSUNIONSELECT*F

155、ROMStudentWHERESage=19ORDERBY1;new颊霉贿俺峙骄捉豢饲讲涪短沼酪苯洋致贰淑瑚八壬卸竹彝胶嚷思竣界合掇数据库课件第三章数据库课件第三章3.4数据查询数据查询l3.4.1单表查询单表查询l3.4.2连接查询连接查询l3.4.3嵌套查询嵌套查询l3.3.4集合查询集合查询l3.4.5SELECT语句的一般格式语句的一般格式襄爸砚悸兽玲吟湍钦奏促弯愉芭目革匆证阁俯画泊千朴谊刀除貌谆爽索芽数据库课件第三章数据库课件第三章3.3.5小结小结lSELECT语句的一般格式语句的一般格式SELECTALL|DISTINCT别名别名,别名别名FROM别名别名,别名别名WHEREGR

156、OUPBYHAVINGORDERBYASC|DESC;潘拒导戍登疯梨抒圃苏种嘿术容酪恃基勇依椭信荡而疫聚蜂雄她哥侄刷馁数据库课件第三章数据库课件第三章小结(续)小结(续)l目标列表达式目标列表达式目标列表达式格式目标列表达式格式(1).*(2).,.:由:由属性列属性列、作用于属性、作用于属性列的列的集函数集函数和和常量常量的任意算术运算(的任意算术运算(+,-,*,/)组成的运算公式。)组成的运算公式。梧猛医讯蝎巫隶伶柄浑进诉乎冬拘与矣孪疗笑销糟要漂嫉峰湾侯钻耕点揖数据库课件第三章数据库课件第三章小结(续)小结(续)集函数格式集函数格式COUNTSUMAVG(DISTINCT|ALL)MAX

157、MINCOUNT(DISTINCT|ALL*)果挑蛆架刀酌炳习浸携集伯卉嫩凤元醋闽哭泼哉切万淆堡券逾哀灾鳃玲辆数据库课件第三章数据库课件第三章小结(续)小结(续)l条件表达式格式条件表达式格式(1) ANY|ALL(SELECT语句语句)减皇聂厢浪圭窃狼岩钳歌钙乔绊臂辗春凤橇颅壶蜕鹿寐洞傣郴痴梭耀狱伸数据库课件第三章数据库课件第三章小结(续)小结(续)(2)NOTBETWEENAND(SELECT(SELECT语句语句)语句语句)宁山局行菜蛹遍站赞深扭碉奋躲侣辜圾酝刹字抠衍侩啮照贩碱何鸯村垃扁数据库课件第三章数据库课件第三章小结(续)小结(续)(3) (,)NOTIN(SELECT语句语句)纲

158、蔼姨隋胜柳沸疗捶西丁炙适深补泛漂陵吻蚕彝腔苛焕句劝精懦烧虑羊势数据库课件第三章数据库课件第三章小结(续)小结(续)(4)NOTLIKE(5)ISNOTNULL(6)NOTEXISTS(SELECT语句语句)驯荆侈赦饭测玲尘祷侣桑运确荡洲省斜链坠恒出砖诧晰卯涸拷晤瑚里娜陀数据库课件第三章数据库课件第三章小结(续)小结(续)(7)ANDANDOROR去痈跪襟拌烘膘侩虏填揩妊邻咋胰愤端芒中腾信能雹咸袍究迢断撩衍蘸百数据库课件第三章数据库课件第三章第第3章章关系数据库标准语言关系数据库标准语言SQLl3.1SQL概述概述l3.2学生学生课程数据库课程数据库l3.3数据定义数据定义l3.4数据查询数据查

159、询l3.5数据更新数据更新l3.6视图视图l3.7小结小结示讶粉坷潦氓阔阔札乱却镊困静迟聋佰抱滚究咏椭锻筋庇巍等劳霄艾旱桂数据库课件第三章数据库课件第三章3.5数数据据更更新新3.5.1插入数据插入数据3.5.2修改数据修改数据3.5.3删除数据删除数据瀑曝济邀锚剥躯们盐鸥搀止箕曝栓擞亏采虏蛋掀奄影晕尤鲜丸赔山豢蟹黄数据库课件第三章数据库课件第三章3.5数数据据更更新新3.5.1插入数据插入数据3.5.2修改数据修改数据3.5.3删除数据删除数据牢揉豫洲矫罗甭井敞坦桓羡棵袭宇驹词非贫秋庐衬霍驶寨镐模窗她挥喉我数据库课件第三章数据库课件第三章3.5.1插入数据插入数据l两种插入数据方式两种插入数

160、据方式插入单个元组插入单个元组插入子查询结果插入子查询结果蚌咆耳球聂挟登较绦告擒暴舰套榨戚孔九建待坡杠更盎孰谚娶彰铀喊埂仗数据库课件第三章数据库课件第三章1.插入单个元组插入单个元组l语句格式语句格式INSERTINTO(,)VALUES(,)功能功能将新元组插入指定表中。将新元组插入指定表中。集椭兵盾康斗琅伊灼援胳蹦省孽喧椭凌鸡顾轰沙九厌治趋俄酬寡疵裕拦惺数据库课件第三章数据库课件第三章插入单个元组(续)插入单个元组(续)INTO子句子句指定要插入数据的表名及属性列指定要插入数据的表名及属性列属性列的顺序可与表定义中的顺序不一致属性列的顺序可与表定义中的顺序不一致没有指定属性列:表示要插入的

161、是一条完整的元没有指定属性列:表示要插入的是一条完整的元组,且属性列顺序与表定义中的顺序一致组,且属性列顺序与表定义中的顺序一致指定部分属性列:插入的元组在其余属性列上取指定部分属性列:插入的元组在其余属性列上取空值空值VALUES子句子句提供的值必须与提供的值必须与INTO子句匹配子句匹配值的个数值的个数值的类型值的类型泌羞岔从洞茫凛披玻减削幂捻镇诺慌盔远蛹篱宪审坏餐喧酌狰收疮倒腋苞数据库课件第三章数据库课件第三章插入单个元组(续)插入单个元组(续)lDBMS在执行插入语句时会检查所插元组在执行插入语句时会检查所插元组是否破坏表上已定义的完整性规则是否破坏表上已定义的完整性规则实体完整性实体

162、完整性参照完整性参照完整性用户定义的完整性用户定义的完整性对于有对于有NOTNULL约束的属性列是否提供了非空值约束的属性列是否提供了非空值对于有对于有UNIQUE约束的属性列是否提供了非重复值约束的属性列是否提供了非重复值对于有值域约束的属性列所提供的属性值是否在值对于有值域约束的属性列所提供的属性值是否在值域范围内域范围内垣尚途宠仍朝毁窘吞弊滚了郝村诞佑赦直浦脱拥闻研谎巷徘干烃食鼓嘎韧数据库课件第三章数据库课件第三章插入单个元组(续)插入单个元组(续)例例1将一个新学生记录(学号:将一个新学生记录(学号:200215128;姓名:;姓名:陈冬;性别:男;所在系:陈冬;性别:男;所在系:IS

163、;年龄:;年龄:18岁)岁)插入到插入到Student表中。表中。INSERTINTOStudentVALUES(200215128,陈冬陈冬,男男,IS,18);或或INSERTINTOStudent(Sno,Sname,Ssex,Sdept,Sage)VALUES(200215128,陈冬陈冬,男男,IS,18);收抛刹捅桃蹋郸乳藏站认匠作拿矫家羌秃走于陈酸锑亿仆稼辆野箍寝拭崖数据库课件第三章数据库课件第三章插入单个元组(续)插入单个元组(续)例例2将学生张成民的信息插入到将学生张成民的信息插入到Student表中。表中。INSERTINTOStudentVALUES(200215126,

164、张成民张成民,男男,18,CS););莽岁伟鉴恿抽持茄蹿慰党织壤穿张牌愚涛阳塔匹讥甭净殃长麓椿匆渡钡靶数据库课件第三章数据库课件第三章插入单个元组(续)插入单个元组(续)例例3插入一条选课记录插入一条选课记录(200215128,1)。INSERTINTOSC(Sno,Cno)VALUES(200215128,1);新插入的记录在新插入的记录在Grade列上取空值列上取空值或或INSERTINTOSCVALUES(200215128,1,NULL);副琉剂夏叹腹熊媒歹像层郴林鞭扯斟睦迷耿欢锁垣池矩鸭砰讫恍朝跨辑晃数据库课件第三章数据库课件第三章2.插入子查询结果插入子查询结果l语句格式语句格式

165、INSERTINTO(,)子查询;子查询;功能功能将子查询结果插入指定表中将子查询结果插入指定表中疚翁而勃戎董悬否杆徐吮兑秉漏纫栽嗜哇氧流故怠携双钟篷酵喜嫉帘蔓茅数据库课件第三章数据库课件第三章插入子查询结果(续)插入子查询结果(续)例例4对每一个系,求学生的平均年龄,并对每一个系,求学生的平均年龄,并把结果存入数据库。把结果存入数据库。第一步:建表第一步:建表CREATETABLEDept_age(SdeptCHAR(15)/*系名系名*/Avg_ageSMALLINT)/*学生平均年龄学生平均年龄*/绍门怪本棒欠悲挑宦旦爪覆日悔鹿凉枝静司悠姆阉诱侗挠蝇雅醋澜梧呵宴数据库课件第三章数据库课件

166、第三章插入子查询结果(续)插入子查询结果(续)第二步:插入数据第二步:插入数据INSERTINTODept_age(Sdept,Avg_age)SELECTSdept,AVG(Sage)FROMStudentGROUPBYSdept;辆畸嫌耕骆晴硅沪楷带究磷珠文糯穿卡白怀葵进瑟新据般化荐揩逾埃物拦数据库课件第三章数据库课件第三章3.5数数据据更更新新3.5.1插入数据插入数据3.5.2修改数据修改数据3.5.3删除数据删除数据认井毋铣彤巧死钨垃攫拯衔琐素妨沸呐镁按咏炸蜡见猎掌绒轮捷舔琉安啄数据库课件第三章数据库课件第三章3.5.2修改数据修改数据l语句格式语句格式UPDATESET=,=WHE

167、RE;功能功能修改指定表中满足修改指定表中满足WHERE子句条件的元组子句条件的元组蜘约宜谴甫责栖跺卯孰驮冰诧拳违绘场付杯掏衅燎饰敞啼掘懦是阐耿烟帘数据库课件第三章数据库课件第三章修改数据(续)修改数据(续)SET子句子句指定修改方式指定修改方式要修改的列要修改的列修改后取值修改后取值WHERE子句子句指定要修改的元组指定要修改的元组缺省表示要修改表中的所有元组缺省表示要修改表中的所有元组伪握柳肆敛卓篡恢斡隶松隔倦法俞攘指释脱赎保懒妇簧枢壕逼每烛杠唾妈数据库课件第三章数据库课件第三章修改数据(续)修改数据(续)lDBMS在执行修改语句时会检查修改操作是否在执行修改语句时会检查修改操作是否破坏表

168、上已定义的完整性规则破坏表上已定义的完整性规则实体完整性实体完整性一些一些DBMS规定主码不允许修改规定主码不允许修改用户定义的完整性用户定义的完整性NOTNULL约束约束UNIQUE约束约束值域约束值域约束妻狂猪逊虞稗榜衰逆赖两颊卫尿饥鄙沁险丈埋癣僚筐极栋怠范礁筋窜键振数据库课件第三章数据库课件第三章修改数据(续)修改数据(续)l三种修改方式三种修改方式修改某一个元组的值修改某一个元组的值修改多个元组的值修改多个元组的值带子查询的修改语句带子查询的修改语句蓉擦箔揣涸壳吟拂捌睡樱沽揭釜斤乞持想嘻堡饱娃吟壳什撒婚肿惧坝寓褪数据库课件第三章数据库课件第三章1.修改某一个元组的值修改某一个元组的值例

169、例5将学生将学生200215121的年龄改为的年龄改为22岁。岁。UPDATEStudentSETSage=22WHERESno=200215121;孜冀的郸巨答蛔们鹅庐篙强瘸隶障矗技柿权汉痹袍尸婚冠揩瀑咐轧塌摘打数据库课件第三章数据库课件第三章2.修改多个元组的值修改多个元组的值例例6将所有学生的年龄增加将所有学生的年龄增加1岁。岁。UPDATEStudentSETSage=Sage+1;浓拧原效疟脆滁饰赃欣储落晨鳞烤靳玲匙腔要芯婆迷郭酱焙魂窝阮召滩硕数据库课件第三章数据库课件第三章3.带子查询的修改语句带子查询的修改语句例例7将计算机科学系全体学生的成绩置零。将计算机科学系全体学生的成绩置

170、零。UPDATESCSETGrade=0WHERECS=(SELETESdeptFROMStudentWHEREStudent.Sno=SC.Sno);寻骨咬榆秀烹哩赣诚话户兽兆珠竟扣闪趴碱补记伦裹苍瞧拇匝臻淖眉船徽数据库课件第三章数据库课件第三章带子查询的修改语句(续)带子查询的修改语句(续)例例7解法解法2UPDATESCSETGrade=0WHERESNOin(SELETESnoFROMStudentWHERESdept=CS);荐东捧父愧因权利娜耳筒酞块绣疥冻歹豪喧扳豆象狮渡兑吾湛鞋乏嚏诚暂数据库课件第三章数据库课件第三章3.5数数据据更更新新3.5.1插入数据插入数据3.5.2修改数

171、据修改数据3.5.3删除数据删除数据肄弯楔墩劳衔里辆扰祈巴红钞电构揉江阿绞醛看煌爬塘善滇摘膳历蛇涨籍数据库课件第三章数据库课件第三章3.5.3删除数据删除数据l语句格式语句格式DELETEFROMWHERE;功能功能w删除指定表中满足删除指定表中满足WHERE子句条件的元组子句条件的元组WHERE子句子句w指定要删除的元组指定要删除的元组w缺省表示要修改表中的所有元组缺省表示要修改表中的所有元组耀岛星装瓮岭逢虹岭答带透密饶喧饵迎壬甘诺利运署粉梭弓煌傍倔铣馅绢数据库课件第三章数据库课件第三章删除数据删除数据(续续)lDBMS在在执执行行删删除除语语句句时时会会检检查查所所删删元元组是否破坏表上已

172、定义的完整性规则组是否破坏表上已定义的完整性规则参照完整性参照完整性不允许删除不允许删除级联删除级联删除继驭额琵忽涟凹禽窿锁蹋巳瘁晨世漓签党窄买焦夷彬鸳画坞陨醇衔治偷槛数据库课件第三章数据库课件第三章删除数据(续)删除数据(续)l三种删除方式三种删除方式删除某一个元组的值删除某一个元组的值删除多个元组的值删除多个元组的值带子查询的删除语句带子查询的删除语句密器杜思彭撬毒扛巍庇芹野逐捞伏传怔悠积怎撂公堰低淬替烽津纹志侄粗数据库课件第三章数据库课件第三章1.删除某一个元组的值删除某一个元组的值例例8删除学号为删除学号为200215128的学生记录。的学生记录。DELETEFROMStudentWH

173、ERESno=200215128;宋某傈贞喘倡鹃冀贴就号瞻娶甚辟沾距缆儿箔西搔朔摸侈龋臆季爬瞧渐涡数据库课件第三章数据库课件第三章2.删除多个元组的值删除多个元组的值例例9删除删除2号课程的所有选课记录。号课程的所有选课记录。DELETEFROMSC;WHERECno=2;例例10删除所有的学生选课记录。删除所有的学生选课记录。DELETEFROMSC;阁吴钧佃佣搪腕妹泡心遵戒开酗睫香董异渺色酿递扎七讯意鼓募牛脊督栏数据库课件第三章数据库课件第三章3.带子查询的删除语句带子查询的删除语句例例11删除计算机科学系所有学生的选课记录。删除计算机科学系所有学生的选课记录。DELETEFROMSCWH

174、ERECS=(SELETESdeptFROMStudentWHEREStudent.Sno=SC.Sno);痢汾贬渝走耶吴猩女转烯码日核门值留扶晰莎疆逃哪娘刽廷冀侣牌巴潦冠数据库课件第三章数据库课件第三章带子查询的删除语句(续)带子查询的删除语句(续)例例11解法解法2DELETEFROMSCWHERESNOin(SELETESnoFROMStudentWHERESdept=CS);蛙挑孽首蔑诬盔悍比肛竖袁鲤韭毡王萤象受嚼府奈棚仲甸痢高蛛拓罗木煽数据库课件第三章数据库课件第三章第第3章章关系数据库标准语言关系数据库标准语言SQLl3.1SQL概述概述l3.2学生学生课程数据库课程数据库l3.3

175、数据定义数据定义l3.4数据查询数据查询l3.5数据更新数据更新l3.6视图视图l3.7小结小结靶彪怖尧犬山满矽逃翟咽沿棺嚎愿侧蝉妻琳毋舒魁溪榜鼎厘斥爸仕葡灿疵数据库课件第三章数据库课件第三章3.6视视图图l视图的特点视图的特点虚表,是从一个或几个基本表(或视图)导出的表虚表,是从一个或几个基本表(或视图)导出的表只存放视图的定义,不会出现数据冗余只存放视图的定义,不会出现数据冗余基表中的数据发生变化,从视图中查询出的数据也基表中的数据发生变化,从视图中查询出的数据也随之改变随之改变基于视图的操作基于视图的操作定义视图定义视图(DDL)建立建立定义基于该视图的新视图定义基于该视图的新视图删除删

176、除查询查询(DML)受限更新受限更新(DML)瞅徒蹬破臭狙辽秦娱共湾硕怠定夺婿某窟尺骆福钥皇窘绑乡乘悄沸董刮蛊数据库课件第三章数据库课件第三章3.6视视图图3.6.1定义视图定义视图3.6.2查询视图查询视图3.6.3更新视图更新视图3.6.4视图的作用视图的作用程锥宾么嘉奏新蔗蜀不驭效取米美娩涎癸连憨恐临买祁莆门利模渗趣瘤听数据库课件第三章数据库课件第三章3.6视视图图3.6.1定义视图定义视图3.6.2查询视图查询视图3.6.3更新视图更新视图3.6.4视图的作用视图的作用赘栈传褂三涌榷晴赁阿耀碱暗费玫释宜瘸栈烫葫仙脖壳津情逾刁知乎凿迸数据库课件第三章数据库课件第三章3.6.1定义视图定义

177、视图1.建立视图建立视图2.删除视图删除视图既掳绕携照析津勿嘘粉弱票芥桂绊埔耘摧潭续彩辛盏农饺箔徘稳鸭洋饵淡数据库课件第三章数据库课件第三章1.建立视图建立视图l语句格式语句格式CREATEVIEW(,)ASWITHCHECKOPTION;岸谤同地锥票捕公樊呢腿淄茹仙亏惟尖解纲降晃导沿桔插刷掠孔剐讥尖甫数据库课件第三章数据库课件第三章建立视图(续)建立视图(续)组成视图的属性列名或全部省略或全部指定组成视图的属性列名或全部省略或全部指定省略视图的各个属性列名,则隐含该视图由省略视图的各个属性列名,则隐含该视图由子查询中子查询中SELECT子句目标列中的诸字段组子句目标列中的诸字段组成。成。必须

178、明确指定组成视图的所有列名的情形必须明确指定组成视图的所有列名的情形(1)某个目标列不是单纯的属性名,而是集函数或某个目标列不是单纯的属性名,而是集函数或列表达式列表达式(2)目标列为目标列为*(3)多表连接时选出了几个同名列作为视图的字段多表连接时选出了几个同名列作为视图的字段(4)需要在视图中为某个列启用新的更合适的名字需要在视图中为某个列启用新的更合适的名字挛夷佑迂霞缓烩剩颈具圭辱艰裸唤淤哗新帖脱雪贡公荚壹睡接绣耀铂巢枷数据库课件第三章数据库课件第三章建立视图(续)建立视图(续)子查询子查询不含不含ORDERBY子句和子句和DISTINCT短语的短语的SELECT语句语句WITHCHEC

179、KOPTION透过视图进行增删改操作时,不得破坏视透过视图进行增删改操作时,不得破坏视图定义中的谓词条件(即子查询中的条件图定义中的谓词条件(即子查询中的条件表达式)表达式)库妆蛹寂榴询潘某脉隐孺烘憨泌在淋襄卧传收谆掏诉非邱时骄愚栏躁厢庙数据库课件第三章数据库课件第三章建立视图(续)建立视图(续)lDBMS执行执行CREATEVIEW语句时只是语句时只是把视图的定义存入数据字典,并不执行把视图的定义存入数据字典,并不执行其中的其中的SELECT语句。只是在对视图查语句。只是在对视图查询时,才按视图的定义从基本表中将数询时,才按视图的定义从基本表中将数据查出。据查出。莱倦他沉辜熬膘辟萤哎展继熏凋

180、肤谓絮毕计蛙峡榨贾邵缚鱼适野怎照汛读数据库课件第三章数据库课件第三章建立视图(续)建立视图(续)l常见的视图形式常见的视图形式行列子集视图行列子集视图WITHCHECKOPTION的视图的视图基于多个基表的视图基于多个基表的视图基于视图的视图基于视图的视图带表达式的视图带表达式的视图分组视图分组视图赔沫卧幌脚痕脊痘眯蜀唉赡斌瞧卤献顿内蚕疫迸竞贩逸瓦怖偶酵箔打蒸北数据库课件第三章数据库课件第三章建立视图(续)建立视图(续)l行列子集视图行列子集视图从单个基本表导出从单个基本表导出只是去掉了基本表的某些行和某些列,只是去掉了基本表的某些行和某些列,但保留了码但保留了码柔裸陀羹伞掩寺逢苞孰此斌亥砒傀

181、坍静饰席源璃逃洛香湛瑶垢伯首菱缀溶数据库课件第三章数据库课件第三章建立视图(续)建立视图(续)例例1建立信息系学生的视图。建立信息系学生的视图。CREATEVIEWIS_StudentASSELECTSno,Sname,SageFROMStudentWHERESdept=IS;行列子集视图视图行列子集视图视图IS_Student由由Sno,Sname,Sage三列组成三列组成会盒算最笔渐拖涝猴拽朵垣狄汛檀腐搂宏潞钡近针印堪遏涟挥弥席警雨讹数据库课件第三章数据库课件第三章建立视图(续)建立视图(续)lWITHCHECKOPTION的视图的视图例例2建立信息系学生的视图,并要求透过该视图建立信息系

182、学生的视图,并要求透过该视图进行的更新操作只涉及信息系学生。进行的更新操作只涉及信息系学生。CREATEVIEWIS_StudentASSELECTSno,Sname,SageFROMStudentWHERESdept=ISWITHCHECKOPTION;钩青管楚嘘捅潍脯颠鳖夕吟轻熬芋接蝎沏冷沼猩拘辖线崭暗屠脖歼吃砷厨数据库课件第三章数据库课件第三章建立视图(续)建立视图(续)对对IS_Student视图的更新操作视图的更新操作修改操作:修改操作:DBMS自动加上自动加上Sdept=IS的的条件条件删除操作:删除操作:DBMS自动加上自动加上Sdept=IS的的条件条件插入操作:插入操作:DB

183、MS自动检查自动检查Sdept属性值属性值是否为是否为IS如果不是,则拒绝该插入操作如果不是,则拒绝该插入操作如果没有提供如果没有提供Sdept属性值,则自动定属性值,则自动定义义Sdept为为IS链具菩糖脱傲寺祷永巨椰邢蹦跨膳预缴藏汁词炮枚间名彭始朗尘礼缺贷狭数据库课件第三章数据库课件第三章建立视图(续)建立视图(续)l基于多个基表的视图基于多个基表的视图例例3建立信息系选修了建立信息系选修了1号课程的学生视图。号课程的学生视图。CREATEVIEWIS_S1(Sno,Sname,Grade)ASSELECTStudent.Sno,Sname,GradeFROMStudent,SCWHERE

184、Sdept=ISANDStudent.Sno=SC.SnoANDSC.Cno=1;由于视图由于视图IS_S1的属性列中包含了的属性列中包含了Student表与表与SC表表的同名列的同名列Sno,所以必须在视图名后面明确说明视,所以必须在视图名后面明确说明视图的各个属性列名。图的各个属性列名。赛昂辉艰锅捶芍独忧割挖甚捐珐涅甲循攘痰塔敏餐金孙嘶恒望叁姜砸径辜数据库课件第三章数据库课件第三章建立视图(续)建立视图(续)l基于视图的视图基于视图的视图例例4建立信息系选修了建立信息系选修了1号课程且成绩在号课程且成绩在90分以上的学分以上的学生的视图。生的视图。CREATEVIEWIS_S2ASSELE

185、CTSno,Sname,GradeFROMIS_S1WHEREGrade=90;视图视图IS_S2建立在视图建立在视图IS_S1之上之上扔佬诸柔投金虐菩沉蓝授洋能摆化筛砷译帘域守紫乳涟徘立孝取艘捉小孔数据库课件第三章数据库课件第三章建立视图(续)建立视图(续)l带表达式的视图带表达式的视图在设计数据库时,为了减少数据冗余,基本在设计数据库时,为了减少数据冗余,基本表中只存放基本数据,由基本数据经过各种表中只存放基本数据,由基本数据经过各种计算派生出的数据一般是不存储的。计算派生出的数据一般是不存储的。视图中的数据并不实际存储,所以定义视图视图中的数据并不实际存储,所以定义视图时可以根据应用的需

186、要,设置一些派生属性时可以根据应用的需要,设置一些派生属性列,以方便应用程序的编制。列,以方便应用程序的编制。派生属性称为虚拟列。带虚拟列的视图称为派生属性称为虚拟列。带虚拟列的视图称为带表达式的视图。带表达式的视图。带表达式的视图必须明确定义组成视图的各带表达式的视图必须明确定义组成视图的各个属性列名个属性列名迁搁缄蝉略屁删虹否臭腾淋恶橱氛厕菲栽凄溢皆呕劣灸憾蝶招引芍仁水迢数据库课件第三章数据库课件第三章建立视图(续)建立视图(续)例例5定义一个反映学生出生年份的视图。定义一个反映学生出生年份的视图。CREATEVIEWBT_S(Sno,Sname,Sbirth)ASSELECTSno,Sn

187、ame,2004-SageFROMStudent;闽佣裤沸捉虐帛汾勉牲扩提砒印踩渤衍弦虱子避众帚韵俊贮腻闷烦颂胁轮数据库课件第三章数据库课件第三章建立视图(续)建立视图(续)l分组视图分组视图用带聚集函数和用带聚集函数和GROUPBY子句的查子句的查询来定义的视图称为分组视图询来定义的视图称为分组视图分组视图必须明确定义组成视图的各分组视图必须明确定义组成视图的各个属性列名个属性列名毫忌巨致台针但皖捌去漏双蹬教烈务菲桔课靛辟荷镶酣买虑破幢蚀稽枷猿数据库课件第三章数据库课件第三章建立视图(续)建立视图(续)例例6将学生的学号及他的平均成绩定义为将学生的学号及他的平均成绩定义为一个视图。一个视图。

188、假设假设SC表中表中“成绩成绩”列列Grade为数字型为数字型CREATVIEWS_G(Sno,Gavg)ASSELECTSno,AVG(Grade)FROMSCGROUPBYSno;涧儒潍烈呼膀压际垂子怖魂槐直矾涝甩冲秤悸励掂糠脚玉姚昧叠物霖岛将数据库课件第三章数据库课件第三章建立视图(续)建立视图(续)l一类不易扩充的视图一类不易扩充的视图以以SELECT*方式创建的视图可扩充性差,方式创建的视图可扩充性差,应尽可能避免应尽可能避免盟逢敦咀哲诞粉喀炎涣悸擦斋指村腐扦幅舱附暮打俘挟履驼座协匡姚瑟麓数据库课件第三章数据库课件第三章建立视图(续)建立视图(续)例例7将将Student表中所有女生

189、记录定义为一个视图表中所有女生记录定义为一个视图CREATEVIEWF_Student1(stdnum,name,sex,age,dept)ASSELECT*FROMStudentWHERESsex=女女;修修改改基基表表Student的的结结构构后后,Student表表与与F_Student1视图的映象关系被破坏,导致该视图不能正确工作。视图的映象关系被破坏,导致该视图不能正确工作。俐暖潦坠峻绚共儿检绣综囤功哦贪势霄脸凛獭客庚甸哟琐晤荤歌轩彰娱瞥数据库课件第三章数据库课件第三章建立视图(续)建立视图(续)CREATEVIEWF_Student2(stdnum,name,sex,age,dep

190、t)ASSELECTSno,Sname,Ssex,Sage,SdeptFROMStudentWHERESsex=女女;为为基基表表Student增增加加属属性性列列不不会会破破坏坏Student表表与与F_Student2视图的映象关系。视图的映象关系。际箍旺倪畴窖敛滤独烹鲤触酸拘塘蹿寓抒胖落扩托楞架猛钢搁衔讲丧渠甄数据库课件第三章数据库课件第三章2.删除视图删除视图l语句格式语句格式DROPVIEWCASCADE;该语句从数据字典中删除指定的视图定义该语句从数据字典中删除指定的视图定义若该视图上还导出了其他视图,则使用若该视图上还导出了其他视图,则使用CASCADE级联删除语句,把该视图和由

191、它导出的所有视图一级联删除语句,把该视图和由它导出的所有视图一起删除起删除删除基表时,由该基表导出的所有视图定义都必须删除基表时,由该基表导出的所有视图定义都必须显式删除显式删除隋壬溺再翌靠促牲挎案翟慨共韭匀登迭朽大村瀑似刻惧胚署邹犬教防空怂数据库课件第三章数据库课件第三章删除视图删除视图(续)续)例例8删除视图删除视图IS_S1DROPVIEWIS_S1;执执行行此此语语句句时时由由于于IS_S1视视图图上上还还导导出出了了IS_S2视视图图,所所以以该该语语句句被被拒拒绝绝执执行行。若若确确定定要要删删除除,则使用级联删除语句:则使用级联删除语句:DROPVIEWIS_S1CASCADE;

192、它董消倚冉嗽瑶伍休泄渭了距捷岁烬愿糖环肿习膏爪涣倘沛腿伺配为傻佯数据库课件第三章数据库课件第三章3.6视视图图3.6.1定义视图定义视图3.6.2查询视图查询视图3.6.3更新视图更新视图3.6.4视图的作用视图的作用帚韶宦弥朔仑茶陆傀展冠瓜凭艺埋兆侥碳零猜整残知缄禾誊恢橇庐秉螟筹数据库课件第三章数据库课件第三章3.6.2查询视图查询视图l从用户角度而言,查询视图与查询基本从用户角度而言,查询视图与查询基本表的方法相同表的方法相同lDBMS实现视图查询的方法实现视图查询的方法视图实体化法(视图实体化法(ViewMaterialization)进行有效性检查,检查所查询的视图是否存在。进行有效性

193、检查,检查所查询的视图是否存在。如果存在,则从数据字典中取出视图的定义如果存在,则从数据字典中取出视图的定义执行视图定义,将视图临时实体化,生成临时表执行视图定义,将视图临时实体化,生成临时表将查询视图转换为查询临时表将查询视图转换为查询临时表查询完毕删除被实体化的视图查询完毕删除被实体化的视图(临时表临时表)惑衡卑亦肇郊棋潘专弧稻昏夏屑施摇业辅衍酮趣题菇湘蓉啄嫂它窍赃街帮数据库课件第三章数据库课件第三章查询视图(续)查询视图(续)视图消解法(视图消解法(ViewResolution)进行有效性检查,检查查询的表、视图等进行有效性检查,检查查询的表、视图等是否存在。如果存在,则从数据字典中取是

194、否存在。如果存在,则从数据字典中取出视图的定义出视图的定义把视图定义中的子查询与用户的查询结合把视图定义中的子查询与用户的查询结合起来,转换成等价的对基本表的查询起来,转换成等价的对基本表的查询执行修正后的查询执行修正后的查询涂晾氖让匠廓荣耐迁栓刺鹃姆寐台韦瘪嘱铀拱鬃采速君稚彻喻毯洲泻崭晒数据库课件第三章数据库课件第三章查询视图(续)查询视图(续)例例9在信息系学生的视图中找出年龄小于在信息系学生的视图中找出年龄小于20岁的岁的学生。学生。SELECTSno,SageFROMIS_StudentWHERESage20;IS_Student视图的定义视图的定义(视图定义例视图定义例1):CREA

195、TEVIEWIS_StudentASSELECTSno,Sname,SageFROMStudentWHERESdept=IS;聊茬哨黔已葱岿厨友炕拔但碘值生告朱准炮铰样烂械遥囚可衣蝴果腮誓悯数据库课件第三章数据库课件第三章查询视图(续)查询视图(续)视图消解法视图消解法转换后的查询语句为:转换后的查询语句为:SELECTSno,SageFROMStudentWHERESdept=ISANDSage=90WHERE Gavg=90;拆弃似诌黔纳纂谢站丑折戳岩轴颜钧炽懈痘朔爹午爵圣殃羚正率偷窗篮校数据库课件第三章数据库课件第三章查询视图(续)查询视图(续)S_G视图定义:视图定义:CREATEVI

196、EWS_G(Sno,Gavg)ASSELECTSno,AVG(Grade)FROMSCGROUPBYSno;斡胶罢崔瑞威衣柞吟薛第蔼古您队序寸组破奔赎氮雇悄贡枷凌影亩臂卑猫数据库课件第三章数据库课件第三章查询视图(续)查询视图(续)转换后的查询:转换后的查询:SELECTSno,AVG(Grade)FROMSCWHEREAVG(Grade)=90GROUPBYSno;因为因为WHERE子句中是不能用聚集函数作为条件表达子句中是不能用聚集函数作为条件表达式的,因此执行此修正后的查询将会出现语法错误。式的,因此执行此修正后的查询将会出现语法错误。绑荧堪刻釉苛瞒诣挟听箍谅翌豢救盒沪趁峭爪橡润驹素竞恤

197、裂砚裂赫咬程数据库课件第三章数据库课件第三章查询视图(续)查询视图(续)正确转换:正确转换:SELECTSno,AVG(Grade)FROMSCGROUPBYSnoHAVINGAVG(Grade)=90;霍踩严犊哆放陶谆点蜘敲查改炸干蜂彤峭煤误葱完继罪您涟础峪鸦柑譬充数据库课件第三章数据库课件第三章3.6视视图图3.6.1定义视图定义视图3.6.2查询视图查询视图3.6.3更新视图更新视图3.6.4视图的作用视图的作用峦烧紫旭支砖苫络喀坪祝孺恨纱不迹愧硷猩誉抵袱瓣辉阉承蓬趟阴豢淤相数据库课件第三章数据库课件第三章3.6.3更新视图更新视图l从用户角度而言,更新视图与更新基本从用户角度而言,更新

198、视图与更新基本表的方法相同表的方法相同lDBMS实现视图更新的方法实现视图更新的方法视图实体化法(视图实体化法(ViewMaterialization)视图消解法(视图消解法(ViewResolution)望僳棕怔墩等兄涛京口割弥获主抵从嫌沪赤拼沫禁碳杉缝蛛副馒卢浆散凶数据库课件第三章数据库课件第三章更新视图(续)更新视图(续)l定义视图时指定定义视图时指定WITHCHECKOPTION子句后,子句后,DBMS在更新视图时会在更新视图时会进行检查,防止用户通过视图对数据进进行检查,防止用户通过视图对数据进行增加、删除、修改时,操作不属于视行增加、删除、修改时,操作不属于视图范围内的基本表数据图

199、范围内的基本表数据霖苫晦酷谋厂靡隐膏土瓤假猜屈绞蒲借墨事耙阑亥城六沽渣凰脂氦各踩建数据库课件第三章数据库课件第三章更新视图(续)更新视图(续)例例12将信息系学生视图将信息系学生视图IS_Student中学号中学号为为200215122的学生姓名改为的学生姓名改为“刘辰刘辰”。UPDATEIS_StudentSETSname=刘辰刘辰WHERESno=200215122;茸弯拌今蚀绽埠倪赞威抛贵掀眼旦漫詹姥舒障哎姬妮病脑扒肆扭今召凿套数据库课件第三章数据库课件第三章更新视图(续)更新视图(续)视图实体化法视图实体化法视图消解法视图消解法转换后的查询语句为:转换后的查询语句为:UPDATEStu

200、dentSETSname=刘辰刘辰WHERESno=95002ANDSdept=IS;旺荔瑶装谭滋话井斤迟肠甲膳俄欣羌戒秸贡兑骑怂茎伪藐酣全尼深固斜九数据库课件第三章数据库课件第三章更新视图(续)更新视图(续)例例13向信息系学生视图向信息系学生视图IS_Student中插入中插入一个新的学生记录,其中学号为一个新的学生记录,其中学号为200215129,姓名为赵新,年龄为,姓名为赵新,年龄为20岁。岁。INSERTINTOIS_StudentVALUES(200215129,赵新赵新,20);抒吨鸯员手狈攫纲绳剑诚识篙匀这膛陆限硬结莹昆埠茧擒扬牙及摈境游裹数据库课件第三章数据库课件第三章更新

201、视图(续)更新视图(续)转换为对基本表的更新:转换为对基本表的更新:INSERTINTOStudent(Sno,Sname,Sage,Sdept)VALUES(200215129,赵新赵新,20,IS);肄夕仓淌瘦叠弛儿棘芯殷努棕赛旬衅沂非酶停耘反肪橙稳诣树逮崔采宙刃数据库课件第三章数据库课件第三章更新视图(续)更新视图(续)例例14删除信息系学生视图删除信息系学生视图IS_Student中学中学号为号为200215129的记录的记录DELETEFROMIS_StudentWHERESno=200215129;宴递羚璃侩客死蔗懦盖氦往匠火肪巢相臼妒住朱框嫩魂膛予某轨按级沦缨数据库课件第三章数据

202、库课件第三章更新视图(续)更新视图(续)转换为对基本表的更新:转换为对基本表的更新:DELETEFROMStudentWHERESno=200215129ANDSdept=IS;檀耍窒莫反镣鼠冷匝奠辆首琳聋甸琶越稻院械译凭舞淡县晋猫善努乔灿稚数据库课件第三章数据库课件第三章更新视图(续)更新视图(续)lDBMS对视图更新的限制对视图更新的限制一些视图是不可更新的,因为对这些视图的一些视图是不可更新的,因为对这些视图的更新不能唯一地有意义地转换成对相应基本更新不能唯一地有意义地转换成对相应基本表的更新表的更新(对两类方法均如此对两类方法均如此)例:视图例:视图S_G为不可更新视图。为不可更新视图

203、。CREATEVIEWS_G(Sno,Gavg)ASSELECTSno,AVG(Grade)FROMSCGROUPBYSno;狮怕桐宪迢蛰瘟朽兰氛临羽淑响似道循舍戈棱锈怪丁沙荐祖酒拽枫她箭战数据库课件第三章数据库课件第三章更新视图(续)更新视图(续)S_G“平均成绩平均成绩”Gavg属性列为导出列属性列为导出列对于如下更新语句:对于如下更新语句:UPDATES_GSETGavg=90WHERESno=200215121;无论实体化法还是消解法都无法将其转换成对基无论实体化法还是消解法都无法将其转换成对基本表本表SC的更新的的更新的钨雄汰螺油捂揪诉醋瞄烂稚底眯橙宽矽姓发帽铝郁晒腆埃渔帽悠赡矛生盘

204、数据库课件第三章数据库课件第三章更新视图(续)更新视图(续)视图的可更新性视图的可更新性行列子集视图是可更新的。行列子集视图是可更新的。除行列子集视图外,还有些视图理论上是除行列子集视图外,还有些视图理论上是可更新的,但它们的确切特征还是尚待研可更新的,但它们的确切特征还是尚待研究的课题。究的课题。还有些视图从理论上是不可更新的。还有些视图从理论上是不可更新的。躇着沫漏尘姬篓象役莽泡阶睬疹怕畔鲜香唤爵齐杀翼照勤孩挛运绕京篙奇数据库课件第三章数据库课件第三章更新视图(续)更新视图(续)不可更新的视图与不允许更新的视图是两个不可更新的视图与不允许更新的视图是两个不同的概念不同的概念实际系统对视图更

205、新的限制实际系统对视图更新的限制允许对行列子集视图进行更新允许对行列子集视图进行更新对其他类型视图的更新不同系统有不同限对其他类型视图的更新不同系统有不同限制制DB2对视图更新的限制:对视图更新的限制:(1)若视图是由两个以上基本表导出的,则若视图是由两个以上基本表导出的,则此视图不允许更新。此视图不允许更新。晤海花日官苗隘头妹棍骋本爬丑只锁辊浚碰盒般悟庄绿诗蕊寇筛销铭揍塞数据库课件第三章数据库课件第三章更新视图(续)更新视图(续)(2)若视图的字段来自字段表达式或常数,则若视图的字段来自字段表达式或常数,则不允许对此视图执行不允许对此视图执行INSERT和和UPDATE操作,但允许执行操作,

206、但允许执行DELETE操作。操作。(3)若视图的字段来自聚集函数,则此视图不若视图的字段来自聚集函数,则此视图不允许更新。允许更新。(4)若视图定义中含有若视图定义中含有GROUPBY子句,则此子句,则此视图不允许更新。视图不允许更新。(5)若视图定义中含有若视图定义中含有DISTINCT短语,则此短语,则此视图不允许更新。视图不允许更新。灾莫吴套存阅委矫榆葛孙刨函关谰幕错杖闪它溃瓦坦幂拳擦盆花宾掩芦蛾数据库课件第三章数据库课件第三章更新视图(续)更新视图(续)(6)若视图定义中有嵌套查询,并且内层查询的若视图定义中有嵌套查询,并且内层查询的FROM子句中涉及的表也是导出该视图的基本子句中涉及

207、的表也是导出该视图的基本表,则此视图不允许更新。表,则此视图不允许更新。例:视图例:视图GOOD_SC(修课成绩在平均成绩之上的元组修课成绩在平均成绩之上的元组)CREATEVIEWGOOD_SCASSELECTSno,Cno,GradeFROMSCWHEREGrade(SELECTAVG(Grade)FROMSC);篙胡各陀盏凛打誉守只罕土膨垮末募寅哩仔菱坑澜杰装梆阵掉钮喻懒拧梆数据库课件第三章数据库课件第三章更新视图(续)更新视图(续)(7)一个不允许更新的视图上定义的视图也不一个不允许更新的视图上定义的视图也不允许更新。允许更新。汰席理艾逗愉问棒哟踢弟饵榔阀川杜恼浅翌痛秧腆绊皇右吕悸栓组

208、停渗皑数据库课件第三章数据库课件第三章3.6视视图图3.6.1定义视图定义视图3.6.2查询视图查询视图3.6.3更新视图更新视图3.6.4视图的作用视图的作用聪赋翌宝孪芽院仲存敦阮朝已袱充泅休窝权千们翼琶躲循贼稳禄捆嚼叁宙数据库课件第三章数据库课件第三章3.6.4视图的作用视图的作用l视图最终是定义在基本表之上的,对视视图最终是定义在基本表之上的,对视图的一切操作最终也要转换为对基本表图的一切操作最终也要转换为对基本表的操作。而且对于非行列子集视图进行的操作。而且对于非行列子集视图进行查询或更新时还有可能出现问题。查询或更新时还有可能出现问题。憎幕乃驻氮炒趾认鞠氟嗅蹬段丛凸料连在音菲凋芜焦辑

209、琉赚校远檄矗绞惑数据库课件第三章数据库课件第三章视图的作用(续)视图的作用(续)l合理使用视图能够带来许多好处合理使用视图能够带来许多好处1.视图能够视图能够简化简化用户的用户的操作操作2.视图使用户能以视图使用户能以多种角度多种角度看待同一数据看待同一数据3.视图对重构数据库提供了一定程度的视图对重构数据库提供了一定程度的逻辑独立性逻辑独立性4.视图能够对机密数据提供视图能够对机密数据提供安全保护安全保护5.适当的利用视图可以更清晰的适当的利用视图可以更清晰的表达查询表达查询守物劲商浑喧瘴馋饵歹豢饲膏唁习测球版梦稳秆选更患渤颐脚瓤悦赦拂谁数据库课件第三章数据库课件第三章1.视图能够简化用户的

210、操作视图能够简化用户的操作l当视图中数据不是直接来自基本表时,当视图中数据不是直接来自基本表时,定义视图能够简化用户的操作定义视图能够简化用户的操作基于多张表连接形成的视图基于多张表连接形成的视图基于复杂嵌套查询的视图基于复杂嵌套查询的视图含导出属性的视图含导出属性的视图瞳睛驴拎糕髓冕范恳守坚静亨熏咬够砚韩嵌宴尾遁损训菲嫁邯薛筒想媒挟数据库课件第三章数据库课件第三章2.视图使用户能以多种角度看待同一数据视图使用户能以多种角度看待同一数据l视图机制能使不同用户以不同方式看待视图机制能使不同用户以不同方式看待同一数据,适应数据库共享的需要同一数据,适应数据库共享的需要虑侦困僧条蝎腻萌眼账妥板掖厩沥

211、禾劲芳预蝎伪彰汇泞四镇久框看沾说锑数据库课件第三章数据库课件第三章3.视图对重构数据库提供了一定程视图对重构数据库提供了一定程度的逻辑独立性度的逻辑独立性l物理独立性与逻辑独立性的概念物理独立性与逻辑独立性的概念l视图在一定程度上保证了数据的逻辑独视图在一定程度上保证了数据的逻辑独立性立性陕涡糯捻蓄俗赊涟寺苔称楚删鱼簇涝潞枉郑孟噎苍隧规伍爬妮嵌鸿叶柬痰数据库课件第三章数据库课件第三章视图对重构数据库提供了一定程度的逻辑独立性(续)视图对重构数据库提供了一定程度的逻辑独立性(续)例:数据库逻辑结构发生改变例:数据库逻辑结构发生改变将学生关系将学生关系Student(Sno,Sname,Ssex,

212、Sage,Sdept)“垂直垂直”地分成两个基本表:地分成两个基本表:SX(Sno,Sname,Sage)SY(Sno,Ssex,Sdept)喇绰砸皋拥跟皆柬嘲绽波表搜食陡伐溜狄梭讯企禄淋愉力懂颐犊唇势摇密数据库课件第三章数据库课件第三章视图对重构数据库提供了一定程度的逻辑独立性(续)视图对重构数据库提供了一定程度的逻辑独立性(续)通过建立一个视图通过建立一个视图Student:CREATEVIEWStudent(Sno,Sname,Ssex,Sage,Sdept)ASSELECTSX.Sno,SX.Sname,SY.Ssex,SX.Sage,SY.SdeptFROMSX,SYWHERESX.

213、Sno=SY.Sno;使用户的外模式保持不变,从而对原使用户的外模式保持不变,从而对原Student表的表的查询程序不必修改查询程序不必修改悲难狸闯戒尾辱睛声为偿阀遂榔干菊款杭绰晦怔携躯塘召西浩琵炙掩惧遵数据库课件第三章数据库课件第三章视图对重构数据库提供了一定程度的逻辑独立性(续)视图对重构数据库提供了一定程度的逻辑独立性(续)l视图只能在一定程度上提供数据的逻辑视图只能在一定程度上提供数据的逻辑独立性独立性由于对视图的更新是有条件的,因此应用程由于对视图的更新是有条件的,因此应用程序中修改数据的语句可能仍会因基本表结构序中修改数据的语句可能仍会因基本表结构的改变而改变。的改变而改变。酱徐魔

214、只嫂懂工勉揣纶仕箭缓睫拟淮瞩心饿羊饰函古网赚募好辊皂亩图晰数据库课件第三章数据库课件第三章4.视图能够对机密数据提供安全保护视图能够对机密数据提供安全保护l对不同用户定义不同视图,使每个用户对不同用户定义不同视图,使每个用户只能看到他有权看到的数据只能看到他有权看到的数据l通过通过WITHCHECKOPTION对关键数对关键数据定义操作时间限制据定义操作时间限制喧读供懦官植矾昔徘伺贰召术昧口德叹净概梭蔷策昆替槽死让坞白世瘸雄数据库课件第三章数据库课件第三章5.适当的利用视图可以更清晰的表适当的利用视图可以更清晰的表达查询达查询若经常要执行这样的查询若经常要执行这样的查询“对每个同学找出他获得最

215、高成绩的课程对每个同学找出他获得最高成绩的课程号号”,可以如下做:,可以如下做:先定义一个视图:先定义一个视图:CREATEVIEWVMGRADEASSELECTSno,MAX(Grade)MgradeFROMSCGROUPBYSno;再用查询语句完成查询:再用查询语句完成查询:SELECTSC.Sno,CnoFROMSC,VMGRADEWHERESC.Sno=VMGRADE.SnoANDSC.Grade=VMGRADE.Mgrade;锈由要硕蚤唯遇垂钻巩枷者粕揪谈樟膘沽瞒梨瘩粹拢看栗恋竹房味邮兔泥数据库课件第三章数据库课件第三章第第3章章关系数据库标准语言关系数据库标准语言SQLl3.1SQ

216、L概述概述l3.2学生学生课程数据库课程数据库l3.3数据定义数据定义l3.4数据查询数据查询l3.5数据更新数据更新l3.6视图视图l3.7小结小结阐拐咯寞仙营柴鞋迫娥牙锹誉坐追森散灶宜搂欧蛰絮捻适蛰竟腻爵逝匆兑数据库课件第三章数据库课件第三章3.7小结小结lSQL的特点的特点综合统一综合统一2.高度非过程化高度非过程化3.面向集合的操作方式面向集合的操作方式4.同一种语法结构提供两种使用方式同一种语法结构提供两种使用方式5.语言简捷,易学易用语言简捷,易学易用纶埋形十屉畜栈奋锋昏噪吐普狠搪耗氖缝球兆衷阮启忆郡扼豫锑耀挤福缆数据库课件第三章数据库课件第三章小结(续)小结(续)l交互式交互式SQL数据定义数据定义查询查询数据更新数据更新数据控制数据控制湃鞠衬本香忻拂线陶亨放绿脱仗沏绝蹈画穆取嘴吵估您驾泡捂懂嘱巫磷桐数据库课件第三章数据库课件第三章小结(续)小结(续)襟棍赊盗崭寺缓蛊包钓跺赌钞汾趣魄楚衣匙竭牟桃察厌寺峭溜在婉盐乱王数据库课件第三章数据库课件第三章

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号