第三章关系数据库标准语.ppt
第三章第三章 关系数据库标准关系数据库标准语言语言SQLSQL抓氯普拆怀臃蕊籍汾绥驻踪夹擞窝隋募壁颇滴鹏慎钒墙也砚糯嚣差厂已酬第三章关系数据库标准语第三章关系数据库标准语1教学内容:SQL语言概述;数据定义DDL,数据查询QL,数据更新DML和数据控制语言DCL的功能;视图定义和使用;要求掌握:1、DDL,DML,DCL的语法结构;2、会用SQL语言表达各种查询处理要求;3、会使用视图教学重点及难点:数据查询,子查询寞涂锈琼鲁俯卡怜耘手恕芳茅棋户娶序昆凉冒洽嘎走劈岿锻蜒诚稚彦凋牌第三章关系数据库标准语第三章关系数据库标准语2第三章第三章关系数据库标准语言关系数据库标准语言SQL第一节SQL概述第二节数据定义第三节数据查询第四节数据更新第五节视图拼灰势梯孕总项茧抛嚼辕芳西病凌辨庙详馈箭寡瓶湃坍丹氛某们炳午戒府第三章关系数据库标准语第三章关系数据库标准语3第一节SQL概述1、什么是SQL语言SQL语言是结构化查询语言,StructuredQueryLanguage,简称SQL。它是介于关系代数和关系演算之间的语言。涣撑蓑掂窑喜夏风助苞禁磊妥碘烽业骨甸穗擦紊锚尧烧疆磷母忱胀色退锚第三章关系数据库标准语第三章关系数据库标准语4SQL起源19741974年,年,IBMIBM的的Ray BoyceRay Boyce和和Don ChamberlinDon Chamberlin将将CoddCodd关系数据库的关系数据库的1212条准则的数学定义以简单的条准则的数学定义以简单的关键字语法表现出来,里程碑式地提出了关键字语法表现出来,里程碑式地提出了SQL(Structured Query Language)SQL(Structured Query Language)语言。语言。19761976年年IBM E.F.CoddIBM E.F.Codd发表了一篇里程碑的论文发表了一篇里程碑的论文“R“R系统系统:数据库关系理论数据库关系理论”,介绍了关系数据库理论,介绍了关系数据库理论和查询语言和查询语言SQLSQL。19771977年年OracleOracle开发了第一个商用开发了第一个商用SQLSQL关系数据库管关系数据库管理系统理系统垫虑擞凹掌坏画烃惋眯瑰钞淆矫它甥呕尿涅字峭耿赎炭圣炙鱼势士肉忿赛第三章关系数据库标准语第三章关系数据库标准语5(1)1974年,IBM的Boyce和Chamberlin为关系数据库原型系统System-R设计的一种查询语言;2 2、SQLSQL语言的发展语言的发展()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语言是关系数据库的标准语言纷峙浩舶余饿戮五罩茎己她诫汛爹强漳院补践不损脖臆眺侗呈霄育蔡岂苞第三章关系数据库标准语第三章关系数据库标准语63 3、SQLSQL的特点的特点(1 1)综合统一)综合统一集数据定义语言(集数据定义语言(DDLDDL),数据操纵语言),数据操纵语言(DMLDML),数据控制语言(),数据控制语言(DCLDCL)功能于一体。)功能于一体。可以独立完成数据库生命周期中的全部活动:可以独立完成数据库生命周期中的全部活动:定义关系模式,插入数据,建立数据库;定义关系模式,插入数据,建立数据库;对数据库中的数据进行查询和更新;对数据库中的数据进行查询和更新;数据库重构和维护数据库重构和维护 数据库安全性、完整性控制等数据库安全性、完整性控制等用户数据库投入运行后,可根据需要随时逐步用户数据库投入运行后,可根据需要随时逐步修改模式,不影响数据的运行。修改模式,不影响数据的运行。数据操作符统一数据操作符统一葱漏亨偶馒音雄腆剐右础茂徐纬咽酣屠摆林压闽隆任藤绚蒙上芦熬核岳拢第三章关系数据库标准语第三章关系数据库标准语7(2 2)高度非过程化)高度非过程化非关系数据模型的数据操纵语言非关系数据模型的数据操纵语言“面向过面向过程程”,必须制定存取路径,必须制定存取路径SQLSQL只要提出只要提出“做什么做什么”,无须了解存取路,无须了解存取路径。径。存取路径的选择以及存取路径的选择以及SQLSQL的操作过程由系的操作过程由系统自动完成。统自动完成。岁低泉吝售贝葡爬嘲届枕粮遇乾寄井律筋椒足穷微练蒲硒剧宗瞅紧倾木炯第三章关系数据库标准语第三章关系数据库标准语8(3 3)面向集合的操作方式面向集合的操作方式非关系数据模型采用面向记录的操作方式,非关系数据模型采用面向记录的操作方式,操作对象是一条记录操作对象是一条记录SQLSQL采用集合操作方式采用集合操作方式 操作对象、查找结果可以是元组的集合操作对象、查找结果可以是元组的集合 一次插入、删除、更新操作的对象可以是元组一次插入、删除、更新操作的对象可以是元组的集合的集合乎维朵醉顿脯采休建久壁鹅咎盟始够绿卧檬兢障婆龙絮躇救政恨旺毋冈肤第三章关系数据库标准语第三章关系数据库标准语9(4 4)以同一种语法结构提供多种使用方以同一种语法结构提供多种使用方式式SQLSQL是独立的语言是独立的语言 能够独立地用于联机交互的使用方式能够独立地用于联机交互的使用方式SQLSQL又是嵌入式语言又是嵌入式语言 SQL SQL能够嵌入到高级语言(例如能够嵌入到高级语言(例如C C,C+C+,JavaJava)程序中,供程序员设计程序时使用)程序中,供程序员设计程序时使用绝守烁饿炭烈遍酒寿句疹教藩幸兽信坚毙淮割纤僳奇塞敲臂肺钟谴孔鳞恭第三章关系数据库标准语第三章关系数据库标准语10(5 5)语言简洁,易学易用语言简洁,易学易用SQLSQL功能极强,完成核心功能只用了功能极强,完成核心功能只用了9 9个动词。个动词。磨噶婉词坑瘴淬蕴灭战瘸割拖渊休刊杠囱暮告嘿馆磐吏践池锁戮哑雀栅涉第三章关系数据库标准语第三章关系数据库标准语114 4、SQLSQL语言性质语言性质(1)SQL语言一种关系数据库语言(2)SQL语言一个应用程序开发语言,(3)SQL语言一个DBMS是提供数据的定义、查询、更新和控制等功能。不是只提供对数据库的操作能力,不能完成屏幕控制、菜单管理、报表生成等功能,可成为应用开发语言的一部分.它是DBMS为用户提供的交互语言。不是绸蜘肯梳呵驻丘辕沾玫先感取卡葛镜哄味搁沟何葬骆讥蝉琶眷愤商闷簇萌第三章关系数据库标准语第三章关系数据库标准语125 5、关系数据库的体系结构关系数据库的体系结构SQL语言支持关系数据库三级模式结构,但术语与传统的关系模型术语不同。在关系模型中模式内模式外模式在SQL中“基本表”“存储文件”“视图”或“基本表”辫向翅职只旨挠瘪死敖肌姨弄擎伙脆跋赦炙峙彰卡阳订儡剃潜搐跃键炒迎第三章关系数据库标准语第三章关系数据库标准语13SQL视图V1视图V2基本表1基本表2基本表3基本表4存储文件S1存储文件S2存储文件S4存储文件S3外模式模式内模式SQL对关系数据库模式的支持芳虎恿臃沮均乳冗中睫悼愁口限叠兼煤栽黔抚屯利寻镰宿白佣醉柑苫品茨第三章关系数据库标准语第三章关系数据库标准语146 6、SQLSQL语言的分类语言的分类SQL语言的命令通常分为四类1)数据定义语言()2)查询语言()3)数据操纵语言()4)数据控制语言()价铝咬岔脊赞袁状忿滞皱腋亥浆镊南兢蚀泰很谴慧剂支虑初卉雷未差贴寄第三章关系数据库标准语第三章关系数据库标准语151)数据定义语言()创建、修改或删除数据库中各种对象,包括SQL模式、基本表、视图、索引等。命令:SCHEMASCHEMATABLE TABLE VIEWVIEWINDEXINDEX(1 1)CREATE CREATE(2 2)DROPDROPSCHEMASCHEMATABLE TABLE VIEWVIEWINDEXINDEX()ALTERTABLE买闪徊羹骡壤采涤肾砰胚彪亥叭需绣淄诵谎猿绥讯蒜剧柄适峦赎扬撤蛾封第三章关系数据库标准语第三章关系数据库标准语162)查询语言()按照指定的组合、条件表达式或排序检索已存在的数据库中数据,不改变数据库中数据。命令:SELECTFROMWHERE稳或码莫靠予露狰澈施奄锋嫂料笆暂郁阴报揉誉狞洼从寒趟欢飘冈鼓舰躇第三章关系数据库标准语第三章关系数据库标准语173)数据操纵语言()对已经存在的数据库进行元组的插入、删除、修改等操作。命令:INSERT、UPDATE、DELETE4)数据控制语言()用来授予或收回访问数据库的某种特权、控制数据操纵事务的发生时间及效果、对数据库进行监视。命令:GRANT、REVOKE、COMMIT、ROLLBACK栏艺兢英庶奉扯褒嘱蛤烫具藉讼讯襟灾仆险贩恒辖卞猖殴朗隙国哟杠灸渡第三章关系数据库标准语第三章关系数据库标准语18第二节第二节 数据定义数据定义 SQLSQL的数据定义部分包括对的数据定义部分包括对SQLSQL模式、基本表、视图和索引的创建和模式、基本表、视图和索引的创建和撤销操作。撤销操作。删砸室钙妄恰衰少梳肿恤翅节侵皆郁帕叔幸舰并添傻吼欺诌磷如付乏周膊第三章关系数据库标准语第三章关系数据库标准语19一、一、SQL SQL提供的基本数据类型提供的基本数据类型数值型Integer(int):长整数。smallint:短整数。numeric(p,d):定点数,共p位(不包括小数点),右边d位。real:取决于机器精度的浮点数。doubleprecision:取决于机器精度的双精度浮点数。float(n):浮点数,精度至少为n位数字芋街哇韩傲畴须凑撕狂磁阂氧适吝滨漂卷倦扒苏连框芝鸵契坷窍软宛猪世第三章关系数据库标准语第三章关系数据库标准语20字符型char(n)固定长度为n的字符串。varchar(n)最大长度为n的可变长字符串。日期/时间型date:日期(年、月、日),格式YYYY-MM-DD。time:时间(小时、分、秒),格式HH:MM:SS。汲惯良孵狐对窄碟折迢喘姆乞吩悲麦营胁杉人竭热钉盼孰钥磋共塔粗侈耀第三章关系数据库标准语第三章关系数据库标准语21二、二、SQLSQL模式的创建和删除模式的创建和删除创建SQL模式即定义一命名空间,在这个空间中可以进一步定义该模式包含的数据库对象,例如基本表、视图、索引等。炽驴况袭绝澎坊铂藉颁堑蔓亡淖胶采找跳矽逻秧枷差迄锭痰闪润瓜任来楔第三章关系数据库标准语第三章关系数据库标准语22CREATESCHEMAAUTHORIZATION如果没有指定,隐含为Createschemaauthorizationwang1、创建模式:、删除模式:DROPSCHEMADropschemawangcascadeCASCADE(级联)方式:删除模式的同时把模式中所有的数据库对象全部删除RESTRICT(约束)方式:只有当模式中没有任何下属对象时才能执行慰恕蕊渺洋砧忙芒孩溯氨差痊副郊励液豪充田漂取霄再奄帘蛀重跪啃山迷第三章关系数据库标准语第三章关系数据库标准语233 3、在在CREATE SCHEMACREATE SCHEMA中可以接受中可以接受CREATE CREATE TABLETABLE,CREATE VIEWCREATE VIEW和和GRANTGRANT子句。子句。CREATE SCHEMA CREATE SCHEMA AUTHORIZATION AUTHORIZATION|甸合桥盏却薄终汗常误齐禄鹅诗庶系中瞄各击最治犹净盗恩鸿仿箭诫填戚第三章关系数据库标准语第三章关系数据库标准语24为用户ZHANG创建一个模式TEST,并在其中定义了一个表TAB1。CREATESCHEMATESTAUTHORIZATIONZHANGCREATETABLETAB1(COL1SMALLINT,COL2INT,COL3CHAR(20),COL4NUMERIC(10,3),COL5DECIMAL(5,2);李笔蚕舶宛俞瑶库屡捉序沾疆露切繁伎拨瘤杠箕啡酉沤擒娇逊言语戴邦堑第三章关系数据库标准语第三章关系数据库标准语25三、基本表的创建、修改和撤销三、基本表的创建、修改和撤销CREATETABLE(列级完整性约束条件,列级完整性约束条件,表级完整性约束条件);1、创建基本表:完整性约束条件被存入系统的数据字典中。如果完整性约束条件涉及到该表的多个属性列时,必须在表级定义该约束条件,否则既可以定义在列级,也可以定义在表级。幕署禁驾肮剖末惨笺腋涵汐役幂筏踞醒郁库朵潞硷逢寿兆古腺遗迷走锣咙第三章关系数据库标准语第三章关系数据库标准语26常用完整性约束主码约束:PRIMARYKEY唯一性约束:UNIQUE非空值约束:NOTNULL参照完整性约束:FOREIGNKEYREFERENCES检查子句:CHECK保留字不能用作表名、列名等要肄骗九豪娱喳增秸拦起匈疹斯烬痕椎甥主骏汤旨嘛坠氢娥显蘑还替联被第三章关系数据库标准语第三章关系数据库标准语27例1:建立学生关系表S(SNO,SN,age,sex)CREATETABLES(SNOCHAR(4)PRIMARYKEY,SNCHAR(8)NOTNULL,AGESMALLINT,SEXCHAR(1);埠梧晋涨访哦有氮亚瘦讶惺腾抒奋勤秽共步周捂噬敖惦篡婴疗螺驴咒环冈第三章关系数据库标准语第三章关系数据库标准语28例2:建立课程关系表C(CNO,CN,T)CREATETABLEC(CNOCHAR(4)PRIMARYKEY,CNCHAR(8)UNIQUE,TCHAR(10);矽盏机痹陇萤纹燎抿侵驼敷缸玩椒窖奴失诀陌橇桥拿应诱谷瘦写桅走菇返第三章关系数据库标准语第三章关系数据库标准语29例3:建立选课关系表SC(SNO,CNO,G)CREATETABLESC(SNOCHAR(4),CNOCHAR(4),GSMALLINT,PRIMARYKEY(SNO,CNO),FOREIGNKEY(SNO)REFERENCESS(SNO),FOREIGNKEY(CNO)REFERENCESC(CNO),CHECK(GISNULL)OR(GBETWEEN0AND100);四妻湍舱救啄诅攫锑译镑音际技皂栈得坍卸夹泥捕是果睡滓虑歌倪炯茶捎第三章关系数据库标准语第三章关系数据库标准语302.2.基本表结构的修改基本表结构的修改1)对表增加列:ALTERTABLEADD完整性约束,;例:ALTERTABLESADDADDRCHAR(20);不论原表中是否已存在数据,新增加的列一律为空值;免冠扯巴玖豢臆刽嘎情信焰儿莎尧伶庇望钝彝狄帆呆泽捞炽厄酞倚庐球橇第三章关系数据库标准语第三章关系数据库标准语31snosnagesexaddrs1wang18Fnulls2li19MnullnullS釉豢雍拓矛杉峰群辩腿真潜休侈朵庸责缸秦桩臀袱谷原硬答挡腊脂母定凌第三章关系数据库标准语第三章关系数据库标准语322)对表增加新的完整性约束条件:ALTERTABLEADD;例:ALTERTABLECADDUNIQUE(CN);漫拥挟哉捡绸僻扁岗藉曳尊歼车即父失抨搬香梭药营北厌虎足硕啊辕扁公第三章关系数据库标准语第三章关系数据库标准语333)删除指定的完整性约束条件语法:ALTERTABLEDROP;SQL不提供删除列的语法,Oracle中允许删除列通过实验回答以下问题:(1)在SQLServer2008中,删除列是否允许?(2)删除主键所在的列是否允许?鼓玖膜适巫怂脑张望吸趣垫隶韧崇宗蔡橡仓锐尼吃鸣汕帆拇妓洞管油莱尽第三章关系数据库标准语第三章关系数据库标准语344)修改原有列定义:ALTERTABLEALTERCOLUMN;例:ALTERTABLESALTERCOLUMNageint;暑废鸥艘眼炳倔按肾寇猿瑚烤微宪庶社力杂首拌仿题耶邹沫假诽乒吹绵统第三章关系数据库标准语第三章关系数据库标准语353.3.基本表的撤销基本表的撤销语法:DROPTABLECASCADE|RESTRICT例:DROPTABLESCASCADE当删除表时,表的数据、表上建立的索引和视图都自动被删除。RESTRICT:如存在依赖该表的对象(视图、索引、触发器、存储过程、约束等),此表不能被删除。CASCADE:删除该表的同时,相关的依赖对象被同时删除。趣昆惟桨仅瞒重剐看畸硅截甲热十辆涧账刨狮狭移锥哼科车优橡添捅明么第三章关系数据库标准语第三章关系数据库标准语36序序号号 标准及主流数据库标准及主流数据库依赖基本表的对象依赖基本表的对象SQL99SQL99ORACLE 9iORACLE 9iMS SQLMS SQLSERVER SERVER 20002000R RC CC C1.1.索引索引无规定无规定2.2.视图视图保留保留保留保留保留保留3.3.DEFAULTDEFAULT,PRIMARY KEYPRIMARY KEY,CHECKCHECK(只含(只含该表的列)该表的列)NOT NULL NOT NULL 等约束等约束4.4.Foreign KeyForeign Key5.5.TRIGGERTRIGGER6.6.函数或存储过程函数或存储过程保留保留保留保留保留保留DROPTABLE时,SQL99与2个RDBMS的处理策略比较R表示RESTRICT,C表示CASCADE表示不能删除基本表,表示能删除基本表,保留表示删除基本表后,还保留依赖对象紧继党宜镐展艘谭湛牢蜂愁戒魁鲤插捣涟矩径士凋驾兼佑瑶哩哨闲慈畜材第三章关系数据库标准语第三章关系数据库标准语374 4、模式与表模式与表1 1)每一个基本表都属于某一个模式)每一个基本表都属于某一个模式2 2)一个模式包含多个基本表)一个模式包含多个基本表3 3)定义基本表所属模式)定义基本表所属模式n方法一:在表名中明显地给出模式名方法一:在表名中明显地给出模式名 Create table“S-T”.StudentCreate table“S-T”.Student(.);/*;/*模模式名为式名为 S-T*/S-T*/Create table“S-T”.CourseCreate table“S-T”.Course(.);Create table“S-T”.SCCreate table“S-T”.SC(.);n方法二:在创建模式语句中同时创建表方法二:在创建模式语句中同时创建表 n方法三:设置所属的模式方法三:设置所属的模式 殊拘樟河仿绊室硷劝声厄建醚坟霞忍傈尾担糠倦低涪勇幕捡奋碴炯扒多汪第三章关系数据库标准语第三章关系数据库标准语384 4)创建基本表(其他数据库对象也一样)时,若没有)创建基本表(其他数据库对象也一样)时,若没有指定模式,系统根据指定模式,系统根据搜索路径搜索路径来确定该对象所属的来确定该对象所属的模式。模式。5 5)搜索路径包含一组模式的列表。搜索路径包含一组模式的列表。RDBMSRDBMS会使用该列会使用该列表中表中第一个存在的模式第一个存在的模式作为数据库对象的模式名,作为数据库对象的模式名,若搜索路径中的模式名都不存在,系统给出错误。若搜索路径中的模式名都不存在,系统给出错误。6 6)搜索路径的当前默认值是:)搜索路径的当前默认值是:$user$user,PUBLIC PUBLIC;首先;首先搜索与用户名相同的模式,如不存在,则使用搜索与用户名相同的模式,如不存在,则使用PUBLICPUBLIC模式模式握棱萎素锨悄恬椅身逞足魂轧叙胞册补踢缺让卿查侧残烈狭嵌浴痕翔捡祁第三章关系数据库标准语第三章关系数据库标准语397 7)DBADBA用户可以设置搜索路径,用户可以设置搜索路径,然后定义基本表然后定义基本表 SET search_path TO“S-T”SET search_path TO“S-T”,PUBLICPUBLIC;Create table Student Create table Student(.);结果建立了结果建立了S-T.StudentS-T.Student基本表。基本表。RDBMSRDBMS发现搜索路径中第一个模式名发现搜索路径中第一个模式名S-TS-T存在,就存在,就把该模式作为基本表把该模式作为基本表StudentStudent所属的模式。所属的模式。笆即瑟笨筐茁亢雷冲龋骇弃商慌乌形锋泽硫精垂逾悔缄鬃毁熙壶用票修脐第三章关系数据库标准语第三章关系数据库标准语40四、索引的创建和撤销四、索引的创建和撤销建立索引是加快查询速度的有效手段建立索引DBA或表的属主(即建立表的人)根据需要建立有些DBMS自动建立以下列上的索引PRIMARYKEYUNIQUE维护索引DBMS自动完成使用索引DBMS自动选择是否使用索引以及使用哪些索引卯求呻朱诺肤曾千践焙泊砾哗五椅邱肄择赡柏梁肃隔臻膏以拥祷剔窃倍咋第三章关系数据库标准语第三章关系数据库标准语41RDBMSRDBMS中索引一般采用中索引一般采用B+B+树、树、HASHHASH索引来实现索引来实现nB+B+树索引具有动态平衡的优点树索引具有动态平衡的优点 nHASHHASH索引具有查找速度快的特点索引具有查找速度快的特点采用采用B+B+树,还是树,还是HASHHASH索引则由具体的索引则由具体的RDBMSRDBMS来决定来决定索引是关系数据库的内部实现技术,属于内模式索引是关系数据库的内部实现技术,属于内模式的范畴的范畴 CREATE INDEXCREATE INDEX语句定义索引时,可以定义索引是语句定义索引时,可以定义索引是唯一索引、非唯一索引或聚簇索引唯一索引、非唯一索引或聚簇索引 食词痴永植羊嵌你哭绸唉沪软抉鸣陵鸿帆鹏衫饰备洪闭着隘铣沮应鸦发尧第三章关系数据库标准语第三章关系数据库标准语42B B树和树和B+B+树树B B树树能自动保持与数据文件大小适应的索引能自动保持与数据文件大小适应的索引层次层次平衡树平衡树能对所使用的存储空间进行管理,使每能对所使用的存储空间进行管理,使每个块处于全满半满之间个块处于全满半满之间B+B+树树特殊的特殊的B B树,内部结点只存储索引块树,内部结点只存储索引块叶结点用指针连接叶结点用指针连接踊口炮让粗帖奢踊丧阁融曹驼荔卿噶缠总荤骑邯缩屉盖疯云消坪告尹告吓第三章关系数据库标准语第三章关系数据库标准语43指向码值为指向码值为3131的记录的记录指向码值为指向码值为3737的记录的记录指向码值为指向码值为4141的记录的记录指向顺序集上的指向顺序集上的下一个叶结点下一个叶结点典型的叶结点典型的叶结点指向码值指向码值K 23K 23指向码值指向码值2323K31 K31 指向码值指向码值 31K43 31K43指向码值指向码值 K K4343典型的非叶结点典型的非叶结点参数n=3:每个块存放码值的最大个数:3最小码数:m最小指针数:p韭糟蚀尊寐纫员怔浸隧响偏句略迂裳季帕友忘危陨饯兢婿纱秉侵须靳褪棒第三章关系数据库标准语第三章关系数据库标准语44B+B+树指针和码的数量树指针和码的数量最大指针数最大指针数最大码数最大码数最小指针数最小指针数(指向数据指向数据)最小码数最小码数内部结点内部结点n+1n+1n n(n+1)/2n+1)/2 (n+1)/2n+1)/2 -1-1叶结点叶结点n+1n+1n n(n+1)/2(n+1)/2 (n+1)/2(n+1)/2 根结点根结点n+1n+1n n1 11 1瞳纲勺岔逛遍蝇卫救忘秩铝望弄缝箍挨潭需糠翌挚皂肃剥强胎战审亦柄墒第三章关系数据库标准语第三章关系数据库标准语45B+树中的查找查找键为37的记录1337313743找到37键值为37的记录IO数:4若把第一、第二层结点保存在缓冲区IO数:2缅勿涝馁跋喘庐丽或吵个塞雌蛆愉铬费殉憋和慢坏针研蔓刊疑棺挫廷种叹第三章关系数据库标准语第三章关系数据库标准语46B+树中的查找(若索引块全在磁盘)查找键为37的记录读入root节点,IO=1根据条件1337,读取下一节点块读入下一节点,IO=2根据条件313743,读取下一节点块读入下一节点,IO=3,找到键值37,读取记录指针,读取记录所在的块MainMemoryDisk读入数据块,IO=4,根据记录指针找到键值为37的记录坏争欢沂融潭扰本浓明讥辫还卜撤孽湖珍姻付锄乒烃皱紊敏畴锥繁嗓盾矫第三章关系数据库标准语第三章关系数据库标准语47 11、索引的创、索引的创建建语法:CREATEUNIQUECLUSTERINDEXON(ASC|DESC,ASC|DESC)衫狈版砾帐央沛颓洱牟嗓周妮叠咸瞥节豺毅瓮乎人苛忘员骏惕霖酒堂热堤第三章关系数据库标准语第三章关系数据库标准语48唯一索引唯一索引例例1:1:CREATE CREATE UNIQUE UNIQUE INDEX ST ON S(SNO)INDEX ST ON S(SNO)其中其中UNIQUEUNIQUE表示要求列表示要求列SNOSNO的值在基本表的值在基本表S S中不重复。中不重复。例例2:2:CREATE CREATE UNIQUEUNIQUE INDEX SC_INDDEX INDEX SC_INDDEX ON SC(SNO ASC,CNO DESC)ON SC(SNO ASC,CNO DESC)缺省时,表示升序。缺省时,表示升序。违秋逼堆扮芬哎酗响咬蘸拽孔竿裁递桑么烦咆剐丹帮瑞骸门惦澄惨潦封萝第三章关系数据库标准语第三章关系数据库标准语49 聚簇索引是指索引项的顺序与表中记录的物理顺序一聚簇索引是指索引项的顺序与表中记录的物理顺序一致的索引组织。致的索引组织。例例3 3:在:在StudentStudent表的表的SnameSname(姓名)列上建立一个聚簇索(姓名)列上建立一个聚簇索引引CREATE CLUSTER INDEX Stusname CREATE CLUSTER INDEX Stusname ON Student(Sname)ON Student(Sname);StudentStudent表中的记录将按照表中的记录将按照SnameSname值的升序存放值的升序存放聚簇索引聚簇索引仍育瀑守夯讶碟舱茁攻溢蔑铡缔惟涝毖浪折晦锦瘩诌惊麦蚂虑务宝闭窿巡第三章关系数据库标准语第三章关系数据库标准语50SQL ServerSQL Server中的聚簇索引中的聚簇索引 一种特殊的平衡一种特殊的平衡树,与前面的平衡树,与前面的平衡树相比,差别在于树相比,差别在于索引的叶子级。在索引的叶子级。在聚集索引中,聚集索引中,叶子叶子级并不包括索引键级并不包括索引键和指针;它们就是和指针;它们就是数据本身数据本身。这个差。这个差异意味着数据并不异意味着数据并不存储在堆结构中。存储在堆结构中。它们存储在索引的它们存储在索引的叶子级,并按索引叶子级,并按索引键进行排序。键进行排序。毙遁疽荡拘轧否盛迪喇酱图谬爪徊妓爽孰拎浪篓垢赘停陶笨股骂误杜脓员第三章关系数据库标准语第三章关系数据库标准语51建立建立聚集索引的好处聚集索引的好处聚集索引对于那些经常要搜索范围值的列特别聚集索引对于那些经常要搜索范围值的列特别有效。使用聚集索引找到包含第一个值的行后,有效。使用聚集索引找到包含第一个值的行后,便可以确保包含后续索引值的行在物理相邻。便可以确保包含后续索引值的行在物理相邻。如果对从表中检索的数据进行排序时经常要用如果对从表中检索的数据进行排序时经常要用到某一列,则可以将该表在该列上聚集(物理到某一列,则可以将该表在该列上聚集(物理排序),避免每次查询该列时都进行排序,从排序),避免每次查询该列时都进行排序,从而节省成本。而节省成本。挤从纽辅铰抛许领耗醉蜜峰蒋惋讹京痕独矽篆椰滚艰场腑腔沤走才访矫孕第三章关系数据库标准语第三章关系数据库标准语52在最经常查询的列上建立聚簇索引以提高在最经常查询的列上建立聚簇索引以提高查询效率查询效率 一个基本表上最多只能建立一个聚簇索引一个基本表上最多只能建立一个聚簇索引 经常更新的列不宜建立聚簇索引经常更新的列不宜建立聚簇索引 蝎受怯栓芬蒜缸柔罚慨昨饥随颖遭杆轻苍锚刷惹诚囚眯乏缸厚锦休震恃段第三章关系数据库标准语第三章关系数据库标准语5322、索引的撤、索引的撤销销语法:DROPINDEX例:DROPINDEXSC_INDDEX*删除索引时,系统会同时从数据字典中删除有关该索引的描述。*索引建立后由系统维护,不需用户干预。虞瞒蓑潘攻斟姥罕影驰惭米诽锰酌绎委棋宇互生朽雁恶涤率揭烂扼投卡吗第三章关系数据库标准语第三章关系数据库标准语54第三节第三节 数据查询数据查询SQL的查询语句基本语法结构:SELECT-FROM-WHERESELECTA1,A2,AnFROMR1,R2,RnWHERESELECT用于检索和统计数据订止找户窑撰隧挝卉绞陨枚未脾肠收名缅亡在呵平偶事倒真危真孺逆趾猪第三章关系数据库标准语第三章关系数据库标准语55 SELECT SELECT 语句完整的句法:语句完整的句法:SELECTDISTINCT列表达式,列表达式FROM表名或视图名,表名或视图名WHERE条件表达式(条件子句)GROUPBY列名1(分组子句)HAVING组条件表达式(组条件子句)ORDERBY列名2ASC|DESC.(排序子句)臼慑饥团蹄沸页颂糯语戴刑辫谍勘数羚摘戍豹脑挨焉忧饱哥慨怂砂苏予籽第三章关系数据库标准语第三章关系数据库标准语56 一、单表查询一、单表查询例1:查看学生全部信息1、选择表中若干列(SELECT)(1)查询指定列(或全部列)selectsno,sname,age,sexfroms;或:select*froms;泊搏贺胸蛾街澡荣渝樟瞩羌餐孪刮哥仆踪捐邓冠琴鞋膨弄税休漂汝彪稻洁第三章关系数据库标准语第三章关系数据库标准语57selectsno,snamefroms;例例2 2:查询全部学生的学号和姓名。:查询全部学生的学号和姓名。例3:查询全部学生的姓名和学号。selectsname,snofroms;谱叭淆公俏绰件鸣肇债笑憎灶弊塘鉴忽狈船痴艺评糯掩华矣敬倚施柠洲婪第三章关系数据库标准语第三章关系数据库标准语58selectsno,sname,fromS;若为新的属性取名,则可写为selectsno,sname,2011-agefromS例例4 4:查询学生学号、姓名和出生年份。:查询学生学号、姓名和出生年份。(2)查询经过计算的列2011-ageas出生年份侗称址鸯哪桓米库灼悔秒痞币牵拳鹊独仿词搔骇炳遮哀填仔倦文趣旧薯纺第三章关系数据库标准语第三章关系数据库标准语592、选择表中若干元组(WHERE)(1)取消值重复的行例5:查询选修了课程的学生学号sno9500195001950019500295002Selectdistinctsnofromsc;sno9500195002用DISTINCT取消重复的值Selectsnofromsc;桅朝溃怯隙饺握瞪男缄胆衙旗通车刻肄蛤尿梳顾萎亮圈喻辕萌贯稿琴幌琳第三章关系数据库标准语第三章关系数据库标准语60(2)查询满足条件的元组查询满足条件的元组是通过WHERE子句实现。在WHERE子句中常用的查询条件如表所示。查询条件查询条件谓词谓词比比较较=、=、=、!=、!、!18andsex=女;炔乡呼痒浆旁淀愤戈萌赤驶贱个罗爽伏眺撑捍吁榷毕酒辗慎葡国南辆树骡第三章关系数据库标准语第三章关系数据库标准语62常用谓词常用谓词-like-like用法:列名like/notlike字符串列必须为字符串;通配符:“_”可代表任一单个字符;“%”可代表任意多个字符例8:查询赵明同学的学号。selectsnofromswheresnamelike赵明;=?龟谁缆拎终叮摘契动佐熟伶浙赦仰绑砸瑟讯乘枣设扯薯砰伤等瞪晋枫替啸第三章关系数据库标准语第三章关系数据库标准语63通配符的使用:例9:查询所有姓赵的学生的学号和姓名。Selectsno,snameFromsWheresnamelike赵%例10:查询学号第二位是1的所有学生姓名。SelectsnameFromsWheresnolike_1%;橡子嘛氰茅咀董幢袁圃腆前懈河亥坑箱颜光肺遇课砍星妙菊嚷瞩诡蔚匹盟第三章关系数据库标准语第三章关系数据库标准语64例11:查询课程名为“DB_DE”的课程号。SelectcnoFromcWherecnamelikeDB_DE注意:上例中后面的_不具有通配符含义WherecnamelikeDB_DEESCAPE;问题:like何时可用代替?换码字符辽颈垂秋呕挪彩侯穷侄拌柒丸雷柱披刘腺挡会熟炕证舀冠甜侄酸疫亮摇迂第三章关系数据库标准语第三章关系数据库标准语65如果如果LIKE后面的匹配串中不含通配符,则后面的匹配串中不含通配符,则可用:可用:=取代取代LIKE!=或或取代取代NOTLIKE朝颧渭迭二淌肤津采嚏翅滑序友眠了苍呜拉椰了肝他芳棚躇危非椅呼磊孟第三章关系数据库标准语第三章关系数据库标准语66常用谓词常用谓词null用法:wheresnoisNULL/notNULLselectsnofromscwheregradeisnull;例12:查询选修了课程但没参加考试的学生的学号。贼绳繁帝漂淆轩冤瞩腾宵源恃款趟红欣战掂黎鳞眼畜普若驼诛幅浊结峡元第三章关系数据库标准语第三章关系数据库标准语67例13:查询所有有成绩的学生学号和课程号Selectsno,cnoFromscWheregradeisnotnull;赖守膘义驹蜒耕银府恐咱睹忻帚棵轨庚潞譬吗釜疼始淆段股腕踌步相询浸第三章关系数据库标准语第三章关系数据库标准语68含义:查找属性值在指定范围内的元组用法:ABetweenBandC等价于(A=BandACORAB)常用谓词between偶雌锰铲惨蚌夺摄憋锭赫托砍昔迸伪载胳岛涧题口康狠嘉黍晴宵咆盎吮脏第三章关系数据库标准语第三章关系数据库标准语69selectsno,snamefromswhereagebetween17and18例例1414:查询所有年龄在:查询所有年龄在1717到到1818岁之间的学岁之间的学生的学号和姓名。生的学号和姓名。whereage=17填纤荚盏吱身墨馅琉笔祟陨硒记怔责励险懒带赢纫坍慨悲五哎昔悦嗣褂箕第三章关系数据库标准语第三章关系数据库标准语70selectsno,snamefromswhereagenotbetween17and18例15:查询所有年龄不在17到18岁之间的学生的学号和姓名。whereage18orage17鹅孔降藩瞳朴钙腾虐倦凡崖遏圣舒肆役决晚许粥尊枚诵扫学断旋栅朗飘痢第三章关系数据库标准语第三章关系数据库标准语71用法:用来查找属性值属于指定集合的元组notinsnoin(95001,95002,95003)常用谓词in札段佰栈铭侗祷块诊革提妖洱间间撰啼田泰拧痔病盛香弊往川赖当剑嫉珠第三章关系数据库标准语第三章关系数据库标准语72例16:查询选修了课程号1或2的学生的学号SelectsnoFromscWherecnoin(1,2);例17:查询年龄不是17岁和18岁的学生的学号SelectsnoFromsWhereagenotin(17,18);wherecno=1orcno=2whereage!=17andage!=18唬坏觅精嗽卷杂萄屈碰殿擦舆腹茧唉武桔爸弥喘统幕友枪瞅热彝柱碱楷萧第三章关系数据库标准语第三章关系数据库标准语733、对查询结果排序(Orderby)selectsno,sname,2011-ageas出生年份fromSorderby出生年份,snodesc例18:查询学生学号、姓名和出生年份,并按出生年份的升序排列,出生年份相同时,按学号的降序排列注意:对于排序列含空值若按升序排列,含空值的元组将最后显示。若按降序排列,含空值的元组将最先显示。梅符毖居好雌丘瘟给移峭富矫紊褐恃既壹圭弛瘦化畅斜骨排鸯啤磅舌矽汇第三章关系数据库标准语第三章关系数据库标准语744 4、使用集合函数(、使用集合函数(5 5个)个)1)countcount(distinct):统计一列中值的个数,不计算空值Distinct:表示计算时要取消指定列中的重复值count(distinct*):计算元组的个数,不管列值是否为空偶背俯蘑名玄柴汹吴圣坍亮佯失惯服津史光夹桅哭润阔淬册骆放厌韭潦雾第三章关系数据库标准语第三章