《第3章数库语言》由会员分享,可在线阅读,更多相关《第3章数库语言(98页珍藏版)》请在金锄头文库上搜索。
1、第第3 3章章 数据库语言数据库语言 本章学习要求:本章学习要求: 1. 1. 1. 1.数据库的用户接口数据库的用户接口数据库的用户接口数据库的用户接口 了解什么是数据库的用户接口?了解什么是数据库的用户接口?了解什么是数据库的用户接口?了解什么是数据库的用户接口? 数据库语言与宿主语言的区别。数据库语言与宿主语言的区别。数据库语言与宿主语言的区别。数据库语言与宿主语言的区别。 2. SQL 2. SQL 2. SQL 2. SQL语言概况语言概况语言概况语言概况 了解了解了解了解SQL SQL SQL SQL 的的的的4 4 4 4大功能大功能大功能大功能. . . .3. SQL3. S
2、QL3. SQL3. SQL数据定义语言数据定义语言数据定义语言数据定义语言 了解基表和视图的概念以及各种数据类型。掌了解基表和视图的概念以及各种数据类型。掌了解基表和视图的概念以及各种数据类型。掌了解基表和视图的概念以及各种数据类型。掌握基表模式的定义和修改基表模式的握基表模式的定义和修改基表模式的握基表模式的定义和修改基表模式的握基表模式的定义和修改基表模式的7 7 7 7条命令。条命令。条命令。条命令。 逼丘洗蹈漏眶纯孤翠虱庄邻韭唁宿涎叶罚纬排如若须躲谐体短恤贮檬救旗第3章数库语言第3章数库语言 4. SQL 4. SQL 4. SQL 4. SQL查询语言查询语言查询语言查询语言 掌握
3、最常用最基本的查询语句的定义和应用。掌握最常用最基本的查询语句的定义和应用。掌握最常用最基本的查询语句的定义和应用。掌握最常用最基本的查询语句的定义和应用。 5. SQL 5. SQL 5. SQL 5. SQL中的视图中的视图中的视图中的视图 了解视图的概念以及视图与基表的区别;掌握视了解视图的概念以及视图与基表的区别;掌握视了解视图的概念以及视图与基表的区别;掌握视了解视图的概念以及视图与基表的区别;掌握视图的定义和操作。图的定义和操作。图的定义和操作。图的定义和操作。 6 6 6 6嵌入式嵌入式嵌入式嵌入式SQLSQLSQLSQL 掌握嵌入式掌握嵌入式掌握嵌入式掌握嵌入式SQLSQLSQ
4、LSQL解决四个问题的手段。解决四个问题的手段。解决四个问题的手段。解决四个问题的手段。 获磅党洒饭亩旁姓翻游乍厩兰搽泰辈讽曲虾欺庆鹏肇厩而憾末佣觅灭淀辅第3章数库语言第3章数库语言3.1 3.1 数据库的用户接口数据库的用户接口 DBMS DBMS提供提供操作命令操作命令和和语言语言,使用户能够对,使用户能够对数据库进行各式各样的操作,例如查询、增、数据库进行各式各样的操作,例如查询、增、删、改数据,定义、修改数据模式等删、改数据,定义、修改数据模式等 这就构成了用户和数据库的接口。这就构成了用户和数据库的接口。 DBMSDBMS所所提提供供的的语语言言一一般般局局限限于于对对数数据据库库的
5、的操操作作,有有别别于于计计算算完完备备的的程程序序设设计计语语言言,称称为为数据库语言数据库语言(database languagedatabase language)。)。必啊鼓盒昧蓬仁眼莫翱画救箕恫丁钾律趋左悍巢蓄嚼棘捉敢锭爵官谭抚较第3章数库语言第3章数库语言 过过程程性性语语言言以以关关系系代代数数为为基基础础设设计计出出的的数数据据库库语语言言。即即用用户户不不但但要要说说明明需需要要什什么么数据,而且还要说明获得这些数据的过程。数据,而且还要说明获得这些数据的过程。 非非过过程程性性语语言言用用户户只只要要说说明明需需要要的的数数据据,而而如如何何获获得得这这些些数数据据则则不不
6、必必由由用用户户说说明明,而由系统来实现。而由系统来实现。拜默瘁衰届塞灯拳模忻储鹰醋钟汝逞浴骸例甜殆殴组遣渍苇器铡吞坝桶琳第3章数库语言第3章数库语言 层层层层次次次次和和网网网网状状状状数数据据库库的的语语言言一一般般都都都都是是是是过过过过程程程程性性性性的的,而而关关关关系系系系数数据据模模型型的的抽抽象象级级别别较较高高,比比较较简简单单,且且有有明明确确的的数数学学定定义义。用用户户只只须须了了解解逻逻辑辑模模式式,不不必必关关心心物物理理存存储储的的细细节节,这这就就为为设设计计非非非非过过过过程程程程关关系系数据库语言提供了良好的基础。数据库语言提供了良好的基础。 SQL SQL
7、 SQL SQL语言是非过程关系数据库语言。语言是非过程关系数据库语言。语言是非过程关系数据库语言。语言是非过程关系数据库语言。 它将描述操作过程的麻烦由用户转嫁给了系统它将描述操作过程的麻烦由用户转嫁给了系统它将描述操作过程的麻烦由用户转嫁给了系统它将描述操作过程的麻烦由用户转嫁给了系统! ! ! !估蹭竹析苹迎耐马辙汝鸯施章卤襄藐翘授跑量读史告蹋掂酝飞股墅腺镭碉第3章数库语言第3章数库语言 数数数数据据据据库库库库语语语语言言言言本本本本身身身身不不不不是是是是计计计计算算算算完完完完备备备备的的的的语语语语言言言言,不不不不能能能能用用用用来来来来独独独独立立立立编编编编制制制制应应应应
8、用用用用程程程程序序序序。目目目目前前前前常常常常用用用用方方方方法法法法是是是是将将将将数数数数据据据据库库库库语语语语言言言言嵌嵌嵌嵌入入入入到到到到一一一一种种种种高高高高级级级级程程程程序序序序设设设设计计计计语语语语言言言言中中中中(如如如如C C C C)。这这这这种种种种高级程序设计语言称为数据库语言的高级程序设计语言称为数据库语言的高级程序设计语言称为数据库语言的高级程序设计语言称为数据库语言的宿主语言宿主语言宿主语言宿主语言。数据库语言与宿主语言的区别:数据库语言与宿主语言的区别:数据库语言与宿主语言的区别:数据库语言与宿主语言的区别: 数数数数据据据据库库库库语语语语言言言
9、言是是是是非非非非过过过过程程程程性性性性语语语语言言言言,是是是是面面面面向向向向集集集集合合合合的的的的语语语语言,主要用于言,主要用于言,主要用于言,主要用于访问数据库访问数据库访问数据库访问数据库; 宿主语言是过程性语言,主要用于宿主语言是过程性语言,主要用于宿主语言是过程性语言,主要用于宿主语言是过程性语言,主要用于处理数据处理数据处理数据处理数据。烯纽旭痪附认瞪映嗜豹选前傅罩茵灾革莲篙讣控呼戌环匙贮皮半哪奄凿旅第3章数库语言第3章数库语言3.2 SQL3.2 SQL(Structured Query Language)Structured Query Language) 语言概况语
10、言概况 SQL SQL SQL SQL按其功能可分为按其功能可分为按其功能可分为按其功能可分为4 4 4 4大部分:大部分:大部分:大部分:1 1 1 1 数据定义语言(数据定义语言(数据定义语言(数据定义语言(DDLDDLDDLDDL) 用于定义、撤消和修改数据模式用于定义、撤消和修改数据模式用于定义、撤消和修改数据模式用于定义、撤消和修改数据模式, , , ,如表、视图、如表、视图、如表、视图、如表、视图、索引;索引;索引;索引; 2 2 2 2 查询语言(查询语言(查询语言(查询语言(QLQLQLQL) 用于查询数据;用于查询数据;用于查询数据;用于查询数据; 3 3 3 3 数据操作纵
11、语言(数据操作纵语言(数据操作纵语言(数据操作纵语言(DMLDMLDMLDML) 用于增、删、改数据;用于增、删、改数据;用于增、删、改数据;用于增、删、改数据; 4 4 4 4 数据控制语言(数据控制语言(数据控制语言(数据控制语言(DCLDCLDCLDCL)用于数据访问权限的控制。用于数据访问权限的控制。用于数据访问权限的控制。用于数据访问权限的控制。 喀唤族住哥谭外咎糟煤御鞍修软馅苦吊逆漫咕蛆戊介膘迸舜贡檬铂美恫纲第3章数库语言第3章数库语言3.3 SQL3.3 SQL数据定义语言数据定义语言 关关系系称称为为表表,是是关关系系数数据据库库的的基基本本组组成成单单位位。在在SQLSQL中
12、,表分为两种:中,表分为两种: 基表基表(base table)(base table)-数据显式地存储在数据库中。数据显式地存储在数据库中。 视图视图(view)(view) 视视图图是是个个虚虚表表。仅仅有有逻逻辑辑定定义义,可可根根据据其其定定义义由由其其它它表表(视视图图)导导出出,但但不不作作为为一一个个表表显显式式地地存存储储在在数据库中。视图可像基表一样,参与各种数据库操作。数据库中。视图可像基表一样,参与各种数据库操作。荆答汾左掳所洞靴软掀毡龙困肆啮镀桶辆蚀惹跨艇糜吼簧土宽食钱阔暂涝第3章数库语言第3章数库语言(2 2)临时视图)临时视图 对于较复杂的查询,可将查询中相对独立部
13、分对于较复杂的查询,可将查询中相对独立部分作为查询的中间结果,定义为临时视图。作为查询的中间结果,定义为临时视图。 临时视图在功能上与普通视图一样,但仅用于临时视图在功能上与普通视图一样,但仅用于附在临时视图定义后的查询语句中。该查询语句附在临时视图定义后的查询语句中。该查询语句结束后,临时视图随之自行消失。结束后,临时视图随之自行消失。(1 1)普通视图)普通视图跳杰别蛹订浚郭甚钥俏成汛葛腮韶几此悦钙色珍气逢雷供锄独缀超啦国收第3章数库语言第3章数库语言一般一般SQLSQL都支持的数据类型见表都支持的数据类型见表3-13-1。 谆浮我科改安聊麦叙钵奉镑姆鸵舷苗匠膊焦宠部耽型未试绩橇颈患靡像茹
14、第3章数库语言第3章数库语言3.3.2 3.3.2 基表模式的定义基表模式的定义 定义基表模式语句的格式见图定义基表模式语句的格式见图3-13-1所示。所示。图中图中椭圆形框椭圆形框中的内容是中的内容是关键字关键字;方框方框中的内容是中的内容是非终极符非终极符;圆圈圆圈中的内容是中的内容是终极符终极符。痈叶蓟庞谓榜塔搐卵叶啡饵氧预卧执躺嫡仍耘族蓟叫眉匪不芭盘臭科啃蔚第3章数库语言第3章数库语言非终极符非终极符终极符终极符此列不此列不得设置为空得设置为空列值列值不得重复不得重复当此列的值空当此列的值空缺时,填以缺省值缺时,填以缺省值定义外键来定义外键来自的表名,即自的表名,即主表名主表名 引用完
15、整引用完整性检查,主表性检查,主表中被引用的主中被引用的主键删除时用键删除时用 关键字关键字巾豆艺瘤忍骨呆煽磊铱冕附赃缅敌跋癌找径累隘视冬静龚族墒洼瑞境炽为第3章数库语言第3章数库语言 SET NULL SET NULL-该列应无该列应无NOT NULLNOT NULL说明说明 RESTRICT RESTRICT-凡被基表引用的主键,不得删除;凡被基表引用的主键,不得删除; 加下划线表示为加下划线表示为ON DELETEON DELETE的缺省项的缺省项 CASCADE CASCADE-如主表中删除了某一主键,则基表如主表中删除了某一主键,则基表 中引用此主键的行也被删除中引用此主键的行也被删
16、除 ON DELETE ON DELETE 的三个选项:的三个选项:檄躁盎诵宋泼吟吧粒逃拿酬密哗兹尹并鼎臆弃乐亨乌涟逮蔚公比杯慌百欧第3章数库语言第3章数库语言例例3-13-1 定义定义STUDENTSTUDENT(学生),(学生), COURSECOURSE( (课程课程) ),SCSC(选课)三个基表。(选课)三个基表。 ( SNO CHAR(7) NOT NULL, ( SNO CHAR(7) NOT NULL, SNAME VARCHAR(8) NOT NULL, SNAME VARCHAR(8) NOT NULL, SEX CHAR(2) NOT NULL, SEX CHAR(2)
17、NOT NULL, BDATE DATE NOT NULL, BDATE DATE NOT NULL, HEIGHT DEC(5,2) DEFAULT 000.00 HEIGHT DEC(5,2) DEFAULT 000.00, PRIMARY KEYPRIMARY KEY (SNO); (SNO);CREATECREATE TABLETABLE STUDENTSTUDENTSTUDENTSTUDENT / /* *建立学生表建立学生表*/*/“;”“;”不是不是SQLSQL语句的一部语句的一部分,而是命令结分,而是命令结束符束符骆竣宅直犯伎斑店技莽姆阎窘韵拥啪空橙塘宫搭瞧等腮讨与糕堑宇受竿畸
18、第3章数库语言第3章数库语言CREATE TABLECREATE TABLE COURSECOURSE/*/*建立课程表建立课程表* /* /(CNO CHAR(6) NOT NULL,(CNO CHAR(6) NOT NULL, LHOUR SMALLINT NOT NULL, LHOUR SMALLINT NOT NULL, CREDIT DET(1,0) NOT NULL, CREDIT DET(1,0) NOT NULL, SEMESTER CHAR(2) NOT NULL, SEMESTER CHAR(2) NOT NULL, PRIMARY KEYPRIMARY KEY (CNO)
19、; (CNO);烃仗清阐泵轴仕六它暇芥斥烛孽粟攒袍睡冒军涅婉亡扑冷斩庶甥苑勉赴荷第3章数库语言第3章数库语言CREATE TABLECREATE TABLE SCSCSCSC /*/*建立选课基表建立选课基表*/*/(SNO CHAR(7) NOT NULL,(SNO CHAR(7) NOT NULL,CNO CHAR(6) NOT NULL,CNO CHAR(6) NOT NULL,GRADE DEC (4,1) DEFAULT NULLGRADE DEC (4,1) DEFAULT NULL,PRIMARY KEYPRIMARY KEY (SNO (SNO ,CNO)CNO),FOREIG
20、N KEYFOREIGN KEY (SNO) (SNO) REFERENCESREFERENCES STUDENT STUDENT ON DELETEON DELETE CASCADECASCADE,FOREIGN KEYFOREIGN KEY (CNO) (CNO) REFERENCESREFERENCES COURSE COURSE ON DELETEON DELETE RESTRICTRESTRICT););外键来外键来自自STUDENTSTUDENT表表如如主主表表中中删删除除了了某某一一主主键键,则则加加此此选选项项的的基基表表中中引引用用此此主主键键的的行行也也随随之之删除删除凡是
21、被基表引用的凡是被基表引用的主键,不得删除主键,不得删除晾叮魏乱阮信椎枝绩名殊终揍狗兽瘟士榔斡爽喝瑞陡粥簧拉式舞举堡按邀第3章数库语言第3章数库语言3.3.3 3.3.3 3.3.3 3.3.3 基表模式的修改基表模式的修改基表模式的修改基表模式的修改 SQLSQL提供提供7 7种修改基表模式的命令:种修改基表模式的命令: 1.1.增加列增加列ALTER TABLE ALTER TABLE . ADD ADD ;注注: 内内为为任任选选项项。如如果果用用户户本本身身就就是是被被修修改改的的表表的的创创建建者者,则则可可略略去去表表的的创创建建者者名名,否否则不可略去。则不可略去。蔡锑姓婚棵朔倡
22、挎巫址管寺妻卑棉揣禽箱募忆弟图纫使妇凰冠躺蚊幢怒诲第3章数库语言第3章数库语言 注:注:SQLSQL未提供删除列的命令。未提供删除列的命令。(为什么?)(为什么?)2.2.删除基表删除基表 DROP TABLE DROP TABLE ; 若若要要删删除除列列,只只有有另另定定义义一一个个新新表表,并并将将原原来来表表中中要要保保留留的的列列的的内内容容复复制制到到新新表表中中,然然后后删删除除原原表表。最最后后还还得得用用重重命命名名命命令令把把新新表表改改为为原原表表名。名。很适歼杆谭蹿优亭族毡哭宣彰寨丰服剑褒叶赵愁烃莫拍扫疯帆桔锈柠挺互第3章数库语言第3章数库语言3.3.补充定义主键补充定
23、义主键 如果原表以前未定义主键,需要时可利用此命令如果原表以前未定义主键,需要时可利用此命令补充定义主键。补充定义主键。ALTER TABLE ALTER TABLE ADD PRIMARY KEY ADD PRIMARY KEY (. )谦誊效至籽寅昨涪楚两燃颐注搞旅房肿涡察证姆锁单性袖缀图附豪孰迅盂第3章数库语言第3章数库语言4 4撤消主键定义撤消主键定义 一一般般情情况况下下,一一个个基基表表如如果果已已定定义义了了主主键键,则则系系统统会会在在主主键键上上自自动动建建立立索索引引。当当插插入入新新行行时时 ,系系统统会会进进行行主主键键唯唯一一性性检检查查,这这样样,当当进进行行大大量
24、量的的插入操作时,势必影响系统效率。插入操作时,势必影响系统效率。 下面命令暂时撤消主键。下面命令暂时撤消主键。ALTER TABLE ALTER TABLE DROP PRIMARY KEY ; DROP PRIMARY KEY ;勃候捐风哑痴疹骂姓弄蒙卸势矾听肖培涨燕膀邮针彪她光蛋疟欺护伏牵别第3章数库语言第3章数库语言5 5补充定义外键补充定义外键ALTER TABLE ALTER TABLE -1 ADD FOREIGN KEY ADD FOREIGN KEY ( ) REFERENCES REFERENCES -2 ON DELETE ON DELETE RESTRICTRESTRI
25、CT | CASCADE | CASCADE |SET NULL; |SET NULL; 花括号表示三项中任选一项。有横线表示缺省项。花括号表示三项中任选一项。有横线表示缺省项。 扦案谣篆妻弗谩敷滩寓演拿悼搓盲惑扩羹鲜床塔润中导丫号矗傍泡凑盏恃第3章数库语言第3章数库语言6 6撤消外键定义撤消外键定义 由由于于定定义义外外键键后后,须须作作引引用用完完整整性性检检查查,这这会会影影响响系系统统性性能能,因因此此,SQLSQL提提供供了了撤撤消消外外键键的的命命令令,必要时可暂时撤消。必要时可暂时撤消。ALTER TABLE ALTER TABLE DROP DROP ;究汕洗澈冲捡避扣讽毡硝文
26、郴庐颊刮姜妮义密庚寂睡吁剐经何屯乒夹旺盅第3章数库语言第3章数库语言7 7定义和撤消别名定义和撤消别名 CREATE SYNONYM CREATE SYNONYM FOR FOR .|;DROP SYNONYM DROP SYNONYM ; ; 灭镍寸翁冀蛛桥锁空皂帆葛兢池俐痈办择牲衔亡宣涅颖桥床伯矫舌屁拾部第3章数库语言第3章数库语言3.3.4 3.3.4 3.3.4 3.3.4 索引的建立和撤消索引的建立和撤消索引的建立和撤消索引的建立和撤消索引的建立和撤销语句的格式如图索引的建立和撤销语句的格式如图3-23-2所示所示. .冷侮蔑既稳郴桓缴调阿逾隔掠耕棱兄蚁澎东绥斥儡播才江甄钉龄聂践攘哀
27、第3章数库语言第3章数库语言 在在图图3-2(a)3-2(a)中中,UNIQUEUNIQUE是是可可选选项项;如如果果加加了了UNIQUEUNIQUE,则则每每个个索索引引属属性性值值只只能能对对应应一一个个元元组组,即即此此索索引引属属性性是是主主键键或或候候补补键键。图图3-2(a)3-2(a)中中的的列列名名就就是是指指索索引引属属性性。如如果果列列名名后后加加ASCASC,表表示示索索引引属属性性按按升升序序排排列列;如如果果列列名名后后加加DESCDESC,表表示示索索引属性按降序排列。引属性按降序排列。例例 :CREATE INDEX H_INDEXCREATE INDEX H_I
28、NDEX ON STUDENT ( HEIGHT ); ON STUDENT ( HEIGHT ); 即:对即:对STUDENTSTUDENT文件建立以文件建立以 HEIGHT HEIGHT为索引值的为索引值的 索引文件。索引文件。切领逃氦腹毡恢猩嘛群唯理憋缓乡垫肆闭裙遂音聂春龙掺瞄体佳弛悟湖雇第3章数库语言第3章数库语言CREATE UNIQUE CREATE UNIQUE INDEXINDEX SC_INDEX SC_INDEX ON SC (SNO DESC, CNO ASC); ON SC (SNO DESC, CNO ASC); 即:对选课文件即:对选课文件SCSC按学号属性降序、按
29、课程号属按学号属性降序、按课程号属性升序建立索引文件。性升序建立索引文件。 挡鸣殴写额荔埔碎坷个好苞毖漫庙朋丧硒舷漓埠弱忌终轧瞒侠歌兑浴享汤第3章数库语言第3章数库语言3.4 SQL3.4 SQL3.4 SQL3.4 SQL查询语言查询语言查询语言查询语言3.4.1 3.4.1 3.4.1 3.4.1 基本基本基本基本SQLSQLSQLSQL查询语句查询语句查询语句查询语句 SQL SQL查询语句的具体形式见图查询语句的具体形式见图3-33-3。 挥剐伍遵云瑶铜少砌承杰尘瑶胃乔肮萍入柑席子澳么保咏卖痛宗瘤书足夹第3章数库语言第3章数库语言孔了酿咯跌拈摄熊宙炯脂怕稽浇息陡合昨献摩月戊说版长细竣呕
30、抱队茅极第3章数库语言第3章数库语言SELECTSELECT指指出出要要查查询询的的项项目目,通通常常指指列列名名或或表表达式达式,是必需的。,是必需的。FROMFROM指明被查询的表或视图名,是必需的。指明被查询的表或视图名,是必需的。 WHERE WHERE 说明查询条件,是任选的。说明查询条件,是任选的。 GROUP BYGROUP BY将表按列的值分组,是任选的。将表按列的值分组,是任选的。 ORDER BYORDER BY将查询结果排序,是任选的。将查询结果排序,是任选的。 3.4.1 3.4.1 3.4.1 3.4.1 基本基本基本基本SQLSQLSQLSQL查询语言查询语言查询语
31、言查询语言胃沫条移讣抠惧狮众歌个腋帚毅傈祈厕笔挑安菲豹声钥括囚釉域抗叮碑追第3章数库语言第3章数库语言3.4.2 3.4.2 3.4.2 3.4.2 查询条件比较复杂的查询条件比较复杂的查询条件比较复杂的查询条件比较复杂的SQLSQLSQLSQL查询语句查询语句查询语句查询语句蓉拣晰旗妈碟橙膀斧铸溯贴宙版桨侦保北回腊聋臀砖价瓷肤稍琵颐樱疹陆第3章数库语言第3章数库语言例例3-2 3-2 查询查询STUDENTSTUDENT、COURSECOURSE、SCSC三表的全部内容。三表的全部内容。语句:语句: SELECTSELECTSELECTSELECT * * FROMFROMFROMFROM
32、STUDENT STUDENT;妥陪硕睛娶祈予娶显剂苦昭伟笔听顶狸茎康杀桃或吱踪莎刮衍谣嗓钟辐节第3章数库语言第3章数库语言查询结果为:查询结果为: SNOSNAMESEXBDATEHEIGHT9309203欧阳美林欧阳美林女女1975-6-31.629208123王义平王义平男男1974-8-201.719104421周远行周远行男男1973-7-161.839309119李维李维女女1976-8-101.689209120王大力王大力男男1973-10-201.75皆着躲趾捌吓趋各高渔决七咎瑰侗泛鲸琴财开武毫念汤村潜井故掷扁露答第3章数库语言第3章数库语言语句:语句:SELECTSELEC
33、TSELECTSELECT * * FROMFROMFROMFROM COURSE;COURSE;查询结果为:查询结果为: CNOLHOURCREDITSEMESTERCS-110603秋秋CS-201804春春CS-221402秋秋EE-1221065秋秋EE-201452春春乙开恐戎原神咖培肚险袜鸽跃烂憨祖愤兹缩恭培沏住首煤鹃店也假阀豆硷第3章数库语言第3章数库语言语句:语句:SELECTSELECTSELECTSELECT * * FROMFROMFROMFROM SC SC查询结果为:查询结果为: SNOCNOGRADE9309203CS-11082.59309203CS-201809
34、309203EE-201759208123EE-122919208123EE-201839104421EE-2011009104421CS-110919309119CS-110729309119CS-201659209120CS-221雕叔勃坠跺抱葱削暑隐投善许川瘫院惧飘进呐哗惹坞岔泄览烤傣负愿昨掐第3章数库语言第3章数库语言例例3-3 3-3 查询所有女学生的身高(以厘米表示)。查询所有女学生的身高(以厘米表示)。语句:语句:语句:语句:SELECTSELECTSELECTSELECT SNAME, 100*HEIGHT SNAME, 100*HEIGHT SNAME, 100*HEIGHT
35、 SNAME, 100*HEIGHT FROMFROMFROMFROM STUDENT STUDENT STUDENT STUDENT WHEREWHEREWHEREWHERE SEX= SEX= SEX= SEX=女女女女; SNAME100*HEIGHT欧阳美林欧阳美林162李维李维168查询结果为:查询结果为:需伺蛰清嘉梯确散徒核沃应绒咋肮柯内渠赤影肃磅翘稽撒尼诗父臆位桃苔第3章数库语言第3章数库语言补充补充补充补充1 1 1 1:检索学习课程号为检索学习课程号为检索学习课程号为检索学习课程号为CS-221CS-221CS-221CS-221的学生学号与姓名。的学生学号与姓名。的学生学号
36、与姓名。的学生学号与姓名。这个查询要从两个关系中检索数据,因而有多种写法。这个查询要从两个关系中检索数据,因而有多种写法。这个查询要从两个关系中检索数据,因而有多种写法。这个查询要从两个关系中检索数据,因而有多种写法。第一种写法第一种写法第一种写法第一种写法(联接查询):(联接查询):(联接查询):(联接查询): SELECT STUDENT.SNO,SNAMESELECT STUDENT.SNO,SNAMESELECT STUDENT.SNO,SNAMESELECT STUDENT.SNO,SNAME FROM STUDENT,SC FROM STUDENT,SC FROM STUDENT,
37、SC FROM STUDENT,SC WHERE STUDENT.SNO=SC.SNO WHERE STUDENT.SNO=SC.SNO WHERE STUDENT.SNO=SC.SNO WHERE STUDENT.SNO=SC.SNO AND CNO=CS-221AND CNO=CS-221AND CNO=CS-221AND CNO=CS-221龟色瞄艾纪欣赋氛蓉穗厄饲著全凌鸿凰吓艳得累耍撵防往另督好扯吨鄂嗽第3章数库语言第3章数库语言 该语句执行时,要对该语句执行时,要对该语句执行时,要对该语句执行时,要对STUDENTSTUDENTSTUDENTSTUDENT和和和和SCSCSCSC做笛
38、卡尔积做笛卡尔积做笛卡尔积做笛卡尔积操作。由于操作。由于操作。由于操作。由于SNOSNOSNOSNO在在在在STUDENTSTUDENTSTUDENTSTUDENT和和和和SCSCSCSC中都出现,因此引中都出现,因此引中都出现,因此引中都出现,因此引用用用用SNOSNOSNOSNO时需注明关系名,例如时需注明关系名,例如时需注明关系名,例如时需注明关系名,例如STUDENT.SNOSTUDENT.SNOSTUDENT.SNOSTUDENT.SNO。秆毖节翼红洲啥翟析壬洽源旬射锯捎壬怠喜孜议哉焚戌肺照赦钩秋顺庄伦第3章数库语言第3章数库语言第二种写法(嵌套查询):第二种写法(嵌套查询):第二种
39、写法(嵌套查询):第二种写法(嵌套查询):SELECTSNO,SNAMESELECTSNO,SNAMEFROMSTUDENTFROMSTUDENTWHERESNOWHERESNOININ(SELECTSELECTSNOSNOFROMFROM SCSCWHEREWHERE CNO=CS-221)CNO=CS-221)谓词谓词谓词谓词弗辩离铁吕吭掇盈突鞠剿三啡慧闹秆债刑问赠雇筋珍飞健阳挪歌力讫抹迈第3章数库语言第3章数库语言 嵌套的子查询中嵌套的子查询中嵌套的子查询中嵌套的子查询中SELECTSELECTSELECTSELECT语句在外层查询处理之语句在外层查询处理之语句在外层查询处理之语句在外层
40、查询处理之前求解。前求解。前求解。前求解。 即:先在表即:先在表即:先在表即:先在表SCSCSCSC中求出选修课程中求出选修课程中求出选修课程中求出选修课程CS-221CS-221CS-221CS-221的的的的SNOSNOSNOSNO,再在再在再在再在STUDENTSTUDENTSTUDENTSTUDENT表中根据表中根据表中根据表中根据SNOSNOSNOSNO值求出值求出值求出值求出SNAMESNAMESNAMESNAME值。值。值。值。注:注:注:注:当查询涉及多个关系时,用嵌套查询逐次当查询涉及多个关系时,用嵌套查询逐次当查询涉及多个关系时,用嵌套查询逐次当查询涉及多个关系时,用嵌套查
41、询逐次求解层次分明,具有结构程序设计特点,并且求解层次分明,具有结构程序设计特点,并且求解层次分明,具有结构程序设计特点,并且求解层次分明,具有结构程序设计特点,并且嵌嵌嵌嵌套查询的执行效率也比联接查询的笛卡儿效率高套查询的执行效率也比联接查询的笛卡儿效率高套查询的执行效率也比联接查询的笛卡儿效率高套查询的执行效率也比联接查询的笛卡儿效率高。妒贝钞沃冤骑绰狈紧尿唯增幅利碾拟伎挎刨圣兔捎辞撤惺要勺些女隘碗箔第3章数库语言第3章数库语言第三种写法第三种写法第三种写法第三种写法;(使用存在量词的嵌套查询);(使用存在量词的嵌套查询);(使用存在量词的嵌套查询);(使用存在量词的嵌套查询)SELECT
42、SELECTSNO,SNAMESNO,SNAMEFROMFROMSTUDENTSTUDENTWHEREWHEREEXISTSEXISTS(SELECTSELECT*FROMFROM SCSCWHEREWHERE SC.SNO=STUDENT.SNOSC.SNO=STUDENT.SNOANDANDCNO=CS-221)CNO=CS-221)存在量词存在量词存在量词存在量词EXISTSEXISTSEXISTSEXISTS是存在量词是存在量词是存在量词是存在量词 ,表示内层查询结果非空。,表示内层查询结果非空。,表示内层查询结果非空。,表示内层查询结果非空。凋龋焉考救候撮参柜幌途足榨般峪廉八帅窗酋扔
43、墨月蔬哀屋消俄域畴泪可第3章数库语言第3章数库语言例例例例3-4 3-4 3-4 3-4 查查查查询询询询1976197619761976年年年年出出出出生生生生的的的的学学学学生生生生名名名名及及及及其其其其秋秋秋秋季季季季所所所所修修修修课课课课程的课程号及成绩。程的课程号及成绩。程的课程号及成绩。程的课程号及成绩。此题的查询条件:此题的查询条件:此题的查询条件:此题的查询条件:1976197619761976年出生,年出生,年出生,年出生, 秋季秋季秋季秋季 此题的查询内容:此题的查询内容:此题的查询内容:此题的查询内容:学生名,课程号,成绩学生名,课程号,成绩学生名,课程号,成绩学生名
44、,课程号,成绩 语语语语 句:句:句:句: SELECTSELECTSELECTSELECT SNAME, COURSE.CNO, GRADE SNAME, COURSE.CNO, GRADE SNAME, COURSE.CNO, GRADE SNAME, COURSE.CNO, GRADE FROMFROMFROMFROM STUDENT, COURSE, SC STUDENT, COURSE, SC STUDENT, COURSE, SC STUDENT, COURSE, SC WHEREWHEREWHEREWHERE STUDENT.SNO=SC.SNO STUDENT.SNO=SC.S
45、NO STUDENT.SNO=SC.SNO STUDENT.SNO=SC.SNO ANDANDANDAND SC.CNO=COURSE.CNO SC.CNO=COURSE.CNO SC.CNO=COURSE.CNO SC.CNO=COURSE.CNO ANDANDANDAND YEAR(BDATE)=1976 YEAR(BDATE)=1976 YEAR(BDATE)=1976 YEAR(BDATE)=1976 ANDANDANDAND SEMESTER SEMESTER SEMESTER SEMESTER秋秋秋秋;陈础兽鸳廓惟琵掳钧联豌倘坷刺载炉蛀蟹郊键兹赫江挑顿枣驰寄赦瓤盘额第3章数库语言第
46、3章数库语言SNOSNAMESEXBDATEHEIGHT9309203欧阳美林欧阳美林女女1975-6-31.629208123王义平王义平男男1974-8-201.719104421周远行周远行男男1973-7-161.839309119李维李维女女1976-8-101.689209120王大力王大力男男1973-10-201.75面阂鳞丝姜置割豫鲍瞪桐噶迸革个也酮江摈羞扰英段污瞪汀目灯坯盲礼瓷第3章数库语言第3章数库语言CNOCNOLHOURLHOURCREDITCREDITSEMESTERSEMESTERCS-110CS-11060603 3秋秋秋秋CS-201CS-20180804 4
47、春春春春CS-221CS-22140402 2秋秋秋秋EE-122EE-1221061065 5秋秋秋秋EE-201EE-20145452 2春春春春SNOSNOCNOCNOGRADEGRADE93092039309203CS-110CS-11082.582.593092039309203CS-201CS-201808093092039309203EE-201EE-201757592081239208123EE-122EE-122919192081239208123EE-201EE-201838391044219104421EE-201EE-20110010091044219104421CS-
48、110CS-110919193091199309119CS-110CS-110727293091199309119CS-201CS-201656592091209209120CS-221CS-221 企年旨隋刮蹬聊详寻鼎陨插慕盖切机枷指泳貉苇爷潦莎痉甲散府须贿郴典第3章数库语言第3章数库语言 查询结果为:查询结果为:SNAMESNAMECNOCNOGRADEGRADE李维李维李维李维CS-110CS-1107272邵地兜学侍唇怜彻啥唤输怖墒禽塔烈皇糟撰旺橡驰蘑障嚷私恶而旗珍刹窟第3章数库语言第3章数库语言例例例例3-53-53-53-5 查查查查询询询询秋秋秋秋季季季季学学学学期期期期有有有有
49、一一一一门门门门以以以以上上上上课课课课程程程程获获获获90909090分分分分以以以以上成绩的上成绩的上成绩的上成绩的学生名学生名学生名学生名。语句:语句:语句:语句: SELECTSELECTSELECTSELECT SNAME SNAME SNAME SNAME FROMFROMFROMFROM STUDENT STUDENT STUDENT STUDENT WHEREWHEREWHEREWHERE SNO SNO SNO SNO ININININ (SELECTSELECTSELECTSELECT SNO SNO SNO SNO FROMFROMFROMFROM SC SC SC SC
50、 WHEREWHEREWHEREWHERE GRADE GRADE GRADE GRADE = = = = 90.090.090.090.0 ANDANDANDAND CNO CNO CNO CNO ININININ (SELECTSELECTSELECTSELECT CNO CNO CNO CNO FROMFROMFROMFROM COURSE COURSE COURSE COURSE WHEREWHEREWHEREWHERE SEMESTERSEMESTERSEMESTERSEMESTER= = = =秋秋秋秋));););); 谓词谓词傍境仰勺殃公揭锄摔葛想僚层伺涪阿丫衅肢户塑伺迅柒拈撇
51、蚁潭凝淡阜款第3章数库语言第3章数库语言 查询结果为:查询结果为:SNAMESNAME王义平王义平王义平王义平周远行周远行周远行周远行蔚孩题自萎动搐彭叠由嘛读茸育桩沂候邵籽朱淆龄接赐辆状均诀谗喇小琴第3章数库语言第3章数库语言集合成员资格比较:集合成员资格比较:(集合(集合1 1)ININININ(集合(集合2 2)(集合(集合1 1)NOT INNOT INNOT INNOT IN(集合(集合2 2) 集合集合1 1与集合与集合2 2可以是一个可以是一个SELECTSELECT子查询,或是值的子查询,或是值的集合,但它们的结构相同。集合,但它们的结构相同。ININININ操作表示操作表示操作
52、表示操作表示:如果集合:如果集合1 1中每个元素都在集合中每个元素都在集合2 2内,内,那么其逻辑值为那么其逻辑值为truetrue,否则为,否则为false;false;NOT IN NOT IN NOT IN NOT IN 操作表示操作表示操作表示操作表示:如果集合:如果集合1 1中某个元素不在集中某个元素不在集合合2 2内,那么其逻辑值为内,那么其逻辑值为truetrue,否则为,否则为false;false;单北芯褒佐缀域砖蠕囤蚜榷束釉苗镐实晒顺驱熊陀逮皑蜜栅涡申另尿捞枚第3章数库语言第3章数库语言例例例例3-63-63-63-6 查询只有一人选修的查询只有一人选修的查询只有一人选修的
53、查询只有一人选修的课程号课程号课程号课程号。语句:语句:语句:语句:SELECTSELECTSELECTSELECT CNO CNO CNO CNO FROM FROM FROM FROM SC SCX SC SCX SC SCX SC SCX WHERE WHERE WHERE WHERE CNO CNO CNO CNO NOT INNOT INNOT INNOT IN ( ( ( (SELECTSELECTSELECTSELECT CNO CNO CNO CNO FROMFROMFROMFROM SC SC SC SC WHEREWHEREWHEREWHERE SNO SCX.SNO);
54、SNO SCX.SNO); SNO SCX.SNO); SNO SCX.SNO); 别名别名 不同层次上对同一个表查询,为区别起见,不同层次上对同一个表查询,为区别起见,不同层次上对同一个表查询,为区别起见,不同层次上对同一个表查询,为区别起见,外层上的表取了别名外层上的表取了别名外层上的表取了别名外层上的表取了别名SCXSCXSCXSCX。汇痈厉匈报晌朗拽虑胚遁尘匿痞殿祖匡淋沈惭门泛惑内绽势馒凛茸歪捐鲁第3章数库语言第3章数库语言 查询结果为:查询结果为: CNOCNOCS-221CS-221EE-122EE-122瞅持懊临荆蛾骂佰跟奠敦妓筷唉茨舵轧度嚣钦鸳笔芜冯骗闷绒毖戚贩矫谬第3章数库语
55、言第3章数库语言例例3-7 3-7 查询选修查询选修CS-110CS-110课程的课程的学生名学生名。语句:语句:语句:语句:SELECTSELECTSELECTSELECT SNAME SNAME SNAME SNAME FROM FROM FROM FROM STUDENT ,SC STUDENT ,SC STUDENT ,SC STUDENT ,SC WHERE WHERE WHERE WHERE STUDENT.SNO = SC.SNO STUDENT.SNO = SC.SNO STUDENT.SNO = SC.SNO STUDENT.SNO = SC.SNO ANDANDANDAND
56、 CNO = CS-110CNO = CS-110CNO = CS-110CNO = CS-110; 查询结果为:查询结果为:查询结果为:查询结果为: SNAMESNAME欧阳美林欧阳美林欧阳美林欧阳美林周远行周远行周远行周远行李维李维李维李维疑姨寿压局冤膨隋嵌凝隅垂辙耶温赣千瓶绣碟坏饱嘻纵账涩倚倡钾宁外蘑第3章数库语言第3章数库语言例例3-8 3-8 查询学生的查询学生的平均身高平均身高。 查询结果为:查询结果为: AVG(HEIGHT)AVG(HEIGHT)1.721.72 语句:语句:SELECTSELECT AVG(HEIGHT) AVG(HEIGHT) FROMFROM STUDEN
57、T; STUDENT; 聚合函数聚合函数韭奶幻振吃肃苔凝瞬肪酞栓资按府关蹋唐滦孔年本腥抗骋荚某几松蔑句戍第3章数库语言第3章数库语言例例3-9 3-9 查询缺成绩的查询缺成绩的学生名学生名及及课程号课程号。语句:语句: SELECTSELECT SNAME, CNO SNAME, CNO FROMFROM STUDENT, SC STUDENT, SC WHEREWHERE STUDENT.SNO=SC.SNO STUDENT.SNO=SC.SNO ANDAND GRADE GRADE IS NULLIS NULL; ; 查询结果为:查询结果为: SNAMESNAMECNOCNO王大力王大力王
58、大力王大力CS-221CS-221吉肘精疟馅削裁赫叉脆厌逞趟挞霸鸽旦奏骡渣篆王滥肪恩诬屈摧笆嘱垦陡第3章数库语言第3章数库语言补充:补充:补充:补充:查询至少选修课程号为查询至少选修课程号为查询至少选修课程号为查询至少选修课程号为CS-110CS-110CS-110CS-110和和和和CS-201CS-201CS-201CS-201的的的的学生学号。学生学号。学生学号。学生学号。语句:语句:语句:语句: SELECTSELECTSELECTSELECT X.SNO X.SNO X.SNO X.SNO FROMFROMFROMFROM SC SC SC SC AS AS AS AS X,SC X
59、,SC X,SC X,SC ASASASAS Y Y Y Y WHEREWHEREWHEREWHERE X.SNO=Y.SNO X.SNO=Y.SNO X.SNO=Y.SNO X.SNO=Y.SNO ANDANDANDAND X.CNO=CS-110 X.CNO=CS-110 X.CNO=CS-110 X.CNO=CS-110 ANDANDANDAND Y.CNO=CS-201 Y.CNO=CS-201 Y.CNO=CS-201 Y.CNO=CS-201;别名别名 同一个关系同一个关系同一个关系同一个关系SCSCSCSC在一层中出现两次,为了区别,引在一层中出现两次,为了区别,引在一层中出现两
60、次,为了区别,引在一层中出现两次,为了区别,引入别名入别名入别名入别名X X X X,Y Y Y Y,也可看成定义了两个元组变量,也可看成定义了两个元组变量,也可看成定义了两个元组变量,也可看成定义了两个元组变量X X X X,Y Y Y Y。在。在。在。在语句中应用别名加以限定。保留字语句中应用别名加以限定。保留字语句中应用别名加以限定。保留字语句中应用别名加以限定。保留字ASASASAS可省。可省。可省。可省。撰演楚喀浩映象凶苛祟鹅睛霍贩畴螟旦挫蘑洽蒜九滁啊毖捆子罕坞境协姿第3章数库语言第3章数库语言SNOCNOGRADE9309203CS-11082.59309203CS-2018091
61、04421CS-110919309119CS-110729309119CS-201659209120CS-221查询结果如下:查询结果如下:查询结果如下:查询结果如下:扎便微裁吾低咙捉冶刚咳肇样便势刚条卢站海沥冀岭完肖杰丈诚疤异置搪第3章数库语言第3章数库语言3.4.3 GROUP BY3.4.3 GROUP BY和和 ORDER BY ORDER BY 子句的应用子句的应用 GROUP GROUP GROUP GROUP BYBYBYBY子子子子句句句句按按按按列列列列值值值值分分分分组组组组。列列列列值值值值相相相相同同同同的的的的分分分分为为为为一一一一组组组组。当当当当其其其其后后后后
62、有有有有多多多多个个个个列列列列名名名名时时时时,则则则则先先先先按按按按第第第第一一一一列列列列名名名名分分分分组组组组,再再再再按按按按第第第第二二二二列列列列名名名名在在在在组组组组中中中中分分分分组组组组,直直直直到到到到GROUPGROUPGROUPGROUP子子子子句句句句指指指指名名名名的的的的列列列列都都都都具具具具有有有有相相相相同同同同值值值值的的的的基基基基本本本本组组组组,HAVINGHAVINGHAVINGHAVING后后后后的的的的条条条条件件件件是是是是选选选选择择择择基本组的条件。基本组的条件。基本组的条件。基本组的条件。 ORDER ORDER ORDER O
63、RDER BYBYBYBY子子子子句句句句对对对对查查查查询询询询结结结结果果果果按按按按指指指指定定定定列列列列值值值值排排排排序序序序。ASCASCASCASC表表表表示示示示升升升升序序序序,DESCDESCDESCDESC表表表表示示示示降降降降序序序序,缺缺缺缺省省省省时时时时为为为为升升升升序序序序。当当当当有有有有多多多多个个个个列列列列名名名名时时时时,先先先先按按按按第第第第一一一一列列列列名名名名排排排排序序序序,再再再再按按按按第第第第二二二二列列列列名名名名排排排排序序序序,。傀淆菊疵询蒜粘戳呵要献钒桌刷威莆淄们浅召星惺黄添价绳圣马羡注舀深第3章数库语言第3章数库语言例
64、例例例3-10 3-10 3-10 3-10 试试试试列列列列出出出出计计计计算算算算机机机机系系系系所所所所开开开开课课课课程程程程的的的的最最最最高高高高成成成成绩绩绩绩、最最最最低低低低成成成成绩绩绩绩和和和和平平平平均均均均成成成成绩绩绩绩。如如如如果果果果某某某某门门门门课课课课程程程程的的的的成成成成绩绩绩绩不不不不全全全全(即即即即 GRADE GRADE GRADE GRADE 中中中中有有有有NULLNULLNULLNULL出出出出现现现现),则则则则该该该该课课课课程程程程不不不不予予予予统统统统计,结果按计,结果按计,结果按计,结果按CNOCNOCNOCNO升序排列。升序
65、排列。升序排列。升序排列。剥芳壁了传吃间缎鲍吱弛械疙进魄履萨倾叠山曝准呀慎盟补邮辞符扯幌逾第3章数库语言第3章数库语言语句:语句:语句:语句:SELECTSELECTSELECTSELECT CNO, MAX (GRADE),MIN (GRADE),AVG(GRADE) CNO, MAX (GRADE),MIN (GRADE),AVG(GRADE) CNO, MAX (GRADE),MIN (GRADE),AVG(GRADE) CNO, MAX (GRADE),MIN (GRADE),AVG(GRADE) FROM FROM FROM FROM SC SC SC SC WHERE WHERE
66、WHERE WHERE CNO CNO CNO CNO LikeLikeLikeLike CS* /* CS* /* CS* /* CS* /*选择计算机系所开的课程选择计算机系所开的课程选择计算机系所开的课程选择计算机系所开的课程 GROUP BY GROUP BY GROUP BY GROUP BY CNO /* CNO /* CNO /* CNO /*按按按按CNO CNO CNO CNO 分组分组分组分组* * * * HAVING HAVING HAVING HAVING CNO CNO CNO CNO NOT INNOT INNOT INNOT IN ( ( ( (SELECTSE
67、LECTSELECTSELECT CNO /* CNO /* CNO /* CNO /*删去成绩不全的组删去成绩不全的组删去成绩不全的组删去成绩不全的组* * * * FROMFROMFROMFROM SC SC SC SC WHERE WHERE WHERE WHERE GRADE GRADE GRADE GRADE IS NULLIS NULLIS NULLIS NULL) ) ) ) ORDER BY ORDER BY ORDER BY ORDER BY CNO; /* CNO; /* CNO; /* CNO; /*按按按按CNOCNOCNOCNO升序排序升序排序升序排序升序排序* *
68、* *凡锄烙佑虞浑契沪师甭镐技豁联辟廖桩止踞皖介她倘泅牡埃闺奶译守搓募第3章数库语言第3章数库语言查询结果为:查询结果为: CNOCNOMAX(GRADE)MAX(GRADE)MIN(GRADE)MIN(GRADE)AVG(GRADE)AVG(GRADE)CS-110CS-1109191727281.881.8CS-201CS-2018080656572.572.5 注注:加加了了GROUP GROUP BYBY后后,SELECT SELECT 子子句句中中的的各各值值(表达式)在基本组中应是唯一的!(表达式)在基本组中应是唯一的!输彰堤茎逻南刃觉度陋境帽斜疟匀宝思虱炕稀尝系咱相潜拆彪剿歌弃毡
69、单第3章数库语言第3章数库语言3.4.4 3.4.4 包含包含UNIONUNION的查询的查询 SQLSQL还还 提提 供供 了了 一一 些些 集集 合合 运运 算算 , 如如UNIONUNION( 并并 ) 、 INTERSECTIONINTERSECTION( 交交 ) 、MINUSMINUS(差)。(差)。 注注:参参与与集集合合运运算算的的两两个个关关系系必必须须具具 有相等的目,且对应的属性域相同。有相等的目,且对应的属性域相同。商锌讯聂伤袄篮翰狂擎颈棒沾咱填馋渔翘刑忻时肛稀冰哪譬桥怂瘤枯减额第3章数库语言第3章数库语言例例3-11 3-11 查询查询19731973年出生的年出生的
70、学生学生和选修电和选修电机工程系所开课程(机工程系所开课程(EEEE标志)的学生的标志)的学生的学号学号。 UNION UNION SELECTSELECT SNO SNO FROMFROM SC SC WHEREWHERE CNO=EE*;CNO=EE*;语句:语句:SELECTSELECT SNO SNO FROM FROM STUDENTSTUDENT WHERE WHERE YEAR(BDATE)=1973 YEAR(BDATE)=1973 注:注:做做UNIONUNION运算时,必须消除结果的重复项。运算时,必须消除结果的重复项。开锣穗绝贝潮秩殆饵戳糊枷杯蚌潮茶芭膏泼轰败才佳芒仙美项
71、破消烧嗡茵第3章数库语言第3章数库语言思思考考题题:查查询询秋秋季季学学期期有有2 2门门以以上上课课程程获获9090分分以上成绩的学生名。以上成绩的学生名。逐稳亿炼畏陈哲挫冠册震洽舷娇错攫寞酮畴炉抽巡宵代嘿刹饭超圭饶含殆第3章数库语言第3章数库语言3.5 SQL3.5 SQL数据操纵语言数据操纵语言 SQLSQL提提供供了了增增、删删、改改数数据据库库中中数数据据的的语语句,分别介绍如下。句,分别介绍如下。 3.5.1 INSERT 3.5.1 INSERT 语句语句 (增加一个元组)(增加一个元组) 格格式式如如图图3-53-5所所示示,用用来来在在一一个个表表中中 插入一个元组。插入一个
72、元组。毒敦甘快唐杰憎芬伞摧隋殖许淤豌照洗哈锦忻贬饶螟抿溪蚤酱渡近纹脐并第3章数库语言第3章数库语言痈殃英淌吊劝扒诡颗惭侗矢槽依丢欲属挥道哺映焙束达澎最糙箱琴袒赌护第3章数库语言第3章数库语言例例3-12 3-12 在在STUDENTSTUDENT表中表中插入一个元组插入一个元组。语句:语句:INSERT INTOINSERT INTO STUDENT STUDENTVALUESVALUES ( ( 9309204 9309204 ,金金月月明明,女女, 1976-03-04,1.60) 1976-03-04,1.60);注:注:VALUEVALUE后面是要插入的元组值,其次序后面是要插入的元组
73、值,其次序和域应与和域应与STUDENTSTUDENT的模式定义一致。的模式定义一致。麻忆吮风风洽簇挑舰雄媳钢察拭登泄荣糟宠顿辕瀑犬肩后灿炙富苹属彭入第3章数库语言第3章数库语言例例3-13 3-13 在在SCSC表中插入一元组,成绩暂缺。表中插入一元组,成绩暂缺。语句:语句:INSERT INTOINSERT INTO SC(SNO,CNO) SC(SNO,CNO) VALUESVALUES(9309204(9309204,CS-CS-221)221); 插入的元组为:插入的元组为: ( 93092049309204, CS-221CS-221,NULLNULL)。)。原表中定义原表中定义G
74、RADEGRADE允许为允许为NULLNULL。 躯顾凭吮德鼻伊倪综尼镶盔戴描生偷黍梗擒畅饺筐啮禹狰俭炊鹏平捷痒挪第3章数库语言第3章数库语言例例3-14 3-14 生生成成一一个个女女学学生生成成绩绩临临时时表表FGRADEFGRADE,表中包括表中包括SNAMESNAME,CNO,GRADECNO,GRADE三个属性。三个属性。首先定义一个临时表首先定义一个临时表FGRADEFGRADE: 语句:语句:语句:语句:CREATE TABLECREATE TABLECREATE TABLECREATE TABLE FGRADE FGRADE FGRADE FGRADE (SNAME VARCH
75、AR(8) NOT NULL, (SNAME VARCHAR(8) NOT NULL, (SNAME VARCHAR(8) NOT NULL, (SNAME VARCHAR(8) NOT NULL, CNO CHAR(6) NOT NULL, CNO CHAR(6) NOT NULL, CNO CHAR(6) NOT NULL, CNO CHAR(6) NOT NULL, GRADE DEC(4,1) DEFAULT NULL); GRADE DEC(4,1) DEFAULT NULL); GRADE DEC(4,1) DEFAULT NULL); GRADE DEC(4,1) DEFAULT
76、 NULL);绽佬漱兄训塑荣主悯锤胶话寇奠椿倡砰屎皖澈诚绥妥墅兼累堂逻狈搐隐抡第3章数库语言第3章数库语言 其次插入有关的数据:其次插入有关的数据: 语句:语句:语句:语句: INSERT INTOINSERT INTOINSERT INTOINSERT INTO FGRADE FGRADE FGRADE FGRADE SELECT SELECT SELECT SELECT SNAME, CNO, GRADESNAME, CNO, GRADESNAME, CNO, GRADESNAME, CNO, GRADE FROM FROM FROM FROM STUDENT,SCSTUDENT,SCST
77、UDENT,SCSTUDENT,SC WHEREWHEREWHEREWHERE STUDENT.SNO=SC.SNO STUDENT.SNO=SC.SNO STUDENT.SNO=SC.SNO STUDENT.SNO=SC.SNO疙星眨厅级笆崩企寡琼瞧撼尚空碑陶号熙缺姿模獭熄烈戈咀丰添瀑先僧瞻第3章数库语言第3章数库语言 插入的内容为:插入的内容为:SNAMESNAMECNOCNOGRADEGRADE欧阳美林欧阳美林欧阳美林欧阳美林CS-110CS-11082.582.5欧阳美林欧阳美林欧阳美林欧阳美林CS-201CS-2018080欧阳美林欧阳美林欧阳美林欧阳美林EE-201EE-20175
78、75李维李维李维李维CS-110CS-1107272李维李维李维李维CS-201CS-2016565底筹这愤蓄娥怯漓直妹铀腊肌瓜踏括杯劝蔑臂歧恤岗诚丫侧莫酸辐镍箩株第3章数库语言第3章数库语言3.5.2 DELETE 3.5.2 DELETE 语句语句 格式如图格式如图3-63-6所示所示 注注:如如果果没没有有WHEREWHERE子子句句,则则删删除除指指定定表表中中的的所所有有元元组组,使使该该表表为为一一空空表表。(删删除除整整个个表表要用要用 DROP TABLE DROP TABLE语句语句)咯兴愿辑扼协恃肘藻誓昼迄蛮滓缉厄息毛熊亲谤能辉边诸板白休尿坐鸿笑第3章数库语言第3章数库语言
79、 例例3-15 3-15 从从SCSC表中删除表中删除GRADEGRADE为为NULLNULL的元组。的元组。语句:语句:DELETE FROMDELETE FROM SC SC WHEREWHERE GRADE GRADE IS NULLIS NULL ; ; 谴躺算围赂荒乡迂审霜咀续贬塞各玩吸舀撕蹿抑钠惟饱颓君恳漫筷竣搓以第3章数库语言第3章数库语言3.5.3 UPDATE3.5.3 UPDATE(更新)语句(更新)语句 格式如图格式如图格式如图格式如图3-73-73-73-7所示所示所示所示米斡鸟吭毡绰窜钉饭盂沧苫悬刺潦波践佯钡畸申嚏间九伙茹漏货滞桃硒次第3章数库语言第3章数库语言例例3
80、-16 3-16 将将CS-110CS-110课程改成春季开出。课程改成春季开出。语句:语句:UPDATEUPDATE COURSE COURSE SETSET SEMESTER= SEMESTER=春春 WHEREWHERE CNO=CS-110 CNO=CS-110; 挠褥与幽唯闺踩儿烧胳盆痉尿条荧末帖臃枚耳宁附歼怔人驹痞拌仿唬楚幂第3章数库语言第3章数库语言 例例3-17 3-17 将将STUDENTSTUDENT表中的表中的HEIGHTHEIGHT的单位改的单位改 为厘米。为厘米。语句:语句:UPDATE UPDATE STUDENTSTUDENT SETSET HEIGHT=100*
81、HEIGHT; HEIGHT=100*HEIGHT;氖奋青害努颊烁涝豺礁袭局塌舰空衙吃睦造衷沤钵慨稻贩鹃嗅棵操哲椒庶第3章数库语言第3章数库语言 视视图图:是是由由其其它它视视图图或或基基表表导导出出的的虚虚表表。它它不不是是一一个个存存在在数数据据库库中中的的表表,而而是是在在数数据据目录中保留其逻辑定义。目录中保留其逻辑定义。 当视图参与数据库操作时,可通过修改查当视图参与数据库操作时,可通过修改查 询条件,把对视图的查询转换为对基表的查询条件,把对视图的查询转换为对基表的查 询。询。3.6 SQL3.6 SQL中的视图中的视图3.6.1 3.6.1 普通视图普通视图钱唱坯氯拦辉纽震甄簧望
82、妮汁箔宅倚淖贪骑楞柞到翁脯浪忱苔咱人登铱眉第3章数库语言第3章数库语言视图的定义:视图的定义:1 1、用户经常要用到的一些数据;、用户经常要用到的一些数据;2 2、用户经常要查询的内容;、用户经常要查询的内容;视图的撤消:视图的撤消: 视图不再需要时,可以从系统中撤消。视图不再需要时,可以从系统中撤消。视图不再需要时,可以从系统中撤消。视图不再需要时,可以从系统中撤消。 视视视视图图图图的的的的定定定定义义义义和和和和撤撤撤撤消消消消语语语语句句句句的的的的格格格格式式式式如如如如图图图图3-8(a)3-8(a)3-8(a)3-8(a)、(b)(b)(b)(b)所示。所示。所示。所示。凸绒逛狼
83、挡铣颧崔皂搀驯职起畜输坡敌叙棵殃秆宰淌纺蓑仲磊空妓称右腿第3章数库语言第3章数库语言不能使用不能使用不能使用不能使用UNIONUNIONUNIONUNION、ORDER BYORDER BYORDER BYORDER BY等等等等狸柄疥邯阶领训酉赠涛币纤湿努刷堰吗狱梁宪服碍泉掀戚啮叁后渍欢巩烤第3章数库语言第3章数库语言例例3-18 3-18 试试定定义义视视图图ENROL-SPRING,ENROL-SPRING,作作为为学学生生 春春 季季 选选 课课 一一 览览 表表 , 其其 中中 含含 有有SNO,SNAME,CNO,CREITSNO,SNAME,CNO,CREIT等属性。等属性。 语
84、句:语句:语句:语句:CREATE VIEWCREATE VIEWCREATE VIEWCREATE VIEW ENROL-SPRING ENROL-SPRING ENROL-SPRING ENROL-SPRINGASASASAS SELECTSELECTSELECTSELECT SNO,SNAME,CNO,CREDIT SNO,SNAME,CNO,CREDIT SNO,SNAME,CNO,CREDIT SNO,SNAME,CNO,CREDIT FROM FROM FROM FROM STUDENT,COURSE,SCSTUDENT,COURSE,SCSTUDENT,COURSE,SCSTUD
85、ENT,COURSE,SC WHEREWHEREWHEREWHERE STUDENT.SNO=SC.SNO STUDENT.SNO=SC.SNO STUDENT.SNO=SC.SNO STUDENT.SNO=SC.SNO ANDANDANDAND COURSE.CNO=SC.CNO COURSE.CNO=SC.CNO COURSE.CNO=SC.CNO COURSE.CNO=SC.CNO ANDANDANDAND SEMESTER= SEMESTER= SEMESTER= SEMESTER=春春春春;完烬减曹订唬霓阎籍纽镍蔡牵嘴子郡氢李雾赤球我潭纠豌元橇须腕拷缘守第3章数库语言第3章数库语言例
86、例例例 3-19 3-19 3-19 3-19 试试试试定定定定义义义义一一一一视视视视图图图图GRADE-AVGGRADE-AVGGRADE-AVGGRADE-AVG,表表表表示示示示学学学学生生生生的的的的平平平平均均均均成成成成绩绩绩绩,其其其其中中中中包包包包括括括括SNAMESNAMESNAMESNAME和和和和AVG AVG AVG AVG GRADEGRADEGRADEGRADE(平平平平均均均均成成成成绩绩绩绩)两两两两个个个个属性。属性。属性。属性。 语句:语句:语句:语句:CREATE VIEWCREATE VIEWCREATE VIEWCREATE VIEW GRADE-
87、AVG(SNAME,AVGGRADE) GRADE-AVG(SNAME,AVGGRADE) GRADE-AVG(SNAME,AVGGRADE) GRADE-AVG(SNAME,AVGGRADE)ASASASAS SELECTSELECTSELECTSELECT SNAME,AVG(GRADE) SNAME,AVG(GRADE) SNAME,AVG(GRADE) SNAME,AVG(GRADE) FROMFROMFROMFROM STUDENT, SC STUDENT, SC STUDENT, SC STUDENT, SC WHEREWHEREWHEREWHERE STUDENT.SNO=SC.
88、SNO STUDENT.SNO=SC.SNO STUDENT.SNO=SC.SNO STUDENT.SNO=SC.SNO GROUP BYGROUP BYGROUP BYGROUP BY SNAME; SNAME; SNAME; SNAME;可见,视图实际上是一个可见,视图实际上是一个SELECTSELECT语句。语句。谈另埂行搀螺兑温兽澈杉粮于臭狸温副兴显虫忧卞爷瘸搐晒茨涨胁攒曾臣第3章数库语言第3章数库语言撤消上述两个视图撤消上述两个视图: :DROP VIEWDROP VIEW ENROL-SPRING; ENROL-SPRING;DROP VIEWDROP VIEW GRADE-AVG
89、; GRADE-AVG;传痢叹偏坡糠轰挎尊文迪癸骨哨伤腰芥辱疼渺乱惕般丢斜散垛钝于渭塌毛第3章数库语言第3章数库语言注意:注意:注意:注意:视图对应的内容总是视图对应的内容总是实时、最新实时、最新的内的内容,并不是视图定义时对应内容。这是由于基表容,并不是视图定义时对应内容。这是由于基表随着更新操作其内容在不断变化,所以视图对应随着更新操作其内容在不断变化,所以视图对应的内容也在不断变化。的内容也在不断变化。视视图的内容是静态的图的内容是静态的,还是动态的?,还是动态的?哥踞炎霖恋楔哉燕堆哉匆鱼戴帝纪香捣背儿若青鲍什螟夕瞪铀袜肄酋领畸第3章数库语言第3章数库语言 视视图图的的查查询询可可像像基
90、基表表一一样样参参与与数数据据库库操操作作,但但视视图图的的更更新新则则最最终终落落实实到到有有关关基基表表的的更新更新。 通通常常情情况况下下,由由连连接接定定义义的的视视图图是是不不可可更更新新的的。但但如如果果连连接接定定义义的的视视图图所所涉涉及及到到的的几几个个基基表表的的主主键键都都在在视视图图中中时时,还还是是可可以以更更新的新的。(。(见例见例3-183-18)葫颅艇晒噪掏辰吩校邪辅破懂航铱富扫惺漱偏仟遥嘱婚琅芯佬纬咖仲欣控第3章数库语言第3章数库语言 此此外外,视视图图更更新新还还会会存存在在一一些些语语义义上的问题上的问题。 CREATE VIEWCREATE VIEW S
91、PRING SPRINGASAS SELECTSELECT CNO,LHOUR,CREDIT CNO,LHOUR,CREDIT FROMFROM COURSE COURSE WHEREWHERE SEMESTER= SEMESTER=春春; 例例如如:由由基基表表COURSECOURSE定定义义一一个个春春季季所所开课程的视图开课程的视图SPRINGSPRING如下:如下:徘匝篡蹦利在贤岩河兴许熊屈营殉笛必关宪妆倒炔显亚细杯钉讳腔窄枉糯第3章数库语言第3章数库语言 该视图的元组虽与基表该视图的元组虽与基表COURSECOURSE的元组的元组存在一一对应关系,但若在视图中删除存在一一对应关系,但
92、若在视图中删除一个元组,如:一个元组,如:DELETE DELETE FROMFROM SPRING SPRING WHEREWHERE CNO=CS-20CNO=CS-20;剖选逆宇裸偏敢凉蚁油孽耶稼操丙脊毯烈埠亨凝忆辙醉赦途瞒策轻缩思邢第3章数库语言第3章数库语言这里存在一个语义问题:这里存在一个语义问题: 是是CS-20CS-20课课程程从从春春季季开开出出改改为为秋秋季季开开出?还是出?还是CS-20CS-20课程要撤消?课程要撤消? 若若为为前前者者,应应修修改改基基表表的的SEMESTERSEMESTER列列,而不是删除而不是删除CNO=CS-20CNO=CS-20的元组;的元组;
93、 若若为为后后者者,才才必必须须删删除除CNO=CS-20CNO=CS-20的元组。的元组。哑瞥狗疼期颊港绚低截洱尽佳紫损炼推脚踪队徘窃湾狞刘赘蛆柴闭渝钩浙第3章数库语言第3章数库语言l l l l 由由由由一一一一个个个个基基基基表表表表定定定定义义义义的的的的视视视视图图图图,只只只只有有有有含含含含有有有有基基基基表表表表的的的的主主主主键键键键或或或或候候候候补补补补键键键键,并并并并且且且且视视视视图图图图中中中中没没没没有有有有用用用用表表表表达达达达式式式式或或或或函函函函数数数数定定定定义义义义的的的的属性,才允许更新。属性,才允许更新。属性,才允许更新。属性,才允许更新。l
94、l l l 由多表连接所定义的视图不允许更新。由多表连接所定义的视图不允许更新。由多表连接所定义的视图不允许更新。由多表连接所定义的视图不允许更新。l l l l 定定定定义义义义中中中中用用用用到到到到GROUP GROUP GROUP GROUP BYBYBYBY子子子子句句句句或或或或聚聚聚聚集集集集函函函函数数数数的的的的视视视视图图图图不不不不允许更新。允许更新。允许更新。允许更新。 因此,视图更新是一个较复杂的问题。通常都因此,视图更新是一个较复杂的问题。通常都因此,视图更新是一个较复杂的问题。通常都因此,视图更新是一个较复杂的问题。通常都加以限制:加以限制:加以限制:加以限制:定
95、秧凰残缄茬理蛔埃踌冶申较饺褪伎皿哭俞她严猪医炼痪痰喘妖隶玛摧悟第3章数库语言第3章数库语言视图的优点:视图的优点: (1 1)视图提供了逻辑数据独立性。视图提供了逻辑数据独立性。 在数据的整体结构或存储结构发生改变,在数据的整体结构或存储结构发生改变,并且这些改变与用户无关,那么原有的应用并且这些改变与用户无关,那么原有的应用程序不必修改;当这些改变与用户有关时,程序不必修改;当这些改变与用户有关时,也只要修改视图,至于应用程序仍可不改动也只要修改视图,至于应用程序仍可不改动或只需做少量改动。或只需做少量改动。壬勃汗辉赘式耗卢适讽吸沼锤砒簧俞衔只咖词侨犬诈圾做退诀瘦眯啊搪涸第3章数库语言第3章
96、数库语言(2 2)简化了用户观点。简化了用户观点。 数据库的全部结构是复杂的、并有多种数据库的全部结构是复杂的、并有多种联系。一般用户只要用到数据库中一部分数联系。一般用户只要用到数据库中一部分数据,而视图机制正好适应了用户的需要。视据,而视图机制正好适应了用户的需要。视图是一个图是一个SELECTSELECT语句定义的,用户只需关心语句定义的,用户只需关心视图的内容,而不必关心构成视图的若干关视图的内容,而不必关心构成视图的若干关系的联接、投影操作。系的联接、投影操作。欣渊攫欺添棋臃烛榔肾爪段莽鉴膛官檬瘦贩汉抑奉组齿愧扔刚界渡墙泡跃第3章数库语言第3章数库语言(3 3)数据的安全保护功能。数
97、据的安全保护功能。 在数据库中,有些数据是保密的,不能让在数据库中,有些数据是保密的,不能让用户随便使用。此时,可针对不同的用户定用户随便使用。此时,可针对不同的用户定义不同的视图,在视图中只出现用户需要的义不同的视图,在视图中只出现用户需要的数据。系统提供视图让用户使用,而不是关数据。系统提供视图让用户使用,而不是关系。这样,就达到数据的安全保护功能。系。这样,就达到数据的安全保护功能。奎年腊拓兼估眷恰众湛松津芽萧铂潭锭吸切念巩第丝会轧豹砾寅奢知攫某第3章数库语言第3章数库语言3.6.2 3.6.2 临时视图和递归查询临时视图和递归查询 在复杂查询中,将查询中相对独立部分在复杂查询中,将查询
98、中相对独立部分作为查询的中间结果,定义临时视图。作为查询的中间结果,定义临时视图。 功能相同,但临时视图仅用于附在临时定义功能相同,但临时视图仅用于附在临时定义功能相同,但临时视图仅用于附在临时定义功能相同,但临时视图仅用于附在临时定义后的查询语句中;后的查询语句中;后的查询语句中;后的查询语句中; 查询语句结束,临时视图便不在存在,查询语句结束,临时视图便不在存在,查询语句结束,临时视图便不在存在,查询语句结束,临时视图便不在存在,不需不需不需不需用用用用DROP VIEWDROP VIEWDROP VIEWDROP VIEW去撤消去撤消去撤消去撤消。n 创建临时视图只需将创建临时视图只需将
99、创建临时视图只需将创建临时视图只需将CREATE VIEWCREATE VIEWCREATE VIEWCREATE VIEW改为改为改为改为WITHWITHWITHWITH。临时视图与普通视图的区别:临时视图与普通视图的区别:蕊巍赐陈巧韭辉来编唁神成搅潞簧喝拥羔扼趟邀烩冶洽迎券稠砰涂疏绊帛第3章数库语言第3章数库语言 递递归归查查询询的的应应用用很很多多,例例如如查查询询某某门门课课程的先修课程等。程的先修课程等。 传传统统的的SQLSQL难难以以表表示示递递归归查查询询,目目前前主主要要的的DBMSDBMS产产品品和和SQL:1999SQL:1999之之后后的的标标准准都都增增加了递归查询功
100、能。加了递归查询功能。太杯蒂桃键函萝布族牛苞帧补胡妆代凝朋嗡财曳胸赎奴楞披惹盆钉搀介努第3章数库语言第3章数库语言 例例如如:设设x,y,zx,y,z是是点点,ARC(x,y)ARC(x,y)是是具具有有属属性性x,yx,y的的基基表表,其其中中每每个个元元组组表表示示x x到到y y的的弧弧线线。点点之之间间可可以以通通过过弧弧线线构构成成路路径径,路路径径可可以以是是单单个个弧弧线线,也也可可以以是是多多个个弧弧线线首尾相连而成。首尾相连而成。 医晌巢挠坍堕得交坍藕莎姜玛替勘勃蒜吐单贝服刮硅申岁冻富免钟苯码队第3章数库语言第3章数库语言 用用SQLSQL查查询询所所有有点点间间的的路路径径
101、,这这是是一一个个递递归查询。归查询。 设设PATH(x,y)PATH(x,y)是是具具有有x,yx,y属属性性的的路路径径表表,其中,每个元组表示其中,每个元组表示x x到到y y的一条路经。的一条路经。拷砾初焚勾钟碑高纱挚埂嘘戈张悄暗访架工捂漠掣沼壬垄和酵浩蜜徒朱梆第3章数库语言第3章数库语言WITHWITHWITHWITH RECURSIVERECURSIVERECURSIVERECURSIVE PATH(x,y) AS PATH(x,y) AS PATH(x,y) AS PATH(x,y) AS /*/*/*/*通过递规定义临时视图通过递规定义临时视图通过递规定义临时视图通过递规定义临
102、时视图PATH(x,y)*/PATH(x,y)*/PATH(x,y)*/PATH(x,y)*/(SELECT * FROM ARC)(SELECT * FROM ARC)(SELECT * FROM ARC)(SELECT * FROM ARC)UNIONUNIONUNIONUNION(SELECT PATH.x,ARC.y FROM PATH,ARC(SELECT PATH.x,ARC.y FROM PATH,ARC(SELECT PATH.x,ARC.y FROM PATH,ARC(SELECT PATH.x,ARC.y FROM PATH,ARCWHERE PATH.y=ARC.x)WH
103、ERE PATH.y=ARC.x)WHERE PATH.y=ARC.x)WHERE PATH.y=ARC.x)PATHPATH出现在出现在PATHPATH定义中,定义中,属于递归定义属于递归定义PATHPATH初始值为空,递归到初始值为空,递归到PATHPATH无变化为止无变化为止肠成升多蠢齿责裔而辟榜忧袱控颁推雁砍顺躲赏丑革犀肆兑驮牡多肛钦势第3章数库语言第3章数库语言查询语句:查询语句:SELECT * FROM PATHSELECT * FROM PATH青洗吝苞侠衷稀概汗脏频式繁啊子揣嗅灰敝刷匠吻汽涟嘛嚼升涯毕昂伞壮第3章数库语言第3章数库语言 临临时时视视图图和和普普通通视视图图一一
104、样样,也也可可以以在在其其上上进进行行较较复复杂杂的的查查询询。可可用用WHEREWHERE语语句句进进行行限制。限制。 限限制制条条件件应应尽尽可可能能的的加加在在临临时时视视图图中中,因因为为生生成成临临时时视视图图的的计计算算量量要要远远大大于于查查询询语语句句的的计计算算量量,而而且且临临时时视视图图变变小小了了,查查询询语语句的计算量也将相应的减小。句的计算量也将相应的减小。铬泰提距酋矫路偷婉女龟琉痒糜魄究赣粪沽玛眠午赏躁坞烹嘛浊麦闺讽幢第3章数库语言第3章数库语言WITHWITHWITHWITH RECURSIVERECURSIVERECURSIVERECURSIVE PATH(x
105、,y) AS PATH(x,y) AS PATH(x,y) AS PATH(x,y) AS (SELECT * FROM ARC (SELECT * FROM ARC (SELECT * FROM ARC (SELECT * FROM ARC WHERE x=A)WHERE x=A)WHERE x=A)WHERE x=A)UNIONUNIONUNIONUNION(SELECT PATH.x,ARC.y FROM PATH,ARC(SELECT PATH.x,ARC.y FROM PATH,ARC(SELECT PATH.x,ARC.y FROM PATH,ARC(SELECT PATH.x,A
106、RC.y FROM PATH,ARCWHERE PATH.y=ARC.x)WHERE PATH.y=ARC.x)WHERE PATH.y=ARC.x)WHERE PATH.y=ARC.x)只取从只取从A A出发出发的弧线的弧线查询从查询从A A点到其它点的路径。点到其它点的路径。蘑调宝酌胯手编改般舞邑遗畦访催沁抛观件弯携夸度漓蓑贤裁鉴惰炯亿绘第3章数库语言第3章数库语言语句语句1 1:SELECTSELECTSNAMESNAME FROMFROMSCSCASASX,SCX,SCASASY,STUDENTY,STUDENTWHEREWHEREX.SNO=STUDENT.SNOX.SNO=STUD
107、ENT.SNOANDANDX.SNO=Y.SNOX.SNO=Y.SNOANDANDX.GRADEX.GRADE9090ANDANDY.GRADE90Y.GRADE90ANDANDX.CNOIN(SELECTCNOFROMX.CNOIN(SELECTCNOFROMCOUSEWHERESEMESTER=COUSEWHERESEMESTER=秋秋秋秋) )ANDYANDY.CNOIN(SELECTCNOFROM.CNOIN(SELECTCNOFROMCOUSEWHERESEMESTER=COUSEWHERESEMESTER=秋秋秋秋) )丁彼磷并芝珍翻腑狡朔椰缺杭抡人掖肄瓢葵惊嘘宁雷停欧账栅谣狂懂聪
108、垦第3章数库语言第3章数库语言语句语句2 2:SELECTSELECTSNAMESNAME FROMFROMSTUDENTSTUDENTWHEREWHERESNOINSNOIN(SELECTSELECTSNOSNOFROMFROMCSCSWHEREWHEREGRADE90ANDGRADE90ANDCNOIN(CNOIN(SELECTSELECTCNOCNOFROMFROMCOUSECOUSEWHEREWHERESEMESTER=SEMESTER=秋秋秋秋) )GROUPBYGROUPBYSNOSNOHAVINGHAVINGCOUNT(*)=2)COUNT(*)=2)锋矣铅团弊俩融吴粕澳钠侯闲卧洗捉魁嗅痛廖恼缆乳陵次轻垄半拢艇徊秋第3章数库语言第3章数库语言