CH3 SQL语言ppt课件_第1页
CH3 SQL语言ppt课件_第2页
CH3 SQL语言ppt课件_第3页
CH3 SQL语言ppt课件_第4页
CH3 SQL语言ppt课件_第5页
已阅读5页,还剩100页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据库系统原理与设计数据库系统原理与设计第第 1 1 章章 数据库系统概论数据库系统概论1第第3 3章章 SQLSQL语言语言20102010年年8 8月月数据库系统原理与设计数据库系统原理与设计第第 1 1 章章 数据库系统概论数据库系统概论2第第3章章 SQL语言语言n学习目标学习目标l SQL(Structured Query Language,结构化查询语言,结构化查询语言)是关系数据库的标准语言是关系数据库的标准语言l 几乎所有的关系型数据库管理系统均采用几乎所有的关系型数据库管理系统均采用SQL语言标准语言标准l 教学目标教学目标 掌握对数据库的基本操作,了解数据库管理系统的基本功

2、能掌握对数据库的基本操作,了解数据库管理系统的基本功能 熟练掌握熟练掌握SQL查询语句,并运用查询语句,并运用SQL语句完成对数据库的操作语句完成对数据库的操作数据库系统原理与设计数据库系统原理与设计第第 1 1 章章 数据库系统概论数据库系统概论3第第3章章 SQL语言语言n学习方法学习方法l 结合课堂讲授的知识,强化上机实训,把课堂上学过的有关概念进行实训,以便加结合课堂讲授的知识,强化上机实训,把课堂上学过的有关概念进行实训,以便加深理解,达到学习目标。深理解,达到学习目标。n学习指南学习指南l 重点:重点:3.2、3.3、3.4、3.5、3.8和和3.9节节l 难点:难点:3.3、3.

3、4和和3.5节节数据库系统原理与设计数据库系统原理与设计第第 1 1 章章 数据库系统概论数据库系统概论4第第3章章 SQL语言语言n本章导读本章导读l SQL查询语句对关系代数运算做了哪些扩展?查询语句对关系代数运算做了哪些扩展?l 连接查询包括哪些?它们分别用于什么地方?连接查询包括哪些?它们分别用于什么地方?l 相关子查询与非相关子查询的概念。相关子查询与非相关子查询的概念。l 在使用分组聚合查询时需要注意的地方。在使用分组聚合查询时需要注意的地方。l 如何理解存在量词以及存在量词在如何理解存在量词以及存在量词在SQL查询中的重要地位。查询中的重要地位。l 如何理解查询表的概念,查询表与

4、子查询有何异同点?如何理解查询表的概念,查询表与子查询有何异同点?l 在在SQL的的DDL语句中如何实现完整性约束?实现完整性约束的方法有哪些?语句中如何实现完整性约束?实现完整性约束的方法有哪些?l 如何将数据库的对象如何将数据库的对象(如基本表、索引如基本表、索引)建立在特定的物理文件上?建立在特定的物理文件上?l 将数据库对象建立在特定的物理文件上,其目的是什么?将数据库对象建立在特定的物理文件上,其目的是什么?l 建立视图的目的是什么?视图主要用于什么操作?建立视图的目的是什么?视图主要用于什么操作?数据库系统原理与设计数据库系统原理与设计第第 1 1 章章 数据库系统概论数据库系统概

5、论5目目 录录嵌套子查询嵌套子查询 3.7SQL概述概述 3.1简单查询简单查询 3.3连接查询连接查询 3.53.8聚合查询聚合查询 集合运算集合运算 SQL查询一般格式查询一般格式 SQL数据定义语言数据定义语言 SQL数据更新语言数据更新语言 视图视图 3.23.43.63.93.10数据库系统原理与设计数据库系统原理与设计第第 1 1 章章 数据库系统概论数据库系统概论63.1 SQL概述概述 nSQL语言于语言于1974年由年由Boyce等提出,并于等提出,并于19751979年在年在IBM公司研制的公司研制的System R数据库数据库管理系统上实现,现已成为国际标准。管理系统上实

6、现,现已成为国际标准。n很多数据库厂商都对很多数据库厂商都对SQL语句进行了再开发和扩展语句进行了再开发和扩展n标准标准SQL命令包括命令包括l 查询查询SELECTl 插入插入INSERTl 更新更新UPDATEl 删除删除DELETEl 创建创建CREATEl 对象删除对象删除DROPn可被用来完成几乎所有的数据库操作可被用来完成几乎所有的数据库操作数据库系统原理与设计数据库系统原理与设计第第 1 1 章章 数据库系统概论数据库系统概论73.1 SQL概述概述n3.1.1 SQL发展发展 n3.1.2 SQL特点特点n3.1.3 SQL查询基本概念查询基本概念 数据库系统原理与设计数据库系

7、统原理与设计第第 1 1 章章 数据库系统概论数据库系统概论83.1.1 SQL发展发展 nSQL-86:第一个:第一个SQL标准,由美国国家标准局标准,由美国国家标准局(American National Standard Institute,简,简称称ANSI)公布,公布,1987年国际标准化组织年国际标准化组织(International Organization for Standardization,简,简称称ISO)通过。该标准也称为通过。该标准也称为SQL-1nSQL-92:在:在1992年,由年,由ISO和和ANSI对对SQL-86进行重新修订,该标准也称为进行重新修订,该标准

8、也称为SQL-2nSQL-99:在:在1999年,该版本在年,该版本在SQL-2的基础上,扩展了诸多功能,包括递归、触发、面向的基础上,扩展了诸多功能,包括递归、触发、面向对象技术等。该标准也称为对象技术等。该标准也称为SQL-3 nSQL-2003:该标准是最新的标准,也称:该标准是最新的标准,也称SQL-4,于,于2003年发布年发布 数据库系统原理与设计数据库系统原理与设计第第 1 1 章章 数据库系统概论数据库系统概论93.1.1 SQL发展发展nSQL语言由语言由4部分组成部分组成l 数据定义语言数据定义语言DDL(Data Definition Language) 定义数据库的逻辑

9、结构,包括数据库、基本表、视图和索引等,扩展定义数据库的逻辑结构,包括数据库、基本表、视图和索引等,扩展DDL还支还支持存储过程、函数、对象、触发器等的定义持存储过程、函数、对象、触发器等的定义 DDL包括包括3类语言,即定义、修改和删除类语言,即定义、修改和删除l 数据操纵语言数据操纵语言DML(Data Manipuplation Language) 对数据库的数据进行检索和更新,其中更新操作包括插入、删除和修改数据对数据库的数据进行检索和更新,其中更新操作包括插入、删除和修改数据l 数据控制语言数据控制语言DCL(Data Control Language) 对数据库的对象进行授权、用户

10、维护对数据库的对象进行授权、用户维护(包括创建、修改和删除包括创建、修改和删除)、完整性规则定义、完整性规则定义和事务定义等和事务定义等l 其它其它 主要是嵌入式主要是嵌入式SQL语言和动态语言和动态SQL语言的定义,规定了语言的定义,规定了SQL语言在宿主语言中语言在宿主语言中使用的规则使用的规则 扩展扩展SQL还包括数据库数据的重新组织、备份与恢复等功能还包括数据库数据的重新组织、备份与恢复等功能数据库系统原理与设计数据库系统原理与设计第第 1 1 章章 数据库系统概论数据库系统概论103.1.2 SQL特点特点 n 综合统一综合统一 l 集数据定义语言集数据定义语言DDL、数据操纵语言、

11、数据操纵语言DML、数据控制语言、数据控制语言DCL的功能于一体的功能于一体 n高度非过程化高度非过程化 n面向集合的操作方式面向集合的操作方式l 采用集合操作方式,其操作对象、查找结果都是元组的集合采用集合操作方式,其操作对象、查找结果都是元组的集合 n同一种语法结构提供两种使用方式同一种语法结构提供两种使用方式l SQL语言既是自含式语言,又是嵌入式语言。在两种不同的使用方式下,其语法语言既是自含式语言,又是嵌入式语言。在两种不同的使用方式下,其语法结构基本上是一致的结构基本上是一致的 n语言简洁,易学易用语言简洁,易学易用l SQL语言的动词非常少,主要包括:语言的动词非常少,主要包括:

12、 数据查询数据查询 SELECT; 数据定义数据定义 CREATE、DROP、ALTER; 数据操纵数据操纵 INSERT、UPDATE、DELETE; 数据控制数据控制 GRANT、REVOKE 数据库系统原理与设计数据库系统原理与设计第第 1 1 章章 数据库系统概论数据库系统概论113.1.3 SQL查询基本概念查询基本概念 nSQL语言支持三级模式结构,外模式对应视图和部分基本表,模式对应基本表,内模式对语言支持三级模式结构,外模式对应视图和部分基本表,模式对应基本表,内模式对应存储文件应存储文件 SQL视图视图1视图视图2基本表基本表1基本表基本表2基本表基本表3基本表基本表4存储文

13、件存储文件1存储文件存储文件2 外模式外模式 模式模式 内模式内模式数据库系统原理与设计数据库系统原理与设计第第 1 1 章章 数据库系统概论数据库系统概论123.1.3 SQL查询基本概念查询基本概念n基本表基本表l 数据库中独立存在的表称为基本表数据库中独立存在的表称为基本表l 在在SQL中一个关系对应一个基本表中一个关系对应一个基本表l 一个一个(或多个或多个)基本表对应一个存储文件基本表对应一个存储文件l 一个表可以带若干索引一个表可以带若干索引l 索引存放在存储文件中索引存放在存储文件中n视图视图l 指从一个或几个基本表指从一个或几个基本表(或视图或视图)导出的表,是虚表导出的表,是

14、虚表l 只存放视图的定义而不存放对应数据只存放视图的定义而不存放对应数据n查询表查询表l 指查询结果对应的表指查询结果对应的表n存储文件存储文件l 指数据库中存放关系的物理文件指数据库中存放关系的物理文件数据库系统原理与设计数据库系统原理与设计第第 1 1 章章 数据库系统概论数据库系统概论13目目 录录嵌套子查询嵌套子查询 3.7SQL概述概述 3.1简单查询简单查询 3.3连接查询连接查询 3.53.8聚合查询聚合查询 集合运算集合运算 SQL查询一般格式查询一般格式 SQL数据定义语言数据定义语言 SQL数据更新语言数据更新语言 视图视图 3.23.43.63.93.10数据库系统原理与

15、设计数据库系统原理与设计第第 1 1 章章 数据库系统概论数据库系统概论143.2简单查询简单查询n本章所用的数据库为学生成绩管理数据库本章所用的数据库为学生成绩管理数据库ScoreDB,其数据库模式如图,其数据库模式如图3-2、3-3、3-4、3-5所示所示数据库系统原理与设计数据库系统原理与设计第第 1 1 章章 数据库系统概论数据库系统概论153.2简单查询简单查询数据库系统原理与设计数据库系统原理与设计第第 1 1 章章 数据库系统概论数据库系统概论163.2简单查询简单查询数据库系统原理与设计数据库系统原理与设计第第 1 1 章章 数据库系统概论数据库系统概论173.2简单查询简单查

16、询数据库系统原理与设计数据库系统原理与设计第第 1 1 章章 数据库系统概论数据库系统概论183.2简单查询简单查询 n3.2.1 投影运算投影运算n3.2.2 选择运算选择运算 n3.2.3 排序运算排序运算n3.2.4 查询表查询表数据库系统原理与设计数据库系统原理与设计第第 1 1 章章 数据库系统概论数据库系统概论193.2.1 投影运算投影运算nSQL基本结构包括基本结构包括3个子句:个子句:l SELECT子句子句 对应投影运算,指定查询结果中所需要的属性或表达式对应投影运算,指定查询结果中所需要的属性或表达式l FROM子句子句 对应笛卡尔积,给出查询所涉及的表,表可以是基本表、

17、视图或查询表对应笛卡尔积,给出查询所涉及的表,表可以是基本表、视图或查询表l WHERE子句子句 对应选择运算,指定查询结果元组所需要满足的选择条件对应选择运算,指定查询结果元组所需要满足的选择条件nSELECT和和FROM是必须的,其他是可选的是必须的,其他是可选的数据库系统原理与设计数据库系统原理与设计第第 1 1 章章 数据库系统概论数据库系统概论203.2.1 投影运算投影运算n基本语法为:基本语法为: SELECT A1, A2, ., An FROM R1, R2, ., Rm WHERE P A1, A2, ., An代表需要查找的属性或表达式代表需要查找的属性或表达式 R1,

18、R2, ., Rm代表查询所涉及的表代表查询所涉及的表 P代表谓词代表谓词(即选择条件即选择条件),如果省略,如果省略WHERE子句,表示子句,表示P为真为真 SQL的查询结果中允许包含重复元组的查询结果中允许包含重复元组nSQL执行过程:执行过程:l 首先对首先对R1, R2, ., Rm执行笛卡尔积执行笛卡尔积l 然后在笛卡尔积中选择使得谓词然后在笛卡尔积中选择使得谓词P为真的记录为真的记录l 再在再在A1, A2, ., An属性列中进行投影运算,不消除重复元组属性列中进行投影运算,不消除重复元组 如需消除重复元组,必须使用关键字如需消除重复元组,必须使用关键字DISTINCTn刚才描述

19、的刚才描述的SQL查询执行过程只是逻辑上的,在具体执行时会进行优化处理,查询优化的查询执行过程只是逻辑上的,在具体执行时会进行优化处理,查询优化的内容详见第内容详见第7章。章。数据库系统原理与设计数据库系统原理与设计第第 1 1 章章 数据库系统概论数据库系统概论213.2.1 投影运算投影运算n查询指定列查询指定列l 选取表中的全部列或指定列,通过选取表中的全部列或指定列,通过SELECT确定要查询的属性确定要查询的属性l 例例3.1 查询所有班级的班级编号、班级名称和所属学院查询所有班级的班级编号、班级名称和所属学院 SELECT classNo, className, institute

20、 FROM Class 该查询的执行过程是:该查询的执行过程是: 从从Class表中依次取出每个元组表中依次取出每个元组 对每个元组仅选取对每个元组仅选取classNo、className和和institute三个属性的值,形成一三个属性的值,形成一个新元组个新元组 最后将这些新元组组织为一个结果关系输出最后将这些新元组组织为一个结果关系输出 该查询的结果如图该查询的结果如图3-10所示所示数据库系统原理与设计数据库系统原理与设计第第 1 1 章章 数据库系统概论数据库系统概论223.2.1 投影运算投影运算n消除重复元组消除重复元组l 需要消除重复元组,使用需要消除重复元组,使用DISTIN

21、CT关键字关键字l 例例3.2 查询所有学院的名称。查询所有学院的名称。 SELECT institute FROM Class 上述查询不消除重复元组,其查询结果如图上述查询不消除重复元组,其查询结果如图3-11所示所示l 消除重复元组,查询结果如图消除重复元组,查询结果如图3-12所示所示 SELECT DISTINCT institute FROM Class图图3-11图图3-12数据库系统原理与设计数据库系统原理与设计第第 1 1 章章 数据库系统概论数据库系统概论233.2.1 投影运算投影运算n查询所有列查询所有列l 可使用两种方法:可使用两种方法: 将所有的列在将所有的列在SE

22、LECT子句中列出子句中列出(可以改变列的显示顺序可以改变列的显示顺序); 使用使用*符号,符号,*表示所有属性,按照表定义时的顺序显示所有属性表示所有属性,按照表定义时的顺序显示所有属性l 例例3.3 查询所有班级的全部信息。查询所有班级的全部信息。 SELECT classNo, className, classNum, grade, institute FROM Classl 或或 SELECT * FROM Class数据库系统原理与设计数据库系统原理与设计第第 1 1 章章 数据库系统概论数据库系统概论243.2.1 投影运算投影运算n给属性列取别名给属性列取别名l 可为属性列取一个

23、便于理解的列名,如用中文来显示列名可为属性列取一个便于理解的列名,如用中文来显示列名l 为属性列取别名特别适合经过计算的列为属性列取别名特别适合经过计算的列l 例例3.4 查询所有班级的所属学院、班级编号和班级名称,要求用中文显示列名查询所有班级的所属学院、班级编号和班级名称,要求用中文显示列名 SELECT institute 所属学院所属学院, classNo 班级编号班级编号, className 班级名称班级名称 FROM Classl 查询结果如图查询结果如图3-13所示。该查询可使用所示。该查询可使用AS关键字取别名:关键字取别名: SELECT institute AS 所属学院

24、所属学院, classNo AS 班级编号班级编号, className AS 班级名称班级名称 FROM Class数据库系统原理与设计数据库系统原理与设计第第 1 1 章章 数据库系统概论数据库系统概论253.2.1 投影运算投影运算n查询经过计算的列查询经过计算的列l 可使用属性、常数、函数和表达式可使用属性、常数、函数和表达式 l 例例3.5 查询每个班级编号、班级名称以及该班级现在为几年级,并将班级编号中查询每个班级编号、班级名称以及该班级现在为几年级,并将班级编号中大写字母改为小写字母输出大写字母改为小写字母输出 SELECT lower(classNo) 班级编号班级编号, cl

25、assName, year(getdate() - grade AS 年级年级 FROM Classl 函数函数lower()将大写字母改为小写字母将大写字母改为小写字母l 函数函数getdate()获取当前系统的日期获取当前系统的日期l 函数函数year()提取日期中的年份提取日期中的年份l 查询结果如图查询结果如图3-14所示所示数据库系统原理与设计数据库系统原理与设计第第 1 1 章章 数据库系统概论数据库系统概论263.2.2 选择运算选择运算nWHERE子句可实现关系代数中的选择运算子句可实现关系代数中的选择运算nWHERE常用的查询条件有:常用的查询条件有:l 比较运算:比较运算:

26、、=、=、=、(或或!=)l 范围查询:范围查询:BETWEEN.ANDl 集合查询:集合查询:INl 空值查询:空值查询:IS nulll 字符匹配查询:字符匹配查询:LIKEl 逻辑查询:逻辑查询:AND、OR、NOT数据库系统原理与设计数据库系统原理与设计第第 1 1 章章 数据库系统概论数据库系统概论273.2.2 选择运算选择运算n比较运算比较运算l 使用比较运算符使用比较运算符、=、=、=、(或或!=) l 例例3.6 查询查询2007级的班级编号、班级名称和所属学院。级的班级编号、班级名称和所属学院。 SELECT classNo, className, institute FR

27、OM Class WHERE grade=2007l 其查询结果如图其查询结果如图3-15所示所示数据库系统原理与设计数据库系统原理与设计第第 1 1 章章 数据库系统概论数据库系统概论283.2.2 选择运算选择运算l 该查询的执行过程可能有多种方法:该查询的执行过程可能有多种方法: 全表扫描法全表扫描法 依次取出依次取出Class表中的每个元组表中的每个元组 判断该元组的判断该元组的grade属性值是否等于属性值是否等于2007 若是则将该元组的班级编号、班级名称和所属学院属性取出,形成一个新若是则将该元组的班级编号、班级名称和所属学院属性取出,形成一个新元组元组 最后将所有新元组组织为一

28、个结果关系输出最后将所有新元组组织为一个结果关系输出 该方法适用于小表,或者该表未在该方法适用于小表,或者该表未在grade属性列上建索引属性列上建索引 索引搜索法索引搜索法 如果该表在如果该表在grade属性列上建有索引,且满足条件的记录不多,则可使用属性列上建有索引,且满足条件的记录不多,则可使用索引搜索法来检索数据索引搜索法来检索数据 具体使用何种方法由数据库管理系统的查询优化器来选择,详见第具体使用何种方法由数据库管理系统的查询优化器来选择,详见第8章内容章内容数据库系统原理与设计数据库系统原理与设计第第 1 1 章章 数据库系统概论数据库系统概论293.2.2 选择运算选择运算l 例

29、例3.7 在学生在学生Student表中查询年龄大于或等于表中查询年龄大于或等于19岁的同学学号、姓名和出生日期岁的同学学号、姓名和出生日期。 SELECT studentNo, studentName, birthday FROM Student WHERE year(getdate() - year(birthday)=19数据库系统原理与设计数据库系统原理与设计第第 1 1 章章 数据库系统概论数据库系统概论303.2.2 选择运算选择运算n范围查询范围查询l BETWEEN.AND用于查询属性值在某一个范围内的元组用于查询属性值在某一个范围内的元组l NOT BETWEEN.AND用于

30、查询属性值不在某一个范围内的元组用于查询属性值不在某一个范围内的元组l BETWEEN后是属性的下限值,后是属性的下限值,AND后是属性的上限值后是属性的上限值l 例例3.8 在选课在选课Score表中查询成绩在表中查询成绩在8090分之间的同学学号、课程号和相应成分之间的同学学号、课程号和相应成绩绩 SELECT studentNo, courseNo, score FROM Score WHERE score BETWEEN 80 AND 90 该查询也可以使用逻辑运算该查询也可以使用逻辑运算AND实现,见例实现,见例3.22数据库系统原理与设计数据库系统原理与设计第第 1 1 章章 数据

31、库系统概论数据库系统概论313.2.2 选择运算选择运算l 例例3.9 在选课在选课Score表中查询成绩不在表中查询成绩不在8090分之间的同学学号、课程号和相应成绩分之间的同学学号、课程号和相应成绩。 SELECT studentNo, courseNo, score FROM Score WHERE score NOT BETWEEN 80 AND 90 该查询也可以使用逻辑运算该查询也可以使用逻辑运算OR实现,见例实现,见例3.23数据库系统原理与设计数据库系统原理与设计第第 1 1 章章 数据库系统概论数据库系统概论323.2.2 选择运算选择运算n集合查询集合查询l IN用于查询属

32、性值在某个集合内的元组用于查询属性值在某个集合内的元组l NOT IN用于查询属性值不在某个集合内的元组用于查询属性值不在某个集合内的元组l IN后面是集合,可以是具体的集合,也可以是查询出来的元组集合后面是集合,可以是具体的集合,也可以是查询出来的元组集合(该部分内容详见该部分内容详见3.4节的内容节的内容)。l 例例3.10 在选课在选课Score表中查询选修了表中查询选修了“001”、“005”或或“003”课程的同学学号、课课程的同学学号、课程号和相应成绩。程号和相应成绩。 SELECT studentNo, courseNo, score FROM Score WHERE cours

33、eNo IN (001, 005, 003) 该查询也可以使用逻辑运算该查询也可以使用逻辑运算OR实现,见例实现,见例3.19数据库系统原理与设计数据库系统原理与设计第第 1 1 章章 数据库系统概论数据库系统概论333.2.2 选择运算选择运算l 例例3.11 在学生在学生 Student表中查询籍贯不是表中查询籍贯不是“南昌南昌”或或“上海上海”的同学姓名、籍贯的同学姓名、籍贯和所属班级编号。和所属班级编号。 SELECT studentName, native, classNo FROM Student WHERE native NOT IN (南昌南昌, 上海上海) 该查询也可以使用逻

34、辑运算该查询也可以使用逻辑运算AND实现,见例实现,见例3.21数据库系统原理与设计数据库系统原理与设计第第 1 1 章章 数据库系统概论数据库系统概论343.2.2 选择运算选择运算n空值查询空值查询l 空值表示未知或不确定的值,空值表示为空值表示未知或不确定的值,空值表示为nulll IS null用于查询属性值为空值用于查询属性值为空值l IS NOT null用于查询属性值不为空值用于查询属性值不为空值l IS不能用不能用“=”替代替代l 例例3.12 在课程在课程Course表中查询先修课程为空值的课程信息。表中查询先修课程为空值的课程信息。 SELECT * FROM Course

35、 WHERE priorCourse IS NULL 查询结果如图查询结果如图3-16所示所示数据库系统原理与设计数据库系统原理与设计第第 1 1 章章 数据库系统概论数据库系统概论353.2.2 选择运算选择运算l 例例3.13 在课程在课程Course表中查询有先修课程的课程信息。表中查询有先修课程的课程信息。 SELECT * FROM Course WHERE priorCourse IS NOT NULL数据库系统原理与设计数据库系统原理与设计第第 1 1 章章 数据库系统概论数据库系统概论363.2.2 选择运算选择运算n字符匹配查询字符匹配查询l LIKE用于字符匹配查询,语法格

36、式为:用于字符匹配查询,语法格式为: NOT LIKE ESCAPE l 查询的含义是:查询的含义是: 如果在如果在LIKE前没有前没有NOT,则查询指定的属性列值与,则查询指定的属性列值与相匹配的元组相匹配的元组; 如果在如果在LIKE前有前有NOT,则查询指定的属性列值不与,则查询指定的属性列值不与相匹配的元组相匹配的元组。 可以是一个具体的字符串,也可以包括通配符可以是一个具体的字符串,也可以包括通配符%和和_ %表示任意长度的字符串表示任意长度的字符串 ab%,表示所有以,表示所有以ab开头的任意长度的字符串;开头的任意长度的字符串; zhang%ab,表示以,表示以zhang开头,以

37、开头,以ab结束,中间可以是任意个字符的结束,中间可以是任意个字符的字符串。字符串。 符号符号_(下划线下划线)表示任意一个字符表示任意一个字符 ab:所有以:所有以 ab开头的开头的3个字符的字符串,其中第个字符的字符串,其中第3个字符为任意字符;个字符为任意字符; a_b:所有以:所有以a开头,以开头,以b 结束的结束的4个字符的字符串,且第个字符的字符串,且第2、3个字符为个字符为任意字符。任意字符。数据库系统原理与设计数据库系统原理与设计第第 1 1 章章 数据库系统概论数据库系统概论373.2.2 选择运算选择运算l 例例3.14 在班级在班级Class表中查询班级名称中含有会计的班

38、级信息表中查询班级名称中含有会计的班级信息 SELECT * FROM Class WHERE className LIKE %会计会计% 注意:匹配字符串必须用一对引号括起来注意:匹配字符串必须用一对引号括起来l 例例3.15 在学生在学生Student表中查询所有姓王且全名为表中查询所有姓王且全名为3个汉字的同学学号和姓名个汉字的同学学号和姓名 SELECT studentNo, studentName FROM Student WHERE studentName LIKE 王王_ 注意:在中文注意:在中文SQL-Server中,如果匹配字符串为汉字,则一个下划线代表一个中,如果匹配字符串

39、为汉字,则一个下划线代表一个汉字;如果是西文,则一个下划线代表一个字符。汉字;如果是西文,则一个下划线代表一个字符。数据库系统原理与设计数据库系统原理与设计第第 1 1 章章 数据库系统概论数据库系统概论383.2.2 选择运算选择运算l 例例3.16 在学生在学生Student表中查询名字中不含有表中查询名字中不含有“福福”的同学学号和姓名。的同学学号和姓名。 SELECT studentNo, studentName FROM Student WHERE studentName NOT LIKE %福福%数据库系统原理与设计数据库系统原理与设计第第 1 1 章章 数据库系统概论数据库系统概

40、论393.2.2 选择运算选择运算l 例例3.17 在学生在学生Student表中查询蒙古族的同学学号和姓名表中查询蒙古族的同学学号和姓名 SELECT studentNo, studentName FROM Student WHERE nation LIKE 蒙古族蒙古族 注意:如果匹配字符串中不含有注意:如果匹配字符串中不含有%和和_,则,则LIKE与比较运算符与比较运算符“=”的查询结果的查询结果一样一样 该查询等价于下面的查询:该查询等价于下面的查询: SELECT studentNo, studentName FROM Student WHERE nation=蒙古族蒙古族数据库系统

41、原理与设计数据库系统原理与设计第第 1 1 章章 数据库系统概论数据库系统概论403.2.2 选择运算选择运算n如果查询字串中本身要包含如果查询字串中本身要包含%和和_,必须使用,必须使用“ESCAPE ”短语,对通配符进短语,对通配符进行转义处理。行转义处理。l 例例3.18 在班级在班级Class表中查询班级名称中含有表中查询班级名称中含有“08_”符号的班级名称符号的班级名称 SELECT className FROM Class WHERE className LIKE %08_% ESCAPE “ESCAPE ”表示表示为换码字符为换码字符 紧跟在紧跟在符号后的符号后的_不是通配符,

42、而是普通的用户要查询的符号不是通配符,而是普通的用户要查询的符号 查询结果如图查询结果如图3-17所示所示数据库系统原理与设计数据库系统原理与设计第第 1 1 章章 数据库系统概论数据库系统概论413.2.2 选择运算选择运算 如果将如果将#字符作为换码字符,则该查询可改写为:字符作为换码字符,则该查询可改写为: SELECT className FROM Class WHERE className LIKE %08#_% ESCAPE #数据库系统原理与设计数据库系统原理与设计第第 1 1 章章 数据库系统概论数据库系统概论423.2.2 选择运算选择运算n逻辑查询逻辑查询l SQL提供提供

43、AND、OR和和NOT逻辑运算符分别实现逻辑与、逻辑或和逻辑非运算逻辑运算符分别实现逻辑与、逻辑或和逻辑非运算l 例例3.19 在选课在选课Score表中查询选修了表中查询选修了“001”、“005”或或“003”课程的同学学号、课程的同学学号、课程号和相应成绩课程号和相应成绩SELECT studentNo, courseNo, scoreFROM ScoreWHERE courseNo=001 OR courseNo=005 OR courseNo=003l 在例在例3.10中使用的是集合运算,本例中采用逻辑中使用的是集合运算,本例中采用逻辑“或或”运算运算数据库系统原理与设计数据库系统原

44、理与设计第第 1 1 章章 数据库系统概论数据库系统概论433.2.2 选择运算选择运算l 例例3.20 在在Student表中查询表中查询1991年出生且籍贯为年出生且籍贯为“汉族汉族”的同学学号、姓名、出的同学学号、姓名、出生日期。生日期。 SELECT studentNo, studentName, birthday FROM Student WHERE year(birthday)=1991 AND nation=汉族汉族l 注意:在逻辑运算中,不可以对同一个属性进行逻辑注意:在逻辑运算中,不可以对同一个属性进行逻辑“与与”的等值运算的等值运算 如在选课如在选课Score表中查询同时选

45、修了表中查询同时选修了“001”和和“002”课程的同学的选课信息,课程的同学的选课信息,如下查询是错误的,得不到结果:如下查询是错误的,得不到结果: SELECT * FROM Score WHERE courseNo=001 AND courseNo=002 要实现该查询,需要使用连接运算或嵌套子查询要实现该查询,需要使用连接运算或嵌套子查询 通过连接运算表示该查询,参见例通过连接运算表示该查询,参见例3.29、例、例3.31 通过嵌套子查询,参见例通过嵌套子查询,参见例3.39、例、例3.40 数据库系统原理与设计数据库系统原理与设计第第 1 1 章章 数据库系统概论数据库系统概论443

46、.2.2 选择运算选择运算l 例例3.21 在在Student表中查询籍贯不是表中查询籍贯不是“南昌南昌”或或“上海上海”的同学姓名、籍贯和所属班的同学姓名、籍贯和所属班级编号。级编号。 SELECT studentName, native, classNo FROM Student WHERE native!=南昌南昌 AND native!=上海上海l 例例3.22 在选课在选课Score表中查询成绩在表中查询成绩在8090分之间的同学学号、课程号和相应成绩。分之间的同学学号、课程号和相应成绩。 SELECT studentNo, courseNo, score FROM Score WH

47、ERE score= 80 AND score=90数据库系统原理与设计数据库系统原理与设计第第 1 1 章章 数据库系统概论数据库系统概论453.2.2 选择运算选择运算l 例例3.23 在选课在选课Score表中查询成绩不在表中查询成绩不在8090分之间的同学学号、课程号和相应成绩分之间的同学学号、课程号和相应成绩。 SELECT studentNo, courseNo, score FROM Score WHERE score90数据库系统原理与设计数据库系统原理与设计第第 1 1 章章 数据库系统概论数据库系统概论463.2.3 排序运算排序运算n使用使用ORDER BY 子句实现排序

48、运算,其语法为:子句实现排序运算,其语法为: ORDER BY ASC | DESC , ASC | DESC, . l 其中:其中: , , .可以是属性、函数或表达式可以是属性、函数或表达式 缺省按升序缺省按升序(ASC)排序排序 按降序排序,必须指明按降序排序,必须指明DESC选项选项l 该运算含义是:该运算含义是: 在查询结果中首先按在查询结果中首先按的值进行排序的值进行排序 在在值相等的情况下再按值相等的情况下再按值排序值排序 依此类推依此类推数据库系统原理与设计数据库系统原理与设计第第 1 1 章章 数据库系统概论数据库系统概论473.2.3 排序运算排序运算l 例例3.24 在学

49、生在学生 Student表中查询籍贯不是表中查询籍贯不是“南昌南昌”或或“上海上海”的同学姓名、籍贯和的同学姓名、籍贯和所属班级编号,并按籍贯的降序排序输出。所属班级编号,并按籍贯的降序排序输出。 SELECT studentName, native, classNo FROM Student WHERE native!=南昌南昌 AND native!=上海上海 ORDER BY native DESC 查询结果如图查询结果如图3-18所示所示数据库系统原理与设计数据库系统原理与设计第第 1 1 章章 数据库系统概论数据库系统概论483.2.3 排序运算排序运算l 例例3.25 在学生在学生

50、Student表中查询表中查询“女女”学生的学号、姓名、所属班级编号和出生学生的学号、姓名、所属班级编号和出生日期,并按班级编号的升序、出生日期的月份降序排序输出。日期,并按班级编号的升序、出生日期的月份降序排序输出。 SELECT studentNo, studentName, classNo, birthday FROM Student WHERE sex=女女 ORDER BY classNo, month(birthday) DESC 其中:其中:month()函数表示提取日期表达式的月份函数表示提取日期表达式的月份 查询结果如图查询结果如图3-19所示所示数据库系统原理与设计数据库系

51、统原理与设计第第 1 1 章章 数据库系统概论数据库系统概论493.2.4 查询表查询表nFROM子句后面可以是基本关系、视图,还可以是查询表子句后面可以是基本关系、视图,还可以是查询表l 例例3.26 查询查询1991年出生的年出生的“女女”同学基本信息。同学基本信息。l 分析:可以先将学生表中的女生记录查询出来,然后再对查询表进行选择、投影操分析:可以先将学生表中的女生记录查询出来,然后再对查询表进行选择、投影操作。作。 SELECT studentNo, studentName, birthday FROM (SELECT * FROM Student WHERE sex=女女) AS

52、a WHERE year(birthday)=1991l 在在FROM子句后是一个子查询,表示对子查询的查询结果子句后是一个子查询,表示对子查询的查询结果查询表进行查询查询表进行查询l 必须为查询表取一个名称必须为查询表取一个名称(称为元组变量称为元组变量),如使用,如使用AS a取名为取名为a FROM (SELECT * FROM Student WHERE sex=女女) al 该查询等价于下面的查询:该查询等价于下面的查询: SELECT studentNo, studentName, birthday FROM student WHERE year(birthday)=1991 AN

53、D sex=女女数据库系统原理与设计数据库系统原理与设计第第 1 1 章章 数据库系统概论数据库系统概论50目目 录录嵌套子查询嵌套子查询 3.7SQL概述概述 3.1简单查询简单查询 3.3连接查询连接查询 3.53.8聚合查询聚合查询 集合运算集合运算 SQL查询一般格式查询一般格式 SQL数据定义语言数据定义语言 SQL数据更新语言数据更新语言 视图视图 3.23.43.63.93.10数据库系统原理与设计数据库系统原理与设计第第 1 1 章章 数据库系统概论数据库系统概论513.3连接查询连接查询n在实际应用中,往往会涉及到多个关系的查询,需用到连接运算或子查询在实际应用中,往往会涉及

54、到多个关系的查询,需用到连接运算或子查询n连接运算是关系数据库中使用最广泛的一种运算,包括等值连接、自然连接、非等值连连接运算是关系数据库中使用最广泛的一种运算,包括等值连接、自然连接、非等值连接、自表连接和外连接等接、自表连接和外连接等n3.3.1 等值与非等值连接等值与非等值连接n3.3.2 自表连接自表连接n3.3.3 外连接外连接 数据库系统原理与设计数据库系统原理与设计第第 1 1 章章 数据库系统概论数据库系统概论523.3.1 等值与非等值连接等值与非等值连接n该运算在该运算在WHERE子句中加入连接多个关系的连接条件子句中加入连接多个关系的连接条件n格式为:格式为:WHERE

55、. . . . . n比较运算符包括:比较运算符包括:l 、=、=、=、(或或!=)l 当比较运算符为当比较运算符为=时,表示等值连接时,表示等值连接l 其他运算为非等值连接其他运算为非等值连接l WHERE子句的连接谓词中的属性称为连接属性子句的连接谓词中的属性称为连接属性l 连接属性之间必须具有可比性连接属性之间必须具有可比性数据库系统原理与设计数据库系统原理与设计第第 1 1 章章 数据库系统概论数据库系统概论533.3.1 等值与非等值连接等值与非等值连接n等值连接等值连接l 例例3.27 查找会计学院全体同学的学号、姓名、籍贯、班级编号和所在班级名称查找会计学院全体同学的学号、姓名、

56、籍贯、班级编号和所在班级名称。 该查询的结果为学号、姓名、籍贯、班级编号和班级名称,在该查询的结果为学号、姓名、籍贯、班级编号和班级名称,在SELECT子句子句中必须包含这些属性中必须包含这些属性 由于班级名称和所属学院在班级表由于班级名称和所属学院在班级表Class中,学号、姓名、籍贯、班级编号在中,学号、姓名、籍贯、班级编号在学生表学生表Student中,中,FROM子句必须包含子句必须包含Class表和表和Student表表 由于班级编号由于班级编号classNo既是班级表的主码,也是学生表的外码,这既是班级表的主码,也是学生表的外码,这2个表的连个表的连接条件是接条件是claaaNo相

57、等,在相等,在WHERE子句中必须包含连接条件子句中必须包含连接条件Student.classNo=Class.classNo 本查询要查询出会计学院的学生记录,在本查询要查询出会计学院的学生记录,在WHERE子句中还必须包括选择条子句中还必须包括选择条件件institute=会计学院会计学院数据库系统原理与设计数据库系统原理与设计第第 1 1 章章 数据库系统概论数据库系统概论543.3.1 等值与非等值连接等值与非等值连接 本查询语句为:本查询语句为:SELECT studentNo, studentName, native, Student.classNo, classNameFROM

58、Student, ClassWHERE Student.classNo=Class.classNo AND institute=会计学院会计学院l 在连接操作中,如果涉及到多个表的相同属性名,必须在相同的属性名前加上表名加在连接操作中,如果涉及到多个表的相同属性名,必须在相同的属性名前加上表名加以区分以区分 如如Student.classNo、Class.classNo WHERE子句中子句中 Student.classNo=Class.classNo为连接条件为连接条件 institute=会计学院会计学院 为选择条件为选择条件数据库系统原理与设计数据库系统原理与设计第第 1 1 章章 数据

59、库系统概论数据库系统概论55l 可为参与连接的表取别名可为参与连接的表取别名(称为元组变量称为元组变量),在相同的属性名前加上表的别名。,在相同的属性名前加上表的别名。l 将将Student表取别名为表取别名为a,Class表取别名为表取别名为b,班级编号分别用,班级编号分别用a.classNo和和b.classNo表示。本例可以改写为:表示。本例可以改写为: SELECT studentNo, studentName, native, b.classNo, className FROM Student AS a, Class AS b WHERE a.classNo=b.classNo AN

60、D institute=会计学院会计学院 或者或者 SELECT studentNo, studentName, native, b.classNo, className FROM Student a, Class b WHERE a.classNo=b.classNo AND institute=会计学院会计学院l 对于不同的属性名,可以不在属性名前加上表名对于不同的属性名,可以不在属性名前加上表名(别名别名)。3.3.1 等值与非等值连接等值与非等值连接数据库系统原理与设计数据库系统原理与设计第第 1 1 章章 数据库系统概论数据库系统概论563.3.1 等值与非等值连接等值与非等值连接l

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论