第03章SQL语言1-4节

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1北京理工大学珠海学院计算机学院数据库原理与设计张申勇第3章SQL语言_1-4节第3章SQL语言数据库原理与设计人脑不是一个可以灌注知识的容器,而是一个可以点燃的火把。——古希腊生物学家、散文家:普多塔戈2019/12/202北京理工大学珠海学院计算机学院数据库原理与设计张申勇第3章SQL语言_1-4节第3章SQL语言学习目标SQL(StructuredQueryLanguage,结构化查询语言)是关系数据库的标准语言几乎所有的关系型数据库管理系统均采用SQL语言标准教学目标主要有两个:要求读者掌握对数据库的基本操作,并了解数据库管理系统的基本功能要求读者熟练掌握SQL查询语句,并运用SQL语句完成对数据库的操作2019/12/203北京理工大学珠海学院计算机学院数据库原理与设计张申勇第3章SQL语言_1-4节第3章SQL语言学习方法要求读者结合课堂讲授的知识,强化上机实训,把课堂上学过的有关概念进行实训,以便加深理解,达到学习目标。学习指南重点:3.2、3.3、3.4、3.5、3.8和3.9节难点:3.3、3.4和3.5节2019/12/204北京理工大学珠海学院计算机学院数据库原理与设计张申勇第3章SQL语言_1-4节第3章SQL语言本章导读SQL查询语句对关系代数运算做了哪些扩展?连接查询包括哪些?它们分别用于什么地方?相关子查询与非相关子查询的概念。在使用分组聚合查询时需要注意的地方。如何理解存在量词以及存在量词在SQL查询中的重要地位。如何理解查询表的概念,查询表与子查询有何异同点?在SQL的DDL语句中如何实现完整性约束?实现完整性约束的方法有哪些?如何将数据库的对象(如基本表、索引)建立在特定的物理文件上?将数据库对象建立在特定的物理文件上,其目的是什么?建立视图的目的是什么?视图主要用于什么操作?2019/12/205北京理工大学珠海学院计算机学院数据库原理与设计张申勇第3章SQL语言_1-4节目录嵌套子查询3.7SQL概述3.1简单查询3.3连接查询3.53.8聚合查询集合运算SQL查询一般格式SQL数据定义语言SQL数据更新语言视图3.23.43.63.93.102019/12/206北京理工大学珠海学院计算机学院数据库原理与设计张申勇第3章SQL语言_1-4节3.1SQL概述SQL语言于1974年由Boyce等提出,并于1975~1979年在IBM公司研制的SystemR数据库管理系统上实现,现已成为国际标准。很多数据库厂商都对SQL语句进行了再开发和扩展标准SQL命令包括查询SELECT插入INSERT更新UPDATE删除DELETE创建CREATE对象删除DROP可被用来完成几乎所有的数据库操作2019/12/207北京理工大学珠海学院计算机学院数据库原理与设计张申勇第3章SQL语言_1-4节3.1SQL概述3.1.1SQL发展3.1.2SQL特点3.1.3SQL查询基本概念2019/12/208北京理工大学珠海学院计算机学院数据库原理与设计张申勇第3章SQL语言_1-4节3.1.1SQL发展SQL-86:第一个SQL标准,由美国国家标准局(AmericanNationalStandardInstitute,简称ANSI)公布,1987年国际标准化组织(InternationalOrganizationforStandardization,简称ISO)通过。该标准也称为SQL-1SQL-92:在1992年,由ISO和ANSI对SQL-86进行重新修订,该标准也称为SQL-2SQL-99:在1999年,该版本在SQL-2的基础上,扩展了诸多功能,包括递归、触发、面向对象技术等。该标准也称为SQL-3SQL-2003:该标准是最新的标准,也称SQL-4,于2003年发布2019/12/209北京理工大学珠海学院计算机学院数据库原理与设计张申勇第3章SQL语言_1-4节3.1.1SQL发展SQL语言由4部分组成数据定义语言DDL(DataDefinitionLanguage)定义数据库的逻辑结构,包括数据库、基本表、视图和索引等,扩展DDL还支持存储过程、函数、对象、触发器等的定义DDL包括3类语言,即定义、修改和删除数据操纵语言DML(DataManipuplationLanguage)对数据库的数据进行检索和更新,其中更新操作包括插入、删除和修改数据数据控制语言DCL(DataControlLanguage)对数据库的对象进行授权、用户维护(包括创建、修改和删除)、完整性规则定义和事务定义等其它主要是嵌入式SQL语言和动态SQL语言的定义,规定了SQL语言在宿主语言中使用的规则扩展SQL还包括数据库数据的重新组织、备份与恢复等功能2019/12/2010北京理工大学珠海学院计算机学院数据库原理与设计张申勇第3章SQL语言_1-4节3.1.2SQL特点综合统一集数据定义语言DDL、数据操纵语言DML、数据控制语言DCL的功能于一体高度非过程化:描述做什么,不涉及怎么做。面向集合的操作方式采用集合操作方式,其操作对象、操作结果都是元组的集合同一种语法结构提供两种使用方式SQL语言既是自含式语言,又是嵌入式语言。在两种不同的使用方式下,其语法结构基本上是一致的语言简洁,易学易用SQL语言的动词非常少,主要包括:数据查询SELECT;数据定义CREATE、DROP、ALTER;数据操纵INSERT、UPDATE、DELETE;数据控制GRANT、REVOKE2019/12/2011北京理工大学珠海学院计算机学院数据库原理与设计张申勇第3章SQL语言_1-4节3.1.3SQL查询基本概念SQL语言支持三级模式结构,外模式对应视图和部分基本表,模式对应基本表,内模式对应存储文件SQL视图1视图2基本表1基本表2基本表3基本表4存储文件1存储文件2外模式模式内模式2019/12/2012北京理工大学珠海学院计算机学院数据库原理与设计张申勇第3章SQL语言_1-4节3.1.3SQL查询基本概念基本表数据库中独立存在的表称为基本表在SQL中一个关系对应一个基本表一个(或多个)基本表对应一个存储文件一个表可以带若干索引索引存放在存储文件中视图指从一个或几个基本表(或视图)导出的表,是虚表只存放视图的定义而不存放对应数据查询表指查询结果对应的表存储文件指数据库中存放关系的物理文件2019/12/2013北京理工大学珠海学院计算机学院数据库原理与设计张申勇第3章SQL语言_1-4节目录嵌套子查询3.73.1简单查询3.33.53.8聚合查询集合运算SQL查询一般格式SQL数据定义语言SQL数据更新语言视图3.23.43.63.93.10SQL概述连接查询2019/12/2014北京理工大学珠海学院计算机学院数据库原理与设计张申勇第3章SQL语言_1-4节3.2简单查询本章所用的数据库为学生成绩管理数据库ScoreDB,其数据库模式如图3-2、3-3、3-4、3-5所示2019/12/2015北京理工大学珠海学院计算机学院数据库原理与设计张申勇第3章SQL语言_1-4节3.2简单查询2019/12/2016北京理工大学珠海学院计算机学院数据库原理与设计张申勇第3章SQL语言_1-4节3.2简单查询2019/12/2017北京理工大学珠海学院计算机学院数据库原理与设计张申勇第3章SQL语言_1-4节3.2简单查询2019/12/2018北京理工大学珠海学院计算机学院数据库原理与设计张申勇第3章SQL语言_1-4节3.2简单查询3.2.1投影运算3.2.2选择运算3.2.3排序运算3.2.4查询表2019/12/2019北京理工大学珠海学院计算机学院数据库原理与设计张申勇第3章SQL语言_1-4节3.2.1投影运算SQL基本结构包括3个子句:SELECT子句对应投影运算,指定查询结果中所需要的属性或表达式FROM子句对应笛卡尔积,给出查询所涉及的表,表可以是基本表、视图或查询表WHERE子句对应选择运算(包括连接运算所转化的选择运算),指定查询结果元组所需要满足的选择条件SELECT和FROM是必须的,其他是可选的2019/12/2020北京理工大学珠海学院计算机学院数据库原理与设计张申勇第3章SQL语言_1-4节3.2.1投影运算基本语法为:SELECTA1,A2,...,AnFROMR1,R2,...,RmWHEREPA1,A2,...,An代表需要查找的属性或表达式R1,R2,...,Rm代表查询所涉及的表P代表谓词(即选择条件),如果省略WHERE子句,表示P为真SQL的查询结果中允许包含重复元组SQL执行过程(逻辑上的理解):首先对R1,R2,...,Rm执行笛卡尔积然后在笛卡尔积中选择使得谓词P为真的记录再在A1,A2,...,An属性列中进行投影运算,不消除重复元组如需消除重复元组,必须使用关键字DISTINCT刚才描述的SQL查询执行过程只是逻辑上的,在具体执行时会进行优化处理,查询优化的内容详见第7章。2019/12/2021北京理工大学珠海学院计算机学院数据库原理与设计张申勇第3章SQL语言_1-4节3.2.1投影运算查询指定列选取表中的全部列或指定列,通过SELECT确定要查询的属性[例3.1]查询所有班级的班级编号、班级名称和所属学院SELECTclassNo,className,instituteFROMClass该查询的执行过程是:从Class表中依次取出每个元组对每个元组仅选取classNo、className和institute三个属性的值,形成一个新元组最后将这些新元组组织为一个结果关系输出该查询的结果如图3-10所示2019/12/2022北京理工大学珠海学院计算机学院数据库原理与设计张申勇第3章SQL语言_1-4节3.2.1投影运算消除重复元组需要消除重复元组,使用DISTINCT关键字[例3.2]查询所有学院的名称。SELECTinstituteFROMClass上述查询不消除重复元组,其查询结果如图3-11所示消除重复元组,查询结果如图3-12所示SELECTDISTINCTinstituteFROMClass图3-11图3-122019/12/2023北京理工大学珠海学院计算机学院数据库原理与设计张申勇第3章SQL语言_1-4节3.2.1投影运算查询所有列可使用两种方法:将所有的列在SELECT子句中列出(可以改变列的显示顺序);使用*符号,*表示所有属性,按照表定义时的顺序显示所有属性[例3.3]查询所有班级的全部信息。SELECTclassNo,className,classNum,grade,instituteFROMClass或SELECT*FROMClass2019/12/2024北京理工大学珠海学院计算机学院数据库原理与设计张申勇第3章SQL语言_1-4节3.2.1投影运算给属性列取别名可为属性列取一个便于理解的列名,如用中文来显示列名为属性列取别名特别适合经过计算的列[例3.4]查询所有班级的所属学院、班级编号和班级名称,要求用中文显示列名SELECTinstitute所属学院,classNo班级编号,className班级名称FROMClass查询结果如图3-13所示。该查询可使用AS关键字取别名:SELECTinstituteAS所属学院,classNoAS班级编号,classNameAS班级名称FROMClass2019/12/2025北京理工大学珠海学院计算机学院数据库原理与设计张申勇第3章SQL语言_1-4节3.2.1投影运算查询经过计算的列可使用属性、常数、函数和表达式[例3.5]查询每个班级编号、班级名称以及该班级现在为几年级,并将班级编号中大写字母改为小写字母输出SELECTlower(cl

1 / 85
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功