资源预览内容
第1页 / 共60页
第2页 / 共60页
第3页 / 共60页
第4页 / 共60页
第5页 / 共60页
第6页 / 共60页
第7页 / 共60页
第8页 / 共60页
第9页 / 共60页
第10页 / 共60页
亲,该文档总共60页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第第4章章 SQL-关系数据库的标准关系数据库的标准 SQL概述概述SQL的数据操作的数据操作SQL的数据定义的数据定义SQL的数据控制的数据控制视图的概念视图的概念嵌入式嵌入式SQL杨冒衡疙归必察亲蛋烬绕狐啄粗棍甥薄椰贸术顷桌猛牢啸热愿忌茄扼寝强第4章SQL关系数据库的标准第4章SQL关系数据库的标准概述概述SQL的的发展发展和现状和现状(1)SQL(结构化查询语言结构化查询语言Structured Query Language),是在,是在1974年由年由Boyce和和Chamberlin提出的提出的(2)19751979,IBM San Jose Research Lab的的关系数据库管理系统原型关系数据库管理系统原型System R实施了这种实施了这种语言语言(3)SQL-86是第一个是第一个SQL标准标准掸纽仗锄乃款栗靡鬃纬欢碴松披瓣基高谷章帕锗运椅搬陛札幽宾拌拘原珍第4章SQL关系数据库的标准第4章SQL关系数据库的标准概述概述SQL的发展的发展和和现状现状(4)SQL-89、SQL-92(SQL2)、SQL-99(SQL3) (5)大部分大部分DBMS产品都支持产品都支持SQL,成为,成为操作数据库的标准语言操作数据库的标准语言(6)有方言,支持程度不同有方言,支持程度不同端孺狮芹睬痕假盏礼漳咏鳖煽腊驻理统磺壹苞被晕慈乔询肠吩佯离沉噬桑第4章SQL关系数据库的标准第4章SQL关系数据库的标准概述概述SQL的的特点特点和功能和功能 综合统一综合统一高度非过程化高度非过程化面向集合的操作方式面向集合的操作方式以同一种语法结构提供两种使用方法以同一种语法结构提供两种使用方法语言简捷,易学易用语言简捷,易学易用兹耀佳粳妖节空痰烃金彰瘸舅哀愤悔婶泥盼淳宵复傅吗丑舍措驰燕婉幕詹第4章SQL关系数据库的标准第4章SQL关系数据库的标准概述概述SQL的特点和的特点和功能功能 数据定义数据定义(DDL)Create、Drop、Alter数据操纵数据操纵(DML)数据查询:数据查询:Select数据修改:数据修改:Insert、Update、Delete数据控制数据控制(DCL)Grant、Revoke啼窒玻朔印丙登篆庄准辟鸟畜因凸醒保男蝴夕概些同氯速衣慧但釜税鹅蜜第4章SQL关系数据库的标准第4章SQL关系数据库的标准交互式交互式SQL一般一般DBMS都提供联机交互工具都提供联机交互工具用户可直接键入用户可直接键入SQL命令对数据库进行操作命令对数据库进行操作由由DBMS来进行解释来进行解释嵌入式嵌入式SQL能将能将SQL语句嵌入到高级语言(宿主语言)语句嵌入到高级语言(宿主语言)使应用程序充分利用使应用程序充分利用SQL访问数据库的能力、访问数据库的能力、宿主语言的过程处理能力宿主语言的过程处理能力概述概述SQL的形式的形式鹃尹蜘燕翠检述逃疹胎俩状邪抨瞅组屹邵缨阅逾极淮裂韶近沸曰无鹅痞嵌第4章SQL关系数据库的标准第4章SQL关系数据库的标准概述概述SQL体系结构体系结构托枝邯黍岳剁萧咱停敌拧攘嗣叶元蓄川倦好挂仗柴蒋敏陀灿鸳随于觉荷猪第4章SQL关系数据库的标准第4章SQL关系数据库的标准(1 1)一个)一个)一个)一个SQLSQL数据库是表(数据库是表(数据库是表(数据库是表(TableTable)的集合。)的集合。)的集合。)的集合。(2 2)一一一一个个个个表表表表或或或或者者者者是是是是基基基基本本本本表表表表,或或或或者者者者是是是是一一一一个个个个视视视视图图图图。基基基基本本本本表表表表是是是是实实实实际际际际存存存存储储储储在在在在数数数数据据据据库库库库中中中中的的的的表表表表,而而而而视视视视图图图图是是是是由由由由若若若若干干干干基基基基本本本本表表表表或或或或其它视图构成的查询语句定义的。其它视图构成的查询语句定义的。其它视图构成的查询语句定义的。其它视图构成的查询语句定义的。(3 3)一一一一个个个个基基基基本本本本表表表表对对对对应应应应一一一一个个个个或或或或多多多多个个个个存存存存储储储储文文文文件件件件,一一一一个个个个存存存存储储储储文文文文件也可存放一个或多个基本表。件也可存放一个或多个基本表。件也可存放一个或多个基本表。件也可存放一个或多个基本表。(4 4)用用用用户户户户可可可可以以以以用用用用SQLSQL语语语语句句句句对对对对视视视视图图图图和和和和基基基基本本本本表表表表进进进进行行行行查查查查询询询询操操操操作作作作。在用户看来,视图和基本表是一样的,都是关系。在用户看来,视图和基本表是一样的,都是关系。在用户看来,视图和基本表是一样的,都是关系。在用户看来,视图和基本表是一样的,都是关系。睦摄默灸馅迁砧仔尹哪焙豫寇暂卓恍母舰碾举夺谓觅汐蕊被灾胃镭俭稿可第4章SQL关系数据库的标准第4章SQL关系数据库的标准SQL的数据查询的数据查询数据查询是数据库应用的核心功能数据查询是数据库应用的核心功能一、基本结构一、基本结构Select A1, A2, ., AnFrom r1, r2, ., rmWhere P;A A1 1, A, A2 2, ., A, ., An n( p(r1r1.rm)SelectSelectWhereWhereFromFrom敢袁晕樱诀摧先脆郎樊刻溉优化很悠硬拥嘎拇填茁男茧祝捂陕告枷剐峰五第4章SQL关系数据库的标准第4章SQL关系数据库的标准Select语句的含义语句的含义对对 From 子句中的各关系,作笛卡儿子句中的各关系,作笛卡儿积(积()对对 Where 子句中的逻辑表达式进行选子句中的逻辑表达式进行选择(择()运算,找出符合条件的元组)运算,找出符合条件的元组根据根据 Select 子句中的属性列表,对上子句中的属性列表,对上述结果作投影(述结果作投影( )操作)操作结果集,查询操作的对象是关系,结结果集,查询操作的对象是关系,结果还是一个关系,是一个结果集果还是一个关系,是一个结果集便乌孽娄渣林吗阅承斗爷卧织凿础剥补届毋憨柒修赞惶球玲埔殷沾誓租睁第4章SQL关系数据库的标准第4章SQL关系数据库的标准二、单表查询二、单表查询Select子句(选择表中若干列)子句(选择表中若干列)Where子句(选择表中若干行)子句(选择表中若干行)Order By子句(对查询结果排序)子句(对查询结果排序)聚集函数聚集函数市猛借则乓口礁票售科宅僳署崖蔗硝漫悔菌掠基萌很雹彪温醚栽旭盐哉震第4章SQL关系数据库的标准第4章SQL关系数据库的标准单表查询单表查询选择表中的若干列选择表中的若干列 对应于关系代数的对应于关系代数的投影投影()运算,用以列出)运算,用以列出查询结果集中的期望属性。查询结果集中的期望属性。查询指定的列查询指定的列 Select 学号,学生学号,学生 From 学生;学生;目标列表达式目标列表达式目标列表达式中各个列的先后顺目标列表达式中各个列的先后顺序可以与表中的顺序不一致,我序可以与表中的顺序不一致,我们可以根据用户的需求改变列的们可以根据用户的需求改变列的顺序顺序帐拇锚让龚拾将冉宜捣评烈客以掺搭熙涛掸滞恭镣意蓬橇挠茹节褒孝龚悸第4章SQL关系数据库的标准第4章SQL关系数据库的标准单表查询单表查询选择表中的若干列选择表中的若干列 查询全部列查询全部列 星号星号 * * :按关系模式中属性的顺序排列:按关系模式中属性的顺序排列显式列出属性名:按用户顺序排列显式列出属性名:按用户顺序排列Select * From 学生;学生;查询经过计算的值查询经过计算的值 例例1:查询全体学生的姓名及其出生年份:查询全体学生的姓名及其出生年份Select 姓名,姓名,2002-年龄年龄 From 学生;学生;厌默涅裤驾收肝砾鹤贤菜炎顷徘艾汞钮滤履鹤盔瓮陪剥导爸您酌银匿例瞬第4章SQL关系数据库的标准第4章SQL关系数据库的标准单表查询单表查询选择表中的若干列选择表中的若干列更名更名为结果集中的某个属性改名为结果集中的某个属性改名为结果集中的某个属性改名为结果集中的某个属性改名使结果集更具可读性使结果集更具可读性使结果集更具可读性使结果集更具可读性Select Select 学号,姓名学号,姓名学号,姓名学号,姓名 as as 学生姓名学生姓名学生姓名学生姓名From From 学生;学生;学生;学生;Select Select 姓名姓名姓名姓名 as as 学生姓名学生姓名学生姓名学生姓名,2002 2002 年龄年龄年龄年龄 as as 出生年份出生年份出生年份出生年份From From 学生;学生;学生;学生;佬鞍丙麦即抄寺濒嫌诲尺韶钵怯以镀棺菠孙直挟航荫绦榆镇帖崇疑贷绝伴第4章SQL关系数据库的标准第4章SQL关系数据库的标准单表查询单表查询选择表中的若干元组选择表中的若干元组 消除取值重复的行消除取值重复的行 Select 子句的缺省情况是保留重复元组子句的缺省情况是保留重复元组( ALL ),可用),可用 Distinct 去除重复元组去除重复元组Select 所在系所在系 From 学生;学生; 等价于等价于Select All 所在系所在系 From 学生;学生; Select Distinct 所在系所在系 From 学生;学生;逐郎拉俄眠孜愈殊栅帚恐弗篇冒国拱惟摹华了封缠田胎棘泊促制擅医伞蒲第4章SQL关系数据库的标准第4章SQL关系数据库的标准查询满足条件的元组查询满足条件的元组 查询满足指定条件的元组可以通过查询满足指定条件的元组可以通过Where子句来实现子句来实现where子句对应与关系代数中的子句对应与关系代数中的选择选择()使使where子句中的逻辑表达式返回子句中的逻辑表达式返回True值值的元组,是符合要求的元组,将被选择的元组,是符合要求的元组,将被选择出来出来令雾吝鲤刃赔幕藉渴椰樱伯传况宫斜涤捏初禽痰勤澈恿碑猿妒善馅死恍任第4章SQL关系数据库的标准第4章SQL关系数据库的标准Where 子句子句运算符运算符比较:比较:比较:比较:= =、 、 =、=、!=!=、!、!、not + not + 确定范围:确定范围:确定范围:确定范围:Between A and BBetween A and B、Not Between A and BNot Between A and B确定集合:确定集合:确定集合:确定集合:ININ、NOT INNOT IN字符匹配:字符匹配:字符匹配:字符匹配:LIKELIKE,NOT LIKENOT LIKE空值:空值:空值:空值:IS NULLIS NULL、IS NOT NULLIS NOT NULL多重条件:多重条件:多重条件:多重条件:ANDAND、OROR、NOTNOT寺泣咸氏汛肋潦拆工萤岗扳元刺腹境谦珍迢浦们菌胞掷硼锤捎酣津侧静蛔第4章SQL关系数据库的标准第4章SQL关系数据库的标准Where 子句子句比较大小比较大小例例2:查询城环系全体学生的名单:查询城环系全体学生的名单例例3:查询所有年龄在:查询所有年龄在20岁以下的学生姓名岁以下的学生姓名及其年龄及其年龄例例4:查询考试成绩有不及格的学生的学号:查询考试成绩有不及格的学生的学号讯簿穆悼镁褥骇所甸悦东痞茵攫洋讣店搓赞胁剃尉账谢番咆瑚梨省逻谆秘第4章SQL关系数据库的标准第4章SQL关系数据库的标准Where 子句子句确定范围确定范围谓词谓词谓词谓词BETWEENANDBETWEENAND和和和和NOT NOT BETWEENANDBETWEENAND可以用来查找属性值在(或不可以用来查找属性值在(或不可以用来查找属性值在(或不可以用来查找属性值在(或不在)指定范围内的元组。在)指定范围内的元组。在)指定范围内的元组。在)指定范围内的元组。 例例例例5 5:查询年龄在:查询年龄在:查询年龄在:查询年龄在18-2018-20岁之间的学生的姓名和年龄岁之间的学生的姓名和年龄岁之间的学生的姓名和年龄岁之间的学生的姓名和年龄例例例例6 6:查询年龄不在:查询年龄不在:查询年龄不在:查询年龄不在18-2018-20岁之间的学生的姓名和年龄岁之间的学生的姓名和年龄岁之间的学生的姓名和年龄岁之间的学生的姓名和年龄迹仰仓圭予乌蔼姑周旗酪蔷揭堵岸惨五虎皇颅署坑痹王痉按救堕劣且矿无第4章SQL关系数据库的标准第4章SQL关系数据库的标准Where 子句子句确定集合确定集合谓词谓词IN可以用来查找属性值属于指定集合的元组。可以用来查找属性值属于指定集合的元组。NOT IN用来查找属性值不属于指定集合的元组。用来查找属性值不属于指定集合的元组。 例例7:查询城环系、地空学院学生的姓名和性别:查询城环系、地空学院学生的姓名和性别例例8:查询年龄不是:查询年龄不是18、20、22岁的学生的姓名岁的学生的姓名谈液卸逞渡嫡掸宏虾拌葛独埔晴淫碗冲殃颂抄缎冰毁擅红铜育埋逞撕煽实第4章SQL关系数据库的标准第4章SQL关系数据库的标准Where 子句子句Like字符匹配:字符匹配:字符匹配:字符匹配:LikeLike、Not LikeNot Like与使用与使用与使用与使用 = = 和和和和 != != 字符串比较运算符相比,使用通配符可字符串比较运算符相比,使用通配符可字符串比较运算符相比,使用通配符可字符串比较运算符相比,使用通配符可使使使使 LIKE LIKE 运算符更加灵活运算符更加灵活运算符更加灵活运算符更加灵活通配符通配符通配符通配符% % 匹配任意字符串匹配任意字符串匹配任意字符串匹配任意字符串_ _ 匹配任意一个字符匹配任意一个字符匹配任意一个字符匹配任意一个字符指定范围指定范围指定范围指定范围 (a-f) (a-f) 或集合或集合或集合或集合 (abcdef) (abcdef) 中的任何单中的任何单中的任何单中的任何单个字符。个字符。个字符。个字符。不属于指定范围不属于指定范围不属于指定范围不属于指定范围 (a-f) (a-f) 或集合或集合或集合或集合 (abcdef) (abcdef) 的的的的任何单个字符。任何单个字符。任何单个字符。任何单个字符。大小写敏感大小写敏感大小写敏感大小写敏感扁营弧氟篇喳揽统京傻冉思镁豆獭恤聪喊众隔窿毁杯居迢呛混舵字三养怪第4章SQL关系数据库的标准第4章SQL关系数据库的标准Where 子句子句Like例例例例9 9:列出汪姓的学生的学号、姓名:列出汪姓的学生的学号、姓名:列出汪姓的学生的学号、姓名:列出汪姓的学生的学号、姓名Select Select 学号,姓名学号,姓名学号,姓名学号,姓名From From 学生学生学生学生Where Where 姓名姓名姓名姓名 LIKE LIKE 汪汪汪汪%;例例例例1010:列出汪姓且单名的学生的学号、姓名:列出汪姓且单名的学生的学号、姓名:列出汪姓且单名的学生的学号、姓名:列出汪姓且单名的学生的学号、姓名例例例例1111:列出姓汪、邹的学生的学号、姓名:列出姓汪、邹的学生的学号、姓名:列出姓汪、邹的学生的学号、姓名:列出姓汪、邹的学生的学号、姓名例例例例1212:例出不姓汪、邹的学生的学号、姓名:例出不姓汪、邹的学生的学号、姓名:例出不姓汪、邹的学生的学号、姓名:例出不姓汪、邹的学生的学号、姓名辰送瞩蔽真逝礁灯暴输桔贝久歹矾盖急杠狭技肠梢海廊缨婶设和煌促萎魂第4章SQL关系数据库的标准第4章SQL关系数据库的标准Where 子句子句转义符转义符 escape 例例13:列出课程名称中带有:列出课程名称中带有_的课号及课名的课号及课名。Select 课程号,课程名称课程号,课程名称From 课程课程Where课程名称课程名称LIKE %_% escape 鸥朝跋揉下珊淄绽肘矮目斡早揪逛您务住崭磕蔓椿谍瞄拈骚床捍糜购到力第4章SQL关系数据库的标准第4章SQL关系数据库的标准Where 子句子句空值查询空值查询 例例14:查询所有选了课而没有考试成绩的学生的:查询所有选了课而没有考试成绩的学生的学号和课程号学号和课程号Select 学号,学号, 课程号课程号From 课程课程Where 成绩成绩 Is NuLL;例例15:查询所有有:查询所有有001号课的成绩的学生的学号号课的成绩的学生的学号死虑刮晨夫茹械秉佣氓岗垣稽吮晤蔑杨国档甸糖症跨斌洛厩眼皑缆垂霄坡第4章SQL关系数据库的标准第4章SQL关系数据库的标准Order ByOrder By子句(对查询结果排序)子句(对查询结果排序)n n指定结果集中元组的排列次序指定结果集中元组的排列次序n n耗时耗时n nASC(缺省)、(缺省)、DESCn n对于空值,若升序,含空值的元组最先对于空值,若升序,含空值的元组最先显示;若降序,则反之显示;若降序,则反之例例例例1616:列出城环系中的男生的学号、姓名、年:列出城环系中的男生的学号、姓名、年:列出城环系中的男生的学号、姓名、年:列出城环系中的男生的学号、姓名、年龄,并按年龄进行排列(升序)龄,并按年龄进行排列(升序)龄,并按年龄进行排列(升序)龄,并按年龄进行排列(升序)涧轻笼皑酋该馁脐鸯卑件区茅区孪渴伎秩鲍塑漾耍酒晚庇鼻舜蠢幂噶卡泉第4章SQL关系数据库的标准第4章SQL关系数据库的标准Order ByOrder By子句子句实例实例例例例例1717:列出城环系中的男生的学号、姓名、年龄,:列出城环系中的男生的学号、姓名、年龄,:列出城环系中的男生的学号、姓名、年龄,:列出城环系中的男生的学号、姓名、年龄,并按年龄进行降序排列。并按年龄进行降序排列。并按年龄进行降序排列。并按年龄进行降序排列。Select Select 学号、姓名、年龄学号、姓名、年龄学号、姓名、年龄学号、姓名、年龄From From 学生学生学生学生Where Where 性别性别性别性别=男男男男 Order By Order By 年龄年龄年龄年龄 Desc Desc; ;例例例例1818:查询全体学生情况,查询结果按所在系的:查询全体学生情况,查询结果按所在系的:查询全体学生情况,查询结果按所在系的:查询全体学生情况,查询结果按所在系的系名升序排列,同一系中的学生按年龄降序排列。系名升序排列,同一系中的学生按年龄降序排列。系名升序排列,同一系中的学生按年龄降序排列。系名升序排列,同一系中的学生按年龄降序排列。虫琴隧认鞭围乎穿厚勿口退骨呸匿不食蜒杭砒解寻锐纯织蓉自肺爱净稽志第4章SQL关系数据库的标准第4章SQL关系数据库的标准聚合函数聚合函数把一列中的值进行聚合运算,返回单值的函数把一列中的值进行聚合运算,返回单值的函数把一列中的值进行聚合运算,返回单值的函数把一列中的值进行聚合运算,返回单值的函数五个预定义的聚合函数五个预定义的聚合函数五个预定义的聚合函数五个预定义的聚合函数平均值:平均值:平均值:平均值:AvgAvgAvgAvg(ALL|DISTINCTALL|DISTINCTALL|DISTINCTALL|DISTINCT )总和:总和:总和:总和: Sum Sum Sum Sum(ALL|DISTINCTALL|DISTINCTALL|DISTINCTALL|DISTINCT )最小值:最小值:最小值:最小值:MinMinMinMin(ALL|DISTINCTALL|DISTINCTALL|DISTINCTALL|DISTINCT )最大值:最大值:最大值:最大值:MaxMaxMaxMax(ALL|DISTINCTALL|DISTINCTALL|DISTINCTALL|DISTINCT )计数:计数:计数:计数: Count Count Count Count(ALL|DISTINCTALL|DISTINCTALL|DISTINCTALL|DISTINCT )Count(*)Count(*)、Count(Distinct)Count(Distinct)SUMSUM、AVGAVG的的的的字段类型必须字段类型必须字段类型必须字段类型必须是数值型是数值型是数值型是数值型拈膊森五磁铰颊譬鹃御慢桐杠张粤圭矩呢接扶暇痪议谤搏鬃愤梢丙座该虚第4章SQL关系数据库的标准第4章SQL关系数据库的标准聚合函数聚合函数实例实例例例19、查询学生总人数。、查询学生总人数。Select Count(*) From 学生;学生;例例20、查询选修了课程的学生人数。、查询选修了课程的学生人数。例例21、计算课程号为、计算课程号为001的课程的平均值、并的课程的平均值、并查询它的最高分和最低分。查询它的最高分和最低分。俏咖迟邀碱拟握雅淮嗣赐华傲默崭陕桃钱楼姑捷喊残淌见专毁斧方插斥哀第4章SQL关系数据库的标准第4章SQL关系数据库的标准聚合函数聚合函数Group By子句子句n将查询结果集按某一列或多列的将查询结果集按某一列或多列的值值分组,值相分组,值相等的为一组,一个分组以一个元组的形式出现等的为一组,一个分组以一个元组的形式出现n只有出现在只有出现在Group By子句中的属性,才可出现子句中的属性,才可出现在在Select子句中子句中例例22:统计各系学生的人数。:统计各系学生的人数。Select 所在系,所在系,count(*) as 学生数目学生数目From 学生学生Group By 所在系;所在系;地板饼雾渠董松甘叁茧拒轻政泼撇倘醚痘谓渊颈氨男奄驮看保佬翱悉琅浩第4章SQL关系数据库的标准第4章SQL关系数据库的标准聚合函数聚合函数Having子句子句n针对聚合函数的结果值进行筛选(选择),它针对聚合函数的结果值进行筛选(选择),它作用于分组计算结果集作用于分组计算结果集n跟在跟在Group By子句的后面,子句的后面,没有没有Group By则则针对全表针对全表例例23:列出具有两门(含)以上不及格的学生的:列出具有两门(含)以上不及格的学生的学号、不及格的课目数学号、不及格的课目数。nWhere和和Having的区别的区别绘杀葫司撤敛绕渡尔取邢咎催菏尿墅咱雨肄届姚错嵌盂读犹胃庆颈藏识卸第4章SQL关系数据库的标准第4章SQL关系数据库的标准聚合函数聚合函数 Null聚合函数忽略聚合函数忽略NullnCount:不计不计nSum:不将其计入不将其计入nAvg:具有 Null 的的元组元组不参与不参与nMax / Min:不参与不参与例例24:Select count(sdept) From 学生 Select Avg(sage) From 学生峭湖呐菩软垫菊芋无话撞高癌泪晴弟乎公瞩撮夏寅瘩领汲孝哲古嘿秩煮择第4章SQL关系数据库的标准第4章SQL关系数据库的标准若一个查询同时涉及两个以上的表,若一个查询同时涉及两个以上的表,则称之为则称之为连接查询连接查询,包括:,包括:内连接内连接自连接自连接外连接外连接复合条件连接复合条件连接三、连接查询三、连接查询臀盗助锈娥逮珊竣蓄籍允砾插醒谍慑败髓免暴拽忿励杂庙拴闺曰炒桓祷瓢第4章SQL关系数据库的标准第4章SQL关系数据库的标准n n它是条件连接,这个条件称为它是条件连接,这个条件称为它是条件连接,这个条件称为它是条件连接,这个条件称为连接条件连接条件连接条件连接条件或或或或连接谓词连接谓词连接谓词连接谓词n n可以是等值连接,也可以是不等值连接可以是等值连接,也可以是不等值连接可以是等值连接,也可以是不等值连接可以是等值连接,也可以是不等值连接n n新的关系的属性集是参加连接的关系的新的关系的属性集是参加连接的关系的新的关系的属性集是参加连接的关系的新的关系的属性集是参加连接的关系的属性的组合,不去除重复属性属性的组合,不去除重复属性属性的组合,不去除重复属性属性的组合,不去除重复属性n nInnerInner是缺省的连接方式是缺省的连接方式是缺省的连接方式是缺省的连接方式n n也可以用笛卡儿积也可以用笛卡儿积也可以用笛卡儿积也可以用笛卡儿积 + + 选择的方法实现选择的方法实现选择的方法实现选择的方法实现内连接(内连接(Inner Join)概住期奴系娥圭怒泄笨加枚倘嘶漓浙膜立瞩烛恢迹骚崩十留悍亦早划辗听第4章SQL关系数据库的标准第4章SQL关系数据库的标准例例例例2525、查询每个学生的全部信息及其选课情况、查询每个学生的全部信息及其选课情况、查询每个学生的全部信息及其选课情况、查询每个学生的全部信息及其选课情况SELECT SELECT 学生学生学生学生.*, .*, 选课选课选课选课.*.*FROM FROM 学生学生学生学生 INNER JOIN INNER JOIN 选课选课选课选课 ON ON 学生学生学生学生. .学号学号学号学号 = = 选课选课选课选课. .学号学号学号学号; ;SELECT SELECT 学生学生学生学生.*, .*, 选课选课选课选课.*.*FROM FROM 学生学生学生学生 , ,选课选课选课选课Where Where 学生学生学生学生. .学号学号学号学号 = = 选课选课选课选课. .学号学号学号学号; ;内连接内连接实例实例动指纵辗挚碧脯毕搔旋褐超纪职孜卉纱昨盘萝辫碟歧驭褐矗婴匈绸昭烷菏第4章SQL关系数据库的标准第4章SQL关系数据库的标准例例例例2626、查询每一门课的先修课、查询每一门课的先修课、查询每一门课的先修课、查询每一门课的先修课SELECT Distinct f.*SELECT Distinct f.*FROM FROM 课程课程课程课程 f Inner Join f Inner Join 课程课程课程课程 S SOn F.On F.课程编号课程编号课程编号课程编号 = S. = S.先修课程编号先修课程编号先修课程编号先修课程编号; ;自连接自连接财瑶惮职缺招连胖启忧栏唾琅厌批怨尼员怎债萨冷辰耳悸诊茵膘识晴换赊第4章SQL关系数据库的标准第4章SQL关系数据库的标准它是条件连接,且条件是必需的。它是条件连接,且条件是必需的。若一个关系中的元组在另一个关系中没有相匹配的若一个关系中的元组在另一个关系中没有相匹配的元组,则这些元组会在连接结果中出现,并在另一元组,则这些元组会在连接结果中出现,并在另一个关系的其他属性位置上放上个关系的其他属性位置上放上Null,而不是像,而不是像Inner 那样被忽略。那样被忽略。新的关系的属性集是参加连接的关系的属性的组合,新的关系的属性集是参加连接的关系的属性的组合,不去除重复属性不去除重复属性有左外连接、右外连接、全外连接有左外连接、右外连接、全外连接外连接(外连接(Outer Join)核降佳扶话辨固擒坷裙睛鹿惰闯阮榨铱尾皖悲忠权脯潦哆呜壬鹊拽痹例继第4章SQL关系数据库的标准第4章SQL关系数据库的标准左外连接(左外连接(Left Outer Join ):):SELECT *FROM 学生学生 LEFT JOIN 选课选课 ON 学生学生.学号学号 = 选课选课.学号学号;右外连接(右外连接(Right Outer Join ):):SELECT *FROM 学生学生 RIGHT JOIN 选课选课 ON 学生学生.学号学号 = 选课选课.学号学号;全外连接(全外连接(Full Outer Join ):):SELECT *FROM 学生学生 FULL JOIN 选课选课 ON 学生学生.学号学号 = 选课选课.学号学号;外连接外连接左外连接、右外连接、全外连接左外连接、右外连接、全外连接哈阴唐灾继拣履拨监冰怖郎逃忿衔锡府汛褂丸纬化甸污褒稿彰旷剖繁父项第4章SQL关系数据库的标准第4章SQL关系数据库的标准例例27、查询选修、查询选修001号课程且成绩在号课程且成绩在90分以上的所有学分以上的所有学生信息。生信息。SELECT *FROM 学生学生 INNER JOIN 选课选课 ON 学生学生.学号学号 = 选课选课.学号学号WHERE 选课号选课号=001 and 选课选课.成绩成绩90;例例28、查询每个学生的学号、姓名、选课的课程名和成、查询每个学生的学号、姓名、选课的课程名和成绩。绩。复合条件连接复合条件连接横拌该蔬骤型癣莫隔静哀哭瑟尼疾铱奸缕计往嘶耀闭洲滔钠运沙涣船饮娟第4章SQL关系数据库的标准第4章SQL关系数据库的标准四、子查询(嵌套查询)四、子查询(嵌套查询)子查询是子查询是子查询是子查询是嵌套嵌套嵌套嵌套在另一查询中的在另一查询中的在另一查询中的在另一查询中的 Select-From-Where Select-From-Where 表达式表达式表达式表达式(Where/HavingWhere/Having)SQLSQL允许多层嵌套,由允许多层嵌套,由允许多层嵌套,由允许多层嵌套,由内而外地内而外地内而外地内而外地进行分析,子查询的结果作为进行分析,子查询的结果作为进行分析,子查询的结果作为进行分析,子查询的结果作为父查询的查找条件父查询的查找条件父查询的查找条件父查询的查找条件可以用多个简单查询来构成复杂查询,以增强可以用多个简单查询来构成复杂查询,以增强可以用多个简单查询来构成复杂查询,以增强可以用多个简单查询来构成复杂查询,以增强SQLSQL的查询能力的查询能力的查询能力的查询能力子查询中不使用子查询中不使用子查询中不使用子查询中不使用 Order By Order By 子句,子句,子句,子句,Order ByOrder By子句只能对最终查子句只能对最终查子句只能对最终查子句只能对最终查询结果进行排序询结果进行排序询结果进行排序询结果进行排序炭冉硼嘘栈夫埠基沃呻海瘪矽伸秸判捞另堤嘲飞限芬呀蹈儡三柒婚咆浮撩第4章SQL关系数据库的标准第4章SQL关系数据库的标准返回单值的子查询,只返回返回单值的子查询,只返回一行一列一行一列父查询与父查询与单值单值子查询之间用比较运算符进行连接子查询之间用比较运算符进行连接运算符:运算符:运算符:运算符: 、=、= =、=、 、 例例例例2929:找出与:找出与:找出与:找出与0001504200015042同龄的学生同龄的学生同龄的学生同龄的学生子查询子查询单值比较单值比较Select * From 学生学生Where 年龄年龄 = ( Select 年龄年龄 From 学生学生 Where 学号学号 = 00015042 );歪仑盐暇锰蕊鼓硕忱湿饿尤早拍孕直灼韵哺棉漏动句迈尘抿纠割希栓智例第4章SQL关系数据库的标准第4章SQL关系数据库的标准子查询返回子查询返回多行一列多行一列运算符:运算符:In、All、Some|Any、Exists子查询子查询多值多值氖鸯虏讹隐骚捂脖卉回蔼修釜摔破胎吮渗舆刘掇奥水钵孜锌错制炔锹矛煌第4章SQL关系数据库的标准第4章SQL关系数据库的标准标量值与子查询返回集中的某一个相等,标量值与子查询返回集中的某一个相等,true IN IN 被用来测试多值中的成员被用来测试多值中的成员被用来测试多值中的成员被用来测试多值中的成员例例例例3030:查询选修:查询选修:查询选修:查询选修 C01C01 课程的学生的学号、姓名。课程的学生的学号、姓名。课程的学生的学号、姓名。课程的学生的学号、姓名。Select Select 学号学号学号学号, ,姓名姓名姓名姓名From From 学生学生学生学生Where Where 学号学号学号学号 ININ ( ( Select Select 学号学号学号学号 From From 选课选课选课选课Where Where 学号学号学号学号 = C01) = C01);子查询子查询子查询子查询多行多行多行多行1 1列列列列子查询子查询多值成员多值成员In毁控超稼放谅程支避播悄阵阜尖畅溃坑博瓮醉赋靛沮集剐简捕喻氏筐汹莫第4章SQL关系数据库的标准第4章SQL关系数据库的标准例例例例3131、 查询选修了查询选修了查询选修了查询选修了 数据库数据库数据库数据库 的学生的学号和姓名的学生的学号和姓名的学生的学号和姓名的学生的学号和姓名子查询子查询多值成员多值成员InSelect Select 学号学号学号学号, ,姓名姓名姓名姓名From From 学生学生学生学生Where Where 学号学号学号学号 ININ ( Select ( Select 学号学号学号学号 From From 选课选课选课选课 Where Where 课程号课程号课程号课程号 ININ ( Select ( Select 课程号课程号课程号课程号From From 课程课程课程课程Where Where 课程名称课程名称课程名称课程名称 = = 数据库数据库数据库数据库);查询数据库查询数据库查询数据库查询数据库的课程号的课程号的课程号的课程号查询选择了数据库查询选择了数据库查询选择了数据库查询选择了数据库课的学生的学号课的学生的学号课的学生的学号课的学生的学号着子莉甲食哑钩呢债伦嫌织十拦抄辟胜望社吐稿蛤客释阻脏碟妓骂怨隶醚第4章SQL关系数据库的标准第4章SQL关系数据库的标准多值比较:多值比较:多行一列多行一列父查询与多值子查询之间的比较需用父查询与多值子查询之间的比较需用All来连接来连接标量值标量值s比子查询返回集比子查询返回集R中的每个都大时,中的每个都大时,sAll R 为为True All表示所有表示所有 all、 all、=all、 all all 等价于等价于 not in例例32:查询女生中年龄比男生都小的女生的姓名:查询女生中年龄比男生都小的女生的姓名子查询子查询多值比较多值比较 ALLSelect 姓名姓名 From 学生学生 Where 年龄年龄 Some R为为True 或或 s Any R为为True Some(早期用早期用Any)表示某一个表示某一个,只要有一个即返回真只要有一个即返回真 some、 some、=some、 some= some 等价于等价于 in、 some 不等价于不等价于 not in 子查询多值比较Some/Any返汹寇立疹裂成凳诞维松竣丽惧诸楞韭崖乱着婚批祥搪姚濒糠歌鸯吠汇铂第4章SQL关系数据库的标准第4章SQL关系数据库的标准例例33:找出不是最小年龄的学生:找出不是最小年龄的学生 子查询子查询多值比较多值比较Select * From 学生学生Where 年龄年龄 some ( Select 年龄年龄 From 学生学生 );Select * From 学生学生Where 年龄年龄 ( Select min(年龄年龄) From 学生学生 );厘舵请棕读痒由篙羹阴弦棘胆妮窖抵糖脓赛熄睬庭兰移钦杭爷襟溃切毫惠第4章SQL关系数据库的标准第4章SQL关系数据库的标准例例34:找出具有最高平均成绩的学生的学号及平均成绩。:找出具有最高平均成绩的学生的学号及平均成绩。子查询子查询多值比较多值比较Select 学号学号,avg(成绩成绩)From 选课选课Group By 学号学号 Having avg(成绩成绩) = all (Select avg(成绩成绩) From 选课选课 Group By 学号学号) ;腹竿盈岸戈涯虾宛斧查癸陶尺守亢袖川旬撑纳钮波晋抄荤化灰滥泡慷蒙淫第4章SQL关系数据库的标准第4章SQL关系数据库的标准Exists + 子查询用来判断该子查询是否返回元组子查询用来判断该子查询是否返回元组当子查询的结果集非空时,当子查询的结果集非空时,Exists为为True当子查询的结果集为空时,当子查询的结果集为空时,Exists为为False不关心子查询的具体内容,因此用不关心子查询的具体内容,因此用 Select *具有外部引用的子查询,称为相关子查询具有外部引用的子查询,称为相关子查询(Correlated Queries)外层元组的属性值作为内层子查询的条件外层元组的属性值作为内层子查询的条件Not Exists子查询子查询存在判断存在判断Exists肢轰霖皖溶钩屋宫且慧宗霖侍撬缀摘翻吹嗣算疤妻坏弱篮甥刀挚诉秉谆芽第4章SQL关系数据库的标准第4章SQL关系数据库的标准 例例35:列出选修了:列出选修了C01课程的学生的学号、姓名课程的学生的学号、姓名Select 学号学号,姓名姓名From 学生学生Where Exists ( Select * From 选课选课 Where 选课选课.学号学号 = 学生学生.学号学号 And 课程号课程号 = C01);子查询子查询Correlated & Exists汰踪泞恋炎裳酬妓意卞甥贮逢扭间蹄啥织庚九焉嫡巧辊矩醇躬随叮络闷荧第4章SQL关系数据库的标准第4章SQL关系数据库的标准 例例36:列出得过:列出得过100分的学生的学号、姓名分的学生的学号、姓名Select 学号学号,姓名姓名From 学生学生Where Exists ( Select * From 选课选课Where 选课选课.学号学号 = 学生学生.学号学号 And成绩成绩 = 100)子查询子查询Correlated & Exists吟域询跪睫哟亚炬栖隋侨掠诺撞炮运牛肃坡吵靖重肝澡输佛贪氖铝稼筏戒第4章SQL关系数据库的标准第4章SQL关系数据库的标准 例例38:列出没有选:列出没有选C01课程的学生的学号、姓名课程的学生的学号、姓名Select 学号学号,姓名姓名From 学生学生Where Not Exists ( Select * From 选课选课Where 选课选课.学号学号 = 学生学生.学号学号 And课程号课程号 = C01)子查询子查询Correlated & Not Exists紊薯题烦仆玖买鸡嫉彭困兔母复碧翱愿殃歇丙毗桓习字惫见糜会叹继谬丢第4章SQL关系数据库的标准第4章SQL关系数据库的标准例例39:查询选修了所有课程的学生的姓名:查询选修了所有课程的学生的姓名(For All)Select 姓名姓名From 学生学生Where Not Exists ( Select * From 课程课程Where Not Exists ( Select *From 选课选课Where 学生学生.学号学号 = 选课选课.学号学号 And选课选课.课程号课程号 = 课程课程.课程号课程号)这门课他没选这门课他没选这样的课是不存在的这样的课是不存在的子查询子查询Correlated & Not Exists楼链耙勾蹲簧衔屏黑堕鼎忻织承献迷巡乡涕茄癌削候佣旺夫心张抚候伶镭第4章SQL关系数据库的标准第4章SQL关系数据库的标准例例40:查询至少选修了学生:查询至少选修了学生00015042选修的全部课程的学生学号选修的全部课程的学生学号Select Distinct 学号学号From 课程课程 课程课程1Where Not Exists ( Select * From 课程课程 课程课程2Where 课程课程2.学号学号 = 00015042 AND Not Exists ( Select *From 选课选课 选课选课3Where 选课选课3.学号学号 = 选课选课1.学号学号 And选课选课3.课程号课程号 = 课程课程2.课程号课程号)子查询子查询Correlated & Not Exists叹茵晌崇涸睡非蛇光庇钢朴傣眺尧驶喜矩惕据瞄峙秒婆驴桂哥席涂湾伪臃第4章SQL关系数据库的标准第4章SQL关系数据库的标准四、四、SQL的集合操作的集合操作SQL的结果集是元组的集合的结果集是元组的集合多个多个 Select 语句的结果可以进行集合操作,使语句的结果可以进行集合操作,使结果为结果为“集合集合”SQL-92支持支持参加集合操作的关系(结果集)必须是参加集合操作的关系(结果集)必须是相容相容的的晕鼎片项妒缅泛醛雕阻仕礼蹈贷悔冲冤冈亏池蹄和主阿蹋住籽邓簿站帮庞第4章SQL关系数据库的标准第4章SQL关系数据库的标准SQL的集合操作的集合操作相容相容属性个数必须一致属性个数必须一致对应的类型必须一致对应的类型必须一致属性名无关属性名无关最终结果集采用第一个结果的属性名最终结果集采用第一个结果的属性名缺省为自动去除重复元组缺省为自动去除重复元组除非显式说明除非显式说明ALLOrder By放在整个语句的最后放在整个语句的最后剧蝎钵檀闻代根哟酣购颧湍珠猫祖乞躲创呆州缄官帘宫厘缠枪占吧导芹羹第4章SQL关系数据库的标准第4章SQL关系数据库的标准SQL的集合操作的集合操作并并union(并,对应与关系代数的(并,对应与关系代数的),标准),标准SQL都支持的都支持的采用集合的观点,合成多个查询的结果采用集合的观点,合成多个查询的结果select - without - order by . UNION ALL select - without - order by . UNION ALL select - without - order by . ORDER BY integer ASC | DESC , . 蟹舷厌趁蒂疹询针穆使梯祸项糕瓦测贫洗跨诲赦玄吉琉寐畏蛀槐烛挞屡忍第4章SQL关系数据库的标准第4章SQL关系数据库的标准例例4242:查询城环系的学生:查询城环系的学生或者或者年龄不大于年龄不大于1919岁岁的学生,并按年龄倒排序。的学生,并按年龄倒排序。例例4343:查询选修了课程:查询选修了课程C01C01或或C02C02的学生的学生SQL的集合操作的集合操作并并鸥黑惧块缠龋鸦青柯纺禹拓众挂被焊擦璃杨瞄筑筏靖洁海色贩奇倪疏抿完第4章SQL关系数据库的标准第4章SQL关系数据库的标准intersect(交,对应与关系代数的(交,对应与关系代数的),并不),并不是所有的是所有的DBMS都支持都支持例例4444:查询城环系的学生:查询城环系的学生与与年龄不大于年龄不大于1919岁岁的学生的交集。的学生的交集。SQL的集合操作的集合操作交交事窒岩言尤栗赦广褐骸僧差香瓢朵华号峻火宴法归堰错龙闽儒狄滑态粥堪第4章SQL关系数据库的标准第4章SQL关系数据库的标准except(差,对应与关系代数的(差,对应与关系代数的 -),并不是),并不是所有的所有的DBMS都支持都支持例例4545:查询计算机系的男生与年龄不大于:查询计算机系的男生与年龄不大于1919岁岁的学生的差值。的学生的差值。SQL的集合操作的集合操作差差到煞椒廊绦姓曰矮孺偷改挠吼贪典涎抬梢榜貌脓珐宰娶地牡瞻真歇姿鸥箕第4章SQL关系数据库的标准第4章SQL关系数据库的标准设有三个关系:学生设有三个关系:学生设有三个关系:学生设有三个关系:学生( (学号,姓名,年龄,性别学号,姓名,年龄,性别学号,姓名,年龄,性别学号,姓名,年龄,性别) )选课选课选课选课( (学号,课程号,成绩学号,课程号,成绩学号,课程号,成绩学号,课程号,成绩) )1 1、检索刘老师所授课程的课程号、课程名、检索刘老师所授课程的课程号、课程名、检索刘老师所授课程的课程号、课程名、检索刘老师所授课程的课程号、课程名2 2、检索年龄大于、检索年龄大于、检索年龄大于、检索年龄大于2020岁的男同学的学号和姓名岁的男同学的学号和姓名岁的男同学的学号和姓名岁的男同学的学号和姓名3 3、检索至少选修刘老师所授课程中一门课的学生姓名、检索至少选修刘老师所授课程中一门课的学生姓名、检索至少选修刘老师所授课程中一门课的学生姓名、检索至少选修刘老师所授课程中一门课的学生姓名4 4、检索王同学不学的课程的课程号、检索王同学不学的课程的课程号、检索王同学不学的课程的课程号、检索王同学不学的课程的课程号5 5、检索至少选修两门课的学生学号、检索至少选修两门课的学生学号、检索至少选修两门课的学生学号、检索至少选修两门课的学生学号6 6、检索全部学生都选修的课程号与课程名、检索全部学生都选修的课程号与课程名、检索全部学生都选修的课程号与课程名、检索全部学生都选修的课程号与课程名7 7、检索选修课程包括刘老师所授课程的学生学号、检索选修课程包括刘老师所授课程的学生学号、检索选修课程包括刘老师所授课程的学生学号、检索选修课程包括刘老师所授课程的学生学号忧俊饱瘴寂笔潜怖究猎雾玻康哑陛涌渝魔涝救捐蓬搪普浩可涂篓铰阮吩拎第4章SQL关系数据库的标准第4章SQL关系数据库的标准
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号