您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > 第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-1SQL-92:在1992年,由ISO和ANSI对SQL-86进行重新修订,该标准也称为SQL-2SQL-99:在1999年,该版本在SQL-2的基础上,扩展了诸多功能,包括递归、触发、面向对象技术等。该标准也称为SQL-3SQL-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,...,RmWHEREPA1,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
本文标题:第03章SQL语言1-4节
链接地址:https://www.777doc.com/doc-2152669 .html