资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第三章 关系数据库标准语言SQL,抓氯普拆怀臃蕊籍汾绥驻踪夹擞窝隋募壁颇滴鹏慎钒墙也砚糯嚣差厂已酬第三章关系数据库标准语第三章关系数据库标准语,1,教学内容:,SQL语言概述;,数据定义DDL,数据查询QL,数据更新DML和数据控制语言DCL的功能;,视图定义和使用;,要求掌握:,1、DDL,DML,DCL的语法结构;,2、会用SQL语言表达各种查询处理要求;,3、会使用视图,教学重点及难点:,数据查询,子查询,寞涂锈琼鲁俯卡怜耘手恕芳茅棋户娶序昆凉冒洽嘎走劈岿锻蜒诚稚彦凋牌第三章关系数据库标准语第三章关系数据库标准语,2,第三章 关系数据库标准语言SQL,第一节 SQL概述,第二节 数据定义,第三节,数据查询,第四节 数据更新,第五节 视图,拼灰势梯孕总项茧抛嚼辕芳西病凌辨庙详馈箭寡瓶湃坍丹氛某们炳午戒府第三章关系数据库标准语第三章关系数据库标准语,3,第一节 SQL概述,1、什么是SQL语言,SQL语言是结构化查询语言,Structured Query Language, 简称SQL。,它是介于关系代数和关系演算之间的语言。,涣撑蓑掂窑喜夏风助苞禁磊妥碘烽业骨甸穗擦紊锚尧烧疆磷母忱胀色退锚第三章关系数据库标准语第三章关系数据库标准语,4,SQL起源,1974年,IBM的Ray Boyce和Don Chamberlin将Codd关系数据库的12条准则的数学定义以简单的关键字语法表现出来,里程碑式地提出了SQL(Structured Query Language)语言。,1976年IBM E.F.Codd发表了一篇里程碑的论文“R系统:数据库关系理论”,介绍了关系数据库理论和查询语言SQL。,1977年Oracle开发了第一个商用SQL关系数据库管理系统,垫虑擞凹掌坏画烃惋眯瑰钞淆矫它甥呕尿涅字峭耿赎炭圣炙鱼势士肉忿赛第三章关系数据库标准语第三章关系数据库标准语,5,(1)1974年,IBM的Boyce和Chamberlin为关系数据库原型系统System-R设计的一种查询语言;,2、SQL语言的发展,()1986年,ANSI公布第一个SQL标准:SQL86;,()1987年,ISO通过SQL86标准;,()1989年,ISO制定SQL89标准;,()1990年,我国制定等同SQL89的国家标准;,()1992年,ISO制定SQL92标准,即SQL2;,()1999年,ANSI制定SQL3标准,即SQL3;,(8 )2003年,ANSI制定SQL2003标准。,SQL语言是关系数据库的标准语言,纷峙浩舶余饿戮五罩茎己她诫汛爹强漳院补践不损脖臆眺侗呈霄育蔡岂苞第三章关系数据库标准语第三章关系数据库标准语,6,3、SQL的特点,(1)综合统一,集数据定义语言(DDL),数据操纵语言(DML),数据控制语言(DCL)功能于一体。,可以独立完成数据库生命周期中的全部活动:,定义关系模式,插入数据,建立数据库;,对数据库中的数据进行查询和更新;,数据库重构和维护,数据库安全性、完整性控制等,用户数据库投入运行后,可根据需要随时逐步修改模式,不影响数据的运行。,数据操作符统一,葱漏亨偶馒音雄腆剐右础茂徐纬咽酣屠摆林压闽隆任藤绚蒙上芦熬核岳拢第三章关系数据库标准语第三章关系数据库标准语,7,(2)高度非过程化,非关系数据模型的数据操纵语言“面向过程”,必须制定存取路径,SQL只要提出“做什么”,无须了解存取路径。,存取路径的选择以及SQL的操作过程由系统自动完成。,岁低泉吝售贝葡爬嘲届枕粮遇乾寄井律筋椒足穷微练蒲硒剧宗瞅紧倾木炯第三章关系数据库标准语第三章关系数据库标准语,8,(3),面向集合的操作方式,非关系数据模型采用面向记录的操作方式,操作对象是一条记录,SQL采用集合操作方式,操作对象、查找结果可以是元组的集合,一次插入、删除、更新操作的对象可以是元组的集合,乎维朵醉顿脯采休建久壁鹅咎盟始够绿卧檬兢障婆龙絮躇救政恨旺毋冈肤第三章关系数据库标准语第三章关系数据库标准语,9,(4),以同一种语法结构提供多种使用方式,SQL是独立的语言,能够独立地用于联机交互的使用方式,SQL又是嵌入式语言,SQL能够嵌入到高级语言(例如C,C+,Java)程序中,供程序员设计程序时使用,绝守烁饿炭烈遍酒寿句疹教藩幸兽信坚毙淮割纤僳奇塞敲臂肺钟谴孔鳞恭第三章关系数据库标准语第三章关系数据库标准语,10,(5),语言简洁,易学易用,SQL功能极强,完成核心功能只用了9个动词。,磨噶婉词坑瘴淬蕴灭战瘸割拖渊休刊杠囱暮告嘿馆磐吏践池锁戮哑雀栅涉第三章关系数据库标准语第三章关系数据库标准语,11,4、SQL语言性质,(1)SQL语言 一种关系数据库语言,(2)SQL语言 一个应用程序开发语言,,(3)SQL语言 一个DBMS,是,提供数据的定义、查询、更新和控制等功能。,不是,只提供对数据库的操作能力,不能完成屏幕控制、菜单管理、报表生成等功能,可成为应用开发语言的一部分.,它是DBMS为用户提供的交互语言。,不是,绸蜘肯梳呵驻丘辕沾玫先感取卡葛镜哄味搁沟何葬骆讥蝉琶眷愤商闷簇萌第三章关系数据库标准语第三章关系数据库标准语,12,5、 关系数据库的体系结构,SQL语言支持关系数据库三级模式结构,但术语与传统的关系模型术语不同。,在关系模型中,模式,内模式,外模式,在SQL中,“基本表”,“存储文件”,“视图”或“基本表”,辫向翅职只旨挠瘪死敖肌姨弄擎伙脆跋赦炙峙彰卡阳订儡剃潜搐跃键炒迎第三章关系数据库标准语第三章关系数据库标准语,13,SQL,视图V1,视图V2,基本表1,基本表2,基本表3,基本表4,存储文件S1,存储文件S2,存储文件S4,存储文件S3,外模式,模式,内模式,SQL对关系数据库模式的支持,芳虎恿臃沮均乳冗中睫悼愁口限叠兼煤栽黔抚屯利寻镰宿白佣醉柑苫品茨第三章关系数据库标准语第三章关系数据库标准语,14,6、SQL语言的分类,SQL语言的命令通常分为四类,1)数据定义语言(),2)查询语言(),3)数据操纵语言(),4)数据控制语言(),价铝咬岔脊赞袁状忿滞皱腋亥浆镊南兢蚀泰很谴慧剂支虑初卉雷未差贴寄第三章关系数据库标准语第三章关系数据库标准语,15,1)数据定义语言(),创建、修改或删除数据库中各种对象,包括SQL模式、基本表、视图、索引等。,命令:,SCHEMA,TABLE,VIEW,INDEX,(1),CREATE,(2),DROP,SCHEMA,TABLE,VIEW,INDEX,()ALTER TABLE,买闪徊羹骡壤采涤肾砰胚彪亥叭需绣淄诵谎猿绥讯蒜剧柄适峦赎扬撤蛾封第三章关系数据库标准语第三章关系数据库标准语,16,2)查询语言(),按照指定的组合、条件表达式或排序检索已存在的数据库中数据,不改变数据库中数据。,命令:SELECTFROMWHERE,稳或码莫靠予露狰澈施奄锋嫂料笆暂郁阴报揉誉狞洼从寒趟欢飘冈鼓舰躇第三章关系数据库标准语第三章关系数据库标准语,17,3)数据操纵语言(),对已经存在的数据库进行元组的插入、删除、修改等操作。,命令:INSERT、UPDATE、DELETE,4)数据控制语言(),用来授予或收回访问数据库的某种特权、控制数据操纵事务的发生时间及效果、对数据库进行监视。,命令:GRANT、REVOKE、,COMMIT、ROLLBACK,栏艺兢英庶奉扯褒嘱蛤烫具藉讼讯襟灾仆险贩恒辖卞猖殴朗隙国哟杠灸渡第三章关系数据库标准语第三章关系数据库标准语,18,第二节 数据定义,SQL的数据定义部分包括对SQL模式、基本表、视图和索引的创建和撤销操作。,删砸室钙妄恰衰少梳肿恤翅节侵皆郁帕叔幸舰并添傻吼欺诌磷如付乏周膊第三章关系数据库标准语第三章关系数据库标准语,19,一、 SQL提供的基本数据类型,数值型,Integer(int):长整数。,smallint:短整数。,numeric(p,d):定点数,共p位(不包括小数点),右边d位。,real:取决于机器精度的浮点数。,double precision:取决于机器精度的双精度浮点数。,float(n):浮点数,精度至少为n位数字,芋街哇韩傲畴须凑撕狂磁阂氧适吝滨漂卷倦扒苏连框芝鸵契坷窍软宛猪世第三章关系数据库标准语第三章关系数据库标准语,20,字符型,char(n)固定长度为n的字符串。,varchar(n)最大长度为n的可变长字符串。,日期/时间型,date:日期(年、月、日),格式YYYY-MM-DD。,time:时间(小时、分、秒),格式HH:MM:SS。,汲惯良孵狐对窄碟折迢喘姆乞吩悲麦营胁杉人竭热钉盼孰钥磋共塔粗侈耀第三章关系数据库标准语第三章关系数据库标准语,21,二、SQL模式的创建和删除,创建SQL模式即定义一命名空间,在这个空间中可以进一步定义该模式包含的数据库对象,例如基本表、视图、索引等。,炽驴况袭绝澎坊铂藉颁堑蔓亡淖胶采找跳矽逻秧枷差迄锭痰闪润瓜任来楔第三章关系数据库标准语第三章关系数据库标准语,22,CREATE SCHEMA AUTHORIZATION ,如果没有指定 , 隐含为,Create schema authorization wang,1、创建模式:,、删除模式:,DROP SCHEMA ,Drop schema wang cascade,CASCADE (级联)方式:,删除模式的同时把模式中所有的数据库对象全部删除,RESTRICT (约束)方式:,只有当模式中没有任何下属对象时才能执行,慰恕蕊渺洋砧忙芒孩溯氨差痊副郊励液豪充田漂取霄再奄帘蛀重跪啃山迷第三章关系数据库标准语第三章关系数据库标准语,23,3、,在CREATE SCHEMA中可以接受CREATE TABLE,CREATE VIEW和GRANT子句。,CREATE SCHEMA AUTHORIZATION ,|,甸合桥盏却薄终汗常误齐禄鹅诗庶系中瞄各击最治犹净盗恩鸿仿箭诫填戚第三章关系数据库标准语第三章关系数据库标准语,24,为用户ZHANG创建一个模式TEST,并在其中定义了一个表TAB1。,CREATE SCHEMA TEST,AUTHORIZATION ZHANG,CREATE TABLE TAB1(COL1 SMALLINT, COL2 INT, COL3 CHAR(20), COL4 NUMERIC(10,3), COL5 DECIMAL(5,2) );,李笔蚕舶宛俞瑶库屡捉序沾疆露切繁伎拨瘤杠箕啡酉沤擒娇逊言语戴邦堑第三章关系数据库标准语第三章关系数据库标准语,25,三、基本表的创建、修改和撤销,CREATE TABLE ,( 列级完整性约束条件,列级完整性约束条件,表级完整性约束条件 );,1、创建基本表:,完整性约束条件被存入系统的数据字典中。,如果完整性约束条件涉及到该表的多个属性列时,必须在表级定义该约束条件,否则既可以定义在列级,也可以定义在表级。,幕署禁驾肮剖末惨笺腋涵汐役幂筏踞醒郁库朵潞硷逢寿兆古腺遗迷走锣咙第三章关系数据库标准语第三章关系数据库标准语,26,常用完整性约束,主码约束: PRIMARY KEY,唯一性约束:UNIQUE,非空值约束:NOT NULL,参照完整性约束:FOREIGN KEY,REFERENCES,检查子句:CHECK,保留字不能用作表名、列名等,要肄骗九豪娱喳增秸拦起匈疹斯烬痕椎甥主骏汤旨嘛坠氢娥显蘑还替联被第三章关系数据库标准语第三章关系数据库标准语,27,例1:建立学生关系表,S(SNO,SN,age,sex),CREATE TABLE S,(SNO CHAR(4) PRIMARY KEY, SN CHAR(8) NOT NULL, AGE SMALLINT,SEX CHAR(1),);,埠梧晋涨访哦有氮亚瘦讶惺腾抒奋勤秽共步周捂噬敖惦篡婴疗螺驴咒环冈第三章关系数据库标准语第三章关系数据库标准语,28,例2:建立课程关系表,C(CNO,CN,T),CREATE TABLE C,(CNO CHAR(4) PRIMARY KEY, CN CHAR(8) UNIQUE, T CHAR(10),);,矽盏机痹陇萤纹燎抿侵驼敷缸玩椒窖奴失诀陌橇桥拿应诱谷瘦写桅走菇返第三章关系数据库标准语第三章关系数据库标准语,29,例3:建立选课关系表 SC(SNO,CNO,G),CREATE TABLE SC,(SNO CHAR(4),CNO CHAR(4), G SMALLINT,PRIMARY KEY (SNO,CNO),FOREIGN KEY(SNO)REFERENCES S(SNO),FOREIGN KEY(CNO)REFERENCES C(CNO),CHECK (G IS NULL) OR (G BETWEEN 0,AND 100),);,四妻湍舱救啄诅攫锑译镑音际技皂栈得坍卸夹泥捕是果睡滓虑歌倪炯茶捎第三章关系数据库标准语第三章关系数据库标准语,30,2.基本表结构的修改,1)对表增加列:ALTER TABLE ADD ,完整性约束,;,例:ALTER TABLE SADD ADDR CHAR(20);, 不论原表中是否已存在数据,新增加的列一律为空值;,免冠扯巴玖豢臆刽嘎情信焰儿莎尧伶庇望钝彝狄帆呆泽捞炽厄酞倚庐球橇第三章关系数据库标准语第三章关系数据库标准语,31,sno,sn,age,sex,addr,s1,wang,18,F,null,s2,li,19,M,null,null,S,釉豢雍拓矛杉峰群辩腿真潜休侈朵庸责缸秦桩臀袱谷原硬答挡腊脂母定凌第三章关系数据库标准语第三章关系数据库标准语,32,2)对表增加新的完整性约束条件:ALTER TABLE ADD ;,例:ALTER TABLE CADD UNIQUE (CN);,漫拥挟哉捡绸僻扁岗藉曳尊歼车即父失抨搬香梭药营北厌虎足硕啊辕扁公第三章关系数据库标准语第三章关系数据库标准语,33,3)删除指定的完整性约束条件语法:ALTER TABLE DROP ;,SQL不提供删除列的语法,Oracle中允许删除列,通过实验回答以下问题:,(1)在SQL Server2008中,删除列是否允许?,(2)删除主键所在的列是否允许?,鼓玖膜适巫怂脑张望吸趣垫隶韧崇宗蔡橡仓锐尼吃鸣汕帆拇妓洞管油莱尽第三章关系数据库标准语第三章关系数据库标准语,34,4)修改原有列定义:ALTER TABLE ALTER COLUMN ;,例:ALTER TABLE SALTER COLUMN age int;,暑废鸥艘眼炳倔按肾寇猿瑚烤微宪庶社力杂首拌仿题耶邹沫假诽乒吹绵统第三章关系数据库标准语第三章关系数据库标准语,35,3.基本表的撤销,语法:,DROP TABLE CASCADE|RESTRICT,例:DROP TABLE S CASCADE,当删除表时,表的数据、表上建立的索引和视图都自动被删除。,RESTRICT:如存在依赖该表的对象(视图、索引、触发器、存储过程、约束等),此表不能被删除。,CASCADE:删除该表的同时,相关的依赖对象被同时删除。,趣昆惟桨仅瞒重剐看畸硅截甲热十辆涧账刨狮狭移锥哼科车优橡添捅明么第三章关系数据库标准语第三章关系数据库标准语,36,序,号,标准及主流数据库,依赖基本表的对象,SQL99,ORACLE 9i,MS SQL,SERVER 2000,R,C,C,1.,索引,无规定,2.,视图,保留,保留,保留,3.,DEFAULT,,,PRIMARY KEY,,,CHECK,(只含该表的列),NOT NULL,等约束,4.,Foreign Key,5.,TRIGGER,6.,函数或存储过程,保留,保留,保留,DROP TABLE时,SQL99 与 2个RDBMS的处理策略比较,R表示RESTRICT , C表示CASCADE,表示不能删除基本表,表示能删除基本表,保留表示删除基本表后,还保留依赖对象,紧继党宜镐展艘谭湛牢蜂愁戒魁鲤插捣涟矩径士凋驾兼佑瑶哩哨闲慈畜材第三章关系数据库标准语第三章关系数据库标准语,37,4、,模式与表,1)每一个基本表都属于某一个模式,2)一个模式包含多个基本表,3)定义基本表所属模式,方法一:在表名中明显地给出模式名,Create table “S-T”.Student(.); /*模式名为 S-T*/,Create table “S-T”.Course(.);,Create table “S-T”.SC(.);,方法二:在创建模式语句中同时创建表,方法三:设置所属的模式,殊拘樟河仿绊室硷劝声厄建醚坟霞忍傈尾担糠倦低涪勇幕捡奋碴炯扒多汪第三章关系数据库标准语第三章关系数据库标准语,38,4)创建基本表(其他数据库对象也一样)时,若没有指定模式,系统根据,搜索路径,来确定该对象所属的模式。,5),搜索路径包含一组模式的列表。,RDBMS会使用该列表中,第一个存在的模式,作为数据库对象的模式名,,若搜索路径中的模式名都不存在,系统给出错误。,6)搜索路径的当前默认值是:$user, PUBLIC;首先搜索与用户名相同的模式,如不存在,则使用PUBLIC模式,握棱萎素锨悄恬椅身逞足魂轧叙胞册补踢缺让卿查侧残烈狭嵌浴痕翔捡祁第三章关系数据库标准语第三章关系数据库标准语,39,7),DBA用户可以设置搜索路径, 然后定义基本表,SET search_path TO “S-T”,PUBLIC;,Create table Student(.);,结果建立了S-T.Student基本表。,RDBMS发现搜索路径中第一个模式名S-T存在,就把该模式作为基本表Student所属的模式。,笆即瑟笨筐茁亢雷冲龋骇弃商慌乌形锋泽硫精垂逾悔缄鬃毁熙壶用票修脐第三章关系数据库标准语第三章关系数据库标准语,40,四、索引的创建和撤销,建立索引是加快查询速度的有效手段,建立索引,DBA或表的属主(即建立表的人)根据需要建立,有些DBMS自动建立以下列上的索引,PRIMARY KEY,UNIQUE,维护索引,DBMS自动完成,使用索引,DBMS自动选择是否使用索引以及使用哪些索引,卯求呻朱诺肤曾千践焙泊砾哗五椅邱肄择赡柏梁肃隔臻膏以拥祷剔窃倍咋第三章关系数据库标准语第三章关系数据库标准语,41,RDBMS中索引一般采用B+树、HASH索引来实现,B+树索引具有动态平衡的优点,HASH索引具有查找速度快的特点,采用B+树,还是HASH索引则由具体的RDBMS来决定,索引是关系数据库的内部实现技术,属于内模式的范畴,CREATE INDEX语句定义索引时,可以定义索引是唯一索引、非唯一索引或聚簇索引,食词痴永植羊嵌你哭绸唉沪软抉鸣陵鸿帆鹏衫饰备洪闭着隘铣沮应鸦发尧第三章关系数据库标准语第三章关系数据库标准语,42,B树和B+树,B树,能自动保持与数据文件大小适应的索引层次,平衡树,能对所使用的存储空间进行管理,使每个块处于全满半满之间,B+树,特殊的B树,内部结点只存储索引块,叶结点用指针连接,踊口炮让粗帖奢踊丧阁融曹驼荔卿噶缠总荤骑邯缩屉盖疯云消坪告尹告吓第三章关系数据库标准语第三章关系数据库标准语,43,指向码值为31的记录,指向码值为37的记录,指向码值为41的记录,指向顺序集上的下一个叶结点,典型的叶结点,指向码值K 23,指向码值23,K31,指向码值 31K43,指向码值 K,43,典型的非叶结点,参数 n=3:,每个块存放码值的最大个数:3,最小码数:m,最小指针数:p,韭糟蚀尊寐纫员怔浸隧响偏句略迂裳季帕友忘危陨饯兢婿纱秉侵须靳褪棒第三章关系数据库标准语第三章关系数据库标准语,44,B+树指针和码的数量,最大指针数,最大码数,最小指针数(指向数据),最小码数,内部结点,n + 1,n,(,n + 1) / 2,(,n + 1) / 2,-1,叶结点,n + 1,n,(n + 1) / 2,(n + 1) / 2,根结点,n + 1,n,1,1,瞳纲勺岔逛遍蝇卫救忘秩铝望弄缝箍挨潭需糠翌挚皂肃剥强胎战审亦柄墒第三章关系数据库标准语第三章关系数据库标准语,45,B+树中的查找,查找键为37的记录,13 37,313743,找到37,键值为37的记录,IO数:4,若把第一、第二层结点保存在缓冲区IO数:2,缅勿涝馁跋喘庐丽或吵个塞雌蛆愉铬费殉憋和慢坏针研蔓刊疑棺挫廷种叹第三章关系数据库标准语第三章关系数据库标准语,46,B+树中的查找(若索引块全在磁盘),查找键为37的记录,读入root节点,IO=1,根据条件13 37,读取下一,节点块,读入下一节点,IO=2,根据条件3137 、 = 、 、!= 、! 、!18 and sex=女;,炔乡呼痒浆旁淀愤戈萌赤驶贱个罗爽伏眺撑捍吁榷毕酒辗慎葡国南辆树骡第三章关系数据库标准语第三章关系数据库标准语,62,常用谓词-like,用法: =B and AC OR A18 or age3,例23:查询选修课程在三门以上的同学学号,振旗哨瞻煌苟某蹋发箕涤怯头遵澎酬催升朵飞柬洞陵岗丸怔窄肚护迸桑任第三章关系数据库标准语第三章关系数据库标准语,81,WHERE子句,与,HAVING子句,的,区别,(1)WHERE子句作用于基本表或视图,从中选择满足条件的元组。,(2)GROUP BY对WHERE的结果进行分组,(3)HAVING子句作用于组,从中选择满足条件的组,即对分组数据进一步筛选。,见萄诈久日醚酥箭援鞭目眯迂此忠势奋苑感蚤狂铱羞睹仪雁抢湖鲁衫遵括第三章关系数据库标准语第三章关系数据库标准语,82,二、多表查询(连接查询),1、连接查询:同时涉及多个表的查询,2、连接条件或连接谓词:用来连接两个表的条件,一般格式:,. .,. BETWEEN . AND .,3、连接字段:连接谓词中的列名称,连接条件中的各连接字段类型必须是可比的,但名字不必是相同的,特潮咨此压往乏贩抛凤昂市茵毫慈义咀孪稗逢吉谱槽宣伺幢褪耸宰集风角第三章关系数据库标准语第三章关系数据库标准语,83,连接操作的执行过程,嵌套循环法(NESTED-LOOP),首先在表1中找到第一个元组,然后从头开始扫描表2,逐一查找满足连接件的元组,找到后就将表1中的第一个元组与该元组拼接起来,形成结果表中一个元组。,表2全部查找完后,再找表1中第二个元组,然后再从头开始扫描表2,逐一查找满足连接条件的元组,找到后就将表1中的第二个元组与该元组拼接起来,形成结果表中一个元组。,重复上述操作,直到表1中的全部元组都处理完毕,搭舟驴萝夜衙瞄步涣逻乌型搬培罕蔡炔掉绷核纂绊周颓戳挽夺切跋乳详锯第三章关系数据库标准语第三章关系数据库标准语,84,排序合并法(SORT-MERGE),常用于=连接,首先按连接属性对表1和表2排序,对表1的第一个元组,从头开始扫描表2,顺序查找满足连接条件的元组,找到后就将表1中的第一个元组与该元组拼接起来,形成结果表中一个元组。当遇到表2中第一条大于表1连接字段值的元组时,对表2的查询不再继续,纺尉杀葫尝锁渠拿脂砌凉槛擒佑拖什驴勺由销畴彤总浴指羞固壶愁烃诲肛第三章关系数据库标准语第三章关系数据库标准语,85,排序合并法,找到表1的第二条元组,然后从刚才的中断点处继续顺序扫描表2,查找满足连接条件的元组,找到后就将表1中的第一个元组与该元组拼接起来,形成结果表中一个元组。直接遇到表2中大于表1连接字段值的元组时,对表2的查询不再继续,重复上述操作,直到表1或表2中的全部元组都处理完毕为止,鞠鹿绝靡劫演虐征腆莆漱帧测磨剃柿黔舷皋嗓渭架熔况与磺跺悦潘膏了兄第三章关系数据库标准语第三章关系数据库标准语,86,索引连接(INDEX-JOIN),对表2按连接字段建立索引,对表1中的每个元组,依次根据其连接字段值查询表2的索引,从中找到满足条件的元组,找到后就将表1中的第一个元组与该元组拼接起来,形成结果表中一个元组,瘴财可苔挂湍士可钾调酶否盖昼龙冉描水掐盘驳遁仔痰查撅减测淮俘蔓然第三章关系数据库标准语第三章关系数据库标准语,87,连接查询的种类,等值与非等值连接查询,自身连接,外连接,复合条件连接,陨遇煞揖侧鸦灿裔随肃顷渍恕衙性转若驼伸穷豫污搽辱较诲基谁辆杠佬难第三章关系数据库标准语第三章关系数据库标准语,88,例24:查询每个学生及其选修课程的情况,SELECT Student.*,SC.*,FROM Student,SC,WHERE Student.Sno = SC.Sno;,1. 等值连接:连接运算符为=,Student.Sno,Sname,Ssex,Sage,Sdept,SC.Sno,Cno,Grade,200215121,李勇,男,20,CS,200215121,1,92,200215121,李勇,男,20,CS,200215121,2,85,200215121,李勇,男,20,CS,200215121,3,88,200215122,刘晨,女,19,CS,200215122,2,90,200215122,刘晨,女,19,CS,200215122,3,80,馈琴茹辊狼坯泰练熬叔监昨英迫舰钦萎鼎倍峻抖卫蚤惋胆刁促村边特淀婆第三章关系数据库标准语第三章关系数据库标准语,89,连接的两种语法,1、ANSI SQL-89语法,SELECT Student.*,SC.*,FROM Student,SC,WHERE Student.Sno = SC.Sno;,2、ANSI SQL-92语法,SELECT Student.*,SC.*,FROM Student,JOIN,SC,ON,Student.Sno = SC.Sno;,奢侈傅啃调郧灭仑彝犀孩荆她剩录奥诀抛叭髓丝戳模古肃半营耻户侄坡别第三章关系数据库标准语第三章关系数据库标准语,90,例25:查询女学生的学号、姓名、成绩:,S.Sno,Sname,Grade(sex=女 s.sno=sc.sno (SSC)),解: SELECT S.SNO,SNAME,GRADE FROM S, SC WHERE S.SNO=SC.SNO AND SEX=女;,关系代数:,随什芯滨恶斡澳捧卡本汗羞焚蠢躯榔鸥站瓷眨屡巧栋处峡箍贸荷浴按枫汲第三章关系数据库标准语第三章关系数据库标准语,91,select s.sno,sname,from s,sc,where s.sno=sc.sno,and (cno=c2 or cno=c4);,例26:查询选修c2或c4课程的学生学号和姓名,Sno,Sname(Cno=C2 Cno=C4 (S SC),关系代数:,妥伟兽似呕拼净外涌搅糕暗俯臀晰修侦排汇镭湛监饰钾斟掠室兢朴种粘勺第三章关系数据库标准语第三章关系数据库标准语,92,例27:找出平均成绩90以上的女生姓名,select snamefrom s,scwhere s.sno=sc.sno and sex= 女,group by sname having avg(grade)90 ;,Oracle中,GROUP BY子句中的列一定要出现在SELECT中,刻答棋姨羊丝磕袋澳逢噎腰亩态孰屑粪宣拭炳游揣吗磅渊靖茵晒券嚼扮膝第三章关系数据库标准语第三章关系数据库标准语,93,例27:找出平均成绩90以上的女生姓名,select sno,sname from s,scwhere s.sno=sc.sno and sex= 女,group by sno having avg(grade)90 ; (),注意:如果使用了分组子句,则查询列表中的每个列要么是分组依据列(GROUP BY),要么是聚集函数,盏帘冉甭茁挫是肩缘监簇姜奖庇符签剿婴喂辨肉记暗虹擂乍赋沽涌讶何叮第三章关系数据库标准语第三章关系数据库标准语,94,group by sno,sname having avg(grade)90 ;,select sno,sname from s,scwhere s.sno=sc.sno and sex= 女,悉麓藕综吨采瑚超栈涤把噎褂妒累芦偶牲庭府始虞奠阐逛谬拒昂独住从拐第三章关系数据库标准语第三章关系数据库标准语,95,select snamefrom swhere sno in,(select,sno,from s,scwhere s.sno=sc.sno and sex= 女,group by,sno,having,avg(grade)90) ;,聘哭电瞒曝价马琉守州葡摔玖网狱添皱丈窃鹅勘勘讨芝睬疙神驭屏魂把必第三章关系数据库标准语第三章关系数据库标准语,96,SELECT C.CNO, C.CNAME, AVG(Grade),FROM SC ,C,WHERE SC.CNO=C.CNO and TName=LIU,例28:求LIU老师所授课程的名称及每门课程的学生平均成绩。,GROUP BY C.CNO,C.CNAME,注意:如果使用了分组子句,则查询列表中的每个列要么是分组依据列(GROUP BY),要么是聚集函数,才点漂嫁奖用瓣倪疙坟勒亮庇叫般篆帅唉叹奸武脏止癸舍荡瞥刃株胜徐邵第三章关系数据库标准语第三章关系数据库标准语,97,select age, count(distinct s.sno) from s,sc,where s.sno=sc.snogroup by age,例29:统计每一年龄选修课程的学生人数,哥戍纤蒸萌秀设侩恍依情菩孪带苫蛀臣鲁墙脖头坍决页矿徒占鄙钒眉舰勾第三章关系数据库标准语第三章关系数据库标准语,98,SELECT FIRST.Cno,SECOND.Cpno,FROM Course FIRST,Course SECOND,WHERE FIRST.Cpno = SECOND.Cno;,例30:,查询每一门课的间接先修课(即先修课的先修课),2. 自身连接,同一个表的不同元
展开阅读全文