您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > Oracle 10g基础教程06
OracleDatabase10g基础教程(第二版)第6章SQL基础第1页第6章SQL基础本章概述本章要点教学过程OracleDatabase10g基础教程(第二版)第6章SQL基础第2页本章概述SQL语言是一种标准的结构化查询语言(structuredquerylanguage),许多数据库厂商的产品都支持SQL语言。但是,许多数据库厂商在使用SQL语言时,不是简单地把SQL语言照搬过来,而是在SQL语言的基础上进行了扩展,因此形成了不同的语言。例如,在Oracle系统中,经过扩展的SQL语言是PL/SQL语言,这是一种过程SQL语言,是Oracle公司在标准SQL语言的基础上提出的语言。这些扩展语言既与标准的SQL语言兼容,又在标准的SQL语言基础上添加了许多新的功能。这种扩展语言有两个重要的作用,即突出本产品的特点和探索SQL语言的新功能并且为SQL语言的版本升级做贡献。本章介绍Oracle系统的SQL基础。OracleDatabase10g基础教程(第二版)第6章SQL基础第3页本章要点SQL的基本概念和作用SQL与SQL*Plus、PL/SQL之间的关系检索数据排序和分组数据插入、更新和删除数据OracleDatabase10g基础教程(第二版)第6章SQL基础第4页教学过程6.1概述6.2select语句6.3修改数据6.4子查询OracleDatabase10g基础教程(第二版)第6章SQL基础第5页教学过程6.1概述6.2select语句6.3修改数据6.4子查询OracleDatabase10g基础教程(第二版)第6章SQL基础第6页6.1概述本节包括两部分内容。首先,介绍SQL的作用和特点,SQL技术是本章的中心内容;其次,介绍SQL与SQL*Plus、PL/SQL之间的区别和联系,以便更好地学习和理解SQL。OracleDatabase10g基础教程(第二版)第6章SQL基础第7页SQL的作用和特点SQL是结构化查询语言(structurequerylanguage)的简称,是关系型数据库管理系统中最流行的数据查询和更新语言。用户可以使用SQL语言在数据库中执行各种操作。1986年,SQL-86,也被称为SQL-1。1992年,SQL-92,也被称为SQL-2。1999年,SQL-99,也被称为SQL-3。还存在不同的数据库管理系统厂商开发的不同类型的SQL。SQL查询语言包括了所有对数据库的操作,这些操作可以分为4个部分,即数据定义语言、数据操纵语言、数据控制语言和嵌入式SQL语言。OracleDatabase10g基础教程(第二版)第6章SQL基础第8页SQL与SQL*Plus、PL/SQL之间的关系SQL*Plus是一个用于连接Oracle数据库的强大工具。使用该工具,用户可以连接服务器上的数据库,还可以执行许多操作。前一章已经介绍了SQL*Plus的基本功能,下面总结一下SQL*Plus的主要功能特点:–在数据库中执行SQL语言和PL/SQL语言;–更新数据库中的数据;–执行数据查询;–将查询结果集格式化为报表;–建立、编辑、检索和执行SQL脚本;–管理数据库;–描述数据库中的表和PL/SQL对象;–将数据从一个数据库复制到另一个数据库;–向用户发送消息,并接受用户的输入。OracleDatabase10g基础教程(第二版)第6章SQL基础第9页PL/SQLPL/SQL是Oracle系统的过程化编程语言。用户可以使用PL/SQL语言编写在数据库中执行的定制程序和过程代码。如同拥有执行SQL语言的SQL引擎一样,Oracle系统也拥有执行PL/SQL语言的PL./SQL引擎。PL/SQL程序能够存储在数据库中,以便用于用户应用程序和日常操作。这样可以使用户在Oracle数据库设计和规划的编程语言中,实现与用户数据密切相关的业务逻辑。OracleDatabase10g基础教程(第二版)第6章SQL基础第10页教学过程6.1概述6.2select语句6.3修改数据6.4子查询OracleDatabase10g基础教程(第二版)第6章SQL基础第11页6.2select语句数据操纵语言就是那些检索、更新表中数据的语句。这些语句包括select、insert、update、delete等4个语句。本节首先介绍select语句,后面将陆续讲述其他的数据操纵语言。在SQL语言中,最简单的语句是select语句。使用select语句可以检索数据库中的信息。具体地说,使用select语句可以完成选择、投影、连接等运算。OracleDatabase10g基础教程(第二版)第6章SQL基础第12页基本语法在Oracle系统中,select语句的基本语法格式如下:–select[distinct][*,column_name[alias],…]–fromtablename–where–groupby–having–orderbyOracleDatabase10g基础教程(第二版)第6章SQL基础第13页规则一般情况下,在使用SQL语句(包括使用select语句)时,用户应该遵循下面的规则或约定:–除非明确指定,否则SQL语句不区分大小写;–SQL语句可以一行或多行的形式输入;–关键字不能跨行;–为了增强可读性,关键字左对齐;–可以在SQL语句中使用各种制表符和伸缩符号。OracleDatabase10g基础教程(第二版)第6章SQL基础第14页执行SQL语句在Oracle系统中,可以采用下面4种方式之一来执行SQL语句:–在子句的最后添加分号(;);–在缓存区的最后一行的末尾放置斜杠(/);–在SQL提示符末尾放置斜杠(/);–在SQL提示符末尾使用run命令。OracleDatabase10g基础教程(第二版)第6章SQL基础第15页执行select语句如果在select子句后面使用星号(*),则表示检索表中所有的数据,包括所有的列和行。当然,也可以在select子句末尾列出将要检索的数据列名。只要在select子句后面输入相应的列名,即可把指定的列检索出来。在执行select语句时要注意,select子句和from子句都是必须的,缺少任何一个子句都是错误的。在使用select语句执行操作时,不同数据类型的数据显示的方式也不同。OracleDatabase10g基础教程(第二版)第6章SQL基础第16页算术表达式在使用select语句时,对于数字数据和日期数据都可以使用算术表达式。在select语句中可以使用的算术运算符如表6-1所示。在表中,如果某个列中没有值,那么把这种现象称为空值。空值既不是字符串中的空格,也不是数字中的零,而只是表示没有值,这是一种不能使用的值。如果某个列既不是主健约束列,也没有定义为notnull,那么该列就允许为空值。任何数据类型的列都具有这种特性。空值的特性非常奇怪。在算术表达式中,任何包含了空值运算的表达式的结果依然是空值。OracleDatabase10g基础教程(第二版)第6章SQL基础第17页改变列标题在默认情况下,查询结果集中的数据标题是列名。由于在设计数据库过程中,为了简单起见,一般采用缩写的形式命名列名,例如使用sal表示薪水(salary)。但是,以这种缩写方式命名的列名可读性比较差。因此,在查询结果集中,经常需要改变列的标题,特别是在制作报表时。改变列标题的方式为“列名as列标题”。在这种方式中,关键字as可以省略。特别是当列标题中包含了一些特殊的字符,例如空格等时,可以使用双引号将列标题引起来。OracleDatabase10g基础教程(第二版)第6章SQL基础第18页使用where子句使用select语句中的where子句可以限制数据量,实际上,select语句中的where子句可以用来指定检索数据的条件。where子句的语法格式如下:–select[distinct][*,column_name[alias],…]–fromtablename–wherecondition_expression以上的where子句用来指定检索到的数据应该满足指定的条件,参数condition_expression就是用于指定条件。在where子句的条件中,可以比较各种列值、文字串、算术表达式、函数等内容。OracleDatabase10g基础教程(第二版)第6章SQL基础第19页where子句中可用的运算符普通比较运算符就是直接比较两个表达式的运算符。特殊比较运算符,如表6-3所示。使用逻辑运算符的好处在于可以把多个条件连接起来,以便组成复杂的复合条件。OracleDatabase10g基础教程(第二版)第6章SQL基础第20页使用orderby子句在前面介绍的数据检索技术中,只是把数据库中的数据直接取出来。这时,在结果集中数据的排列顺序由数据的存储顺序决定。但是,这种存储顺序经常不符合实际的各种业务需要,因此需要对数据库中的数据在检索时进行排序。在select语句中,可以使用orderby子句执行数据排序操作。使用orderby子句的语法格式如下:–orderby[column_name,expression][asc|desc]OracleDatabase10g基础教程(第二版)第6章SQL基础第21页合计计算合计计算就是把一组数据作为计算的对象而执行的计算,这种计算包括求最大值、平均值、方差等。进行合计计算必须使用Oracle系统提供的合计函数。在Oracle系统中,可以使用的合计函数及其语法和功能如表6-5所示。OracleDatabase10g基础教程(第二版)第6章SQL基础第22页使用字符函数字符函数是对字符表达式进行处理的函数。字符函数的输入是字符表达式(包括表中的列名称),其输出是经过处理的字符表达式。例如,lower()函数可以将字符表达式转换为小写字母,substring()函数将输出某个字符串的子串。在OracleDatabase10g系统中,可以使用的字符函数如表6-6所示。实际上,这些字符函数在许多编程语言中都可以找到。OracleDatabase10g基础教程(第二版)第6章SQL基础第23页使用数学函数数学函数可以用于执行各种数据计算。许多编程语言都提供了大量的数学函数,这也是编程语言最早的功能之一。OracleDatabase10g系统也提供了大量的数学函数,这些函数大大增强了OracleDatabase10g系统的科学计算能力。OracleDatabase10g系统提供了几乎所有常用的数学函数。OracleDatabase10g系统中可用的数学函数如表6-7所示。OracleDatabase10g基础教程(第二版)第6章SQL基础第24页使用转换函数在操纵表中的数据时,经常需要把某个数据从一种数据类型转换为另一种数据类型,这时就需要使用数据转换函数。例如,如果需要把表示价格的数值数据转换成字符数据,则需要使用to_char()函数。OracleDatabase10g系统,提供了许多用于数据类型转换的函数。这些转换函数及其功能如表6-8所示。OracleDatabase10g基础教程(第二版)第6章SQL基础第25页使用groupby和having子句表中包含了许多数据,可以对这些数据按照某个指定的列进行分组,然后使用合计函数计算相应列的合计值。例如,如果需要检索最高薪水和最低薪水的雇员,并返回不同部门中最高薪水和最低薪水的雇员,那么就需要对表中的数据进行分组计算。在Oracle系统中,可以在select语句中使用groupby子句进行分组计算。使用分组计算的语法格式如下:–groupbygroup_by_expression–havinggroup_conditionOracleDatabase10g基础教程(第二版)第6章SQL基础第26页连接查询在设计数据库时,为了满足数据库范式要求,数据分散在不同的表中。但是,在
本文标题:Oracle 10g基础教程06
链接地址:https://www.777doc.com/doc-6370747 .html