《Oracle10g数据库开发培训教程1.doc》由会员分享,可在线阅读,更多相关《Oracle10g数据库开发培训教程1.doc(30页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、.1/30目录目录目录 1第 1 章数据库概述 21.1 数据库系统概述 21.1.1 信息、数据与数据库 21.1.2 数据管理技术的发展 21.1.3 数据库系统(Database System DBS)的组成 31.1.4 数据库系统的模式结构 31.1.5 数据库系统的特点 41.2 数据模型 41.3 数据描述 51.4 关系数据库 51.5 数据库管理系统 61.5.1 几个常用的数据库管理系统 61.5.2 Oracle 数据库简介 61.5.3 Oracle 10g 数据库系统与 Navicat 的安装 71.6 本章知识点总结 9第 2 章 Oracle 10g 数据库的 S
2、QL 语言与查询 102.1 SQL 语言概述 102.2 Oracle 10g 数据库的数据类型、运算符和表达式 102.2.1 简单数据类型 102.2.2 运算符 102.2.3 表达式 102.3 Oracle 10g 的 SELECT 查询语句 102.3.1 简单查询(selectfrom 结构)102.3.2 带条件的简单查询(selectfromwhere结构)112.3.3 单表查询的应用 112.3.4 多表查询 122.3.5 子查询 122.3.6 作业 13.2/30第第 1 1 章章 数据库概述数据库概述1.11.1 数据库系统概述数据库系统概述1.1.11.1.1
3、 信息、数据与数据库信息、数据与数据库信息是一种已经被加工为特定形式的数据,数据是信息的载体和具体表现形式,信息不随数据形式的变化而变化。很多人认为数据就是数(数字组成),实际上数据的有很多种形式:文字、数字、声音、图像等。数据和信息时两个相互联系但又相互区别的概念,数据是信息的具体表现形式,信息时数据有意义的表现,而数据库是一个可以共享的、存储在计算机的、有组织的数据集合。1.1.21.1.2 数据管理技术的发展数据管理技术的发展数据管理技术的发展分为:人工管理、文件管理、数据库管理(分布式数据库管理、面向对象的数据库管理)等几个阶段。1、人工管理阶段2、文件管理阶段3、数据库管理阶段4、三
4、个阶段数据管理技术比较.3/301.1.31.1.3 数据库系统数据库系统(Database(Database SystemSystem DBS)DBS)的组成的组成数据库系统由计算机硬件、数据库管理系统(DBMS)(与其开发工具)、数据库(DB)、应用程序和用户等几部分组成。1、硬件平台有足够大的存,存放 OS、DBMS 的核心模块、数据缓冲区和应用程序。有足够大的磁盘,存放数据库,并进行数据备份。有较高的通道能力,以提供高速的数据传输功能。2、软件平台DBMS:是数据库的建立、使用和维护所必需的系统软件。OS:支持 DBMS 的操作系统平台。程序设计语言:与数据库系统有接口的程序设计语言与
5、其编译系统,用于开发应用程序。开发工具与环境:为数据库系统的开发和应用提供良好的环境。应用程序:为特定应用环境而开发的数据库应用系统。3、人员1)数据库管理员(DataBase Administrator,简称 DBA):数据库系统需要有专门的人员来监督和管理。DBA 负责全面管理和控制数据库系统。具体职责包括:决定数据库中的信息容和结构决定数据库的存储结构和存取策略定义数据的安全性要求和完整性约束条件监控数据库的使用和运行负责数据库的改进和重组重构工作2)系统分析员负责应用系统的需求分析和规说明工作,要和用户以与 DBA 相互沟通,确定系统的硬件、软件配置,并参与数据库系统的概要设计。3)数
6、据库设计员负责数据库中数据的确定、数据库各级模式的设计。数据库设计人员必须参加用户需求调查和系统分析,然后进行数据库设计。4)应用程序员负责设计和编写数据库应用系统的程序模块,并进行调试和安装。5)最终用户通过数据库应用系统的用户界面使用数据库。DBS:DBMSDBDBA1.1.41.1.4 数据库系统的模式结构数据库系统的模式结构数据库系统的结构由部级、概念级、外部级三级模式组成。1、部级模式(模式):最靠近物理存储器,是数据在数据库系统中的表示(即对数据的物理结构和存储方式的描述),是物理数据模型对数据的描述。2、概念级模式(模式):间于上述两者之间。它又称为逻辑模式,是用逻辑数据模型对一
7、个单位的数据的描述,是数据库中的全体数据的逻辑结构和特性的描述。3、外部级模式(外模式):又称子模式或用户模式,是数据库用户看到的数据视图。最靠近用户,是用户和数据库的接口,设计有数据提供给用户的使用方式。支持以上三级模式的计算机程序就是数据库管理系统(DBMS)。数据库的三级模式结构图如下:.4/304、三级模式构成了两个映射1)外模式模式映象对于每一个外模式,数据库系统都有一个外模式模式映象,它定义了该外模式与模式之间的对应关系。这些映象定义通常包含在各自外模式的描述中。当模式改变时,由数据库管理员对各个外模式模式的映象作相应改变,可以使外模式保持不变,从而应用程序不必修改,保证了数据的逻
8、辑独立性。2)模式模式映象数据库中只有一个模式,也只有一个模式,所以模式模式映象是唯一的,它定义了逻辑结构与存储结构之间的对应关系。该映象定义通常包含在模式描述中。当数据库的存储结构改变了(例如采用了更先进的存储结构),由数据库管理员对模式模式映象作相应改变,可以使模式保持不变,从而保证了数据的物理独立性。1.1.51.1.5 数据库系统的特点数据库系统的特点1、实现数据共享、减少数据冗余2、采用特定的数据模型3、具有较高的数据独立性4、有统一的数据控制功能1.21.2 数据模型数据模型数据模型的作用是在计算机环境中把数据逻辑地组织成为数据库,使得用户能够有效地存取和处理数据。1、层次模型数据
9、结构是有序的树型结构,基本特征是:(l)有且只有一个结点无双亲,该结点称为根结点;(2)其他结点有且只有一个双亲。R1 是根结点,R2 和 R3 是 R1 的子结点,因此它们是兄弟结点。R2、R4、R5 是叶结点。2、网状模型网状模型的特征是:(l)允许有一个以上的结点没有双亲;(2)结点可以有多于一个的双亲。.5/303、关系模型1)关系模型中的数据在用户观点下的逻辑结构是二维表,而关系模型是建立在集合代数的基础上的。在网状和层次模型中的联系都是通过指针来实现的,而在关系模型中的基本数据结构是表格,记录之间的联系是通过各个关系模式的关键码来体现的。以二维表格描述简单、易懂,用户只需简单查询语
10、句就可以对数据库进行操作,并不涉与存储结构和访问技术的细节等。2)在关系模型中,关系具有以下基本特点:关系必须规化,属性不可分割。在同一关系中不允许出现一样的属性名。在同一关系中元组与属性的顺序可以任意。任意交换两个元组(属性)的位置,不会改变关系模式。3)每个关系都有一个关系模式,它是该关系的关系名与其全部属性名的集合,一般表示为:关系名(属性名 1,属性名 2,属性名 n)1.31.3 数据描述数据描述1、计算机处理信息的过程首先从现实世界中抽象出大量描述客观事物的信息,再对这些信息进行整理、分类和规,进而将规化的信息数据化,最终实现由数据库系统存储、处理。即客观世界信息世界数据世界2、实
11、体与属性3、实体之间的关系1)一对一的联系(1:1),如班长与班级2)一对多的联系(1:n),如班级与学生3)多对多的联系(m:n),如教师与学生1.41.4 关系数据库关系数据库1、关系数据库的定义关系数据库是建立在关系模型基础上的数据库,它由一些相关的表和其它的数据库对象组成。这个定义包含了如下几层含义:.6/301)建立在关系模型基础上;2)信息被存放在表(二维表)中;3)表之间是相互联系的;4)除了表之外,还有其它的数据库对象如索引、视图、存储过程等。2、关系数据库的主要功能和特征1)数据定义,定义和删除数据库中的表、索引、视图等数据库对象。2)数据操纵,实现对数据库中数据的操作,基本
12、的操作有查询、数据插入、数据删除和数据修改。3)数据控制,主要控制数据库的安全,包括操作权限的用户密码和存储权限等。4)事务管理。3、几个概念关系二维表;元组记录;属性字段;实体型、实体集。1.51.5 数据库管理系统数据库管理系统1.5.11.5.1 几个常用的数据库管理系统几个常用的数据库管理系统ACCESS、SQL Server、FoxPro、Oracle、MySQL 和 Sybase 等。ACCESS 是美国 Microsoft 公司于 1994年推出的微机数据库管理系统.它具有界面友好、易学易用、开发简单、接口灵活等特点,是典型的新一代桌面数据库管理系统。Oracle 公司是全球最大
13、的信息管理软件与服务供应商,成立于 1977 年,总部位于美国加州 Redwoodshore。Oracle 提供的完整的电子商务产品和服务包括:用于建立和交付基于 Web 的 Internet 平台;综合、全面的具有 Internet 能力的商业应用;强大的专业服务,帮助用户实施电子商务战略,以与设计、定制和实施各种电子商务解决方案。.SQL 是英文 Structured Query Language 的缩写,意思为结构化查询语言。SQL 语言的主要功能就是同各种数据库建立联系,进行沟通。按照 ANSI(美国国家标准协会)的规定,SQL 被作为关系型数据库管理系统的标准语言。SQL 语句可以用
14、来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。目前,绝大多数流行的关系型数据库管理系统,最大区别:ACCESS 的功能相对不是那么强大,主要是开发单机版软件中经常用到;SQL Server 是目前应用比较广泛和普遍的一款数据库,是数据库发展的一个里程碑。Oracle 的功能是比较强大的,一般用于超大型管理系统软件的建立,现在的应用围也已经比较广泛。1.5.21.5.2 OracleOracle 数据库简介数据库简介1、什么是 Oracle 数据库oracle 数据库是一种大型数据库系统,一般应用于商业,政府部门,它的功能很强大,能够处理大批量的数据,在网络方面也用的非常多
15、。不过,一般的中小型企业都比较喜欢用 SQL 数据库系统,它的操作很简单,功能也非常齐全。只是比较 oracle 数据库而言,在处理大量数据方面有些不如。2、Oracle 数据库的发展历程(时间可能不太准确,但大致差不多)1977年,Larry Ellison、Bob Miner和Ed Oates等人组建了Relational软件公司(Relational SoftwareInc.,RSI)。他们决定使用 C 语言和 SQL 界面构建一个关系数据库管理系统(Relational DatabaseManagement System,RDBMS),并很快发布了第一个版本(仅是原型系统)。1979
16、年,RSI 首次向客户发布了产品,即第 2 版。该版本的 RDBMS 可以在装有 RSX-11 操作系统的 PDP-11机器上运行,后来又移植到了 DEC VAX 系统。1983 年,发布的第 3 个版本中加入了 SQL 语言,而且性能也有所提升,其他功能也得到增强。与前几个版本不同的是,这个版本是完全用 C 语言编写的。同年,RSI 更名为 Oracle Corporation,也就是今天的 Oracle 公司。1984 年,Oracle 的第 4 版发布。该版本既支持 VAX 系统,也支持 IBM VM 操作系统。这也是第一个加入了读一致性(Read-consistency)的版本。.7/
17、301985 年,Oracle 的第 5 版发布。该版本可称作是 Oracle 发展史上的里程碑,因为它通过 SQL*Net 引入了客户端/服务器的计算机模式,同时它也是第一个打破 640KB 存限制的 MS-DOS 产品。1988 年,Oracle 的第 6 版发布。该版本除了改进性能、增强序列生成与延迟写入(Deferred Writes)功能以外,还引入了底层锁。除此之外,该版本还加入了 PL/SQL 和热备份等功能。这时 Oracle 已经可以在许多平台和操作系统上运行。1991 年,Oracle RDBMS 的 6.1 版在 DEC VAX 平台中引入了 Parallel Serve
18、r 选项,很快该选项也可用于许多其他平台。1992 年,Oracle 7 发布。Oracle 7 在对存、CPU 和 I/O 的利用方面作了许多体系结构上的变动,这是一个功能完整的关系数据库管理系统,在易用性方面也作了许多改进,引入了 SQL*DBA 工具和 database角色。1997 年,Oracle 8 发布。Oracle 8 除了增加许多新特性和管理工具以外,还加入了对象扩展(ObjectExtension)特性。2001 年,Oracle 9i release 1 发布。这是 Oracle 9i 的第一个发行版,包含 RAC(Real ApplicationCluster)等新功能
19、。2002 年,Oracle 9i release 2 发布,它在 release 1 的基础上增加了集群文件系统(Cluster FileSystem)等特性。2003 年 9 月,Oracle 发布了 Oracle 10g这一版的最大的特性就是加入了网格计算的功能。该版本中 Oracle 的功能、稳定性和性能的实现都达到了一个新的水平。2007 年 7 月 11 日,Oracle 发布了 Oracle 11g Oracle 11g 是甲骨文公司 30 年来发布的最重要的数据库版本根据用户的需现了信息生命周期管(Information sLifecycle Management)等多项创新。
20、3、Oracle 10g 的技术特点1)网格化管理2)自动存储管理3)可移植的集群组建4)支持高速无限带宽网络5)计算资源供应6)共振1.5.31.5.3 OracleOracle 10g10g 数据库系统与数据库系统与 NavicatNavicat 的安装的安装1、安装 Oracle 10g2、启动 Oracle 10g 的方法1)用 ms-dos 启动:在开始菜单中找“运行 SQL 命令行”,在 SQL后输入连接数据库的命令“connect”,输入用户名、密码,密码是不回显的。2)在开始菜单中找“转至数据库主页”,启动 oracle 的企业管理器.8/303)执行命令:select tab
21、le_name from user_tables;User_tables 是 oracle 数据库自己的一个数据词典3、安装 Navicat:安装 navicat 成功后,创建连接,设置 OCI,具体做法是:1)创建连接2)设置 OCI,如果不设置则 navicat 下的命令行等不可用菜单 toolsoptionsOCI选定 OCI 后,设置两个路径如下:OCI library 的路径:C:oraclexeapporacleproduct10.2.0serverBINoci.dllSQL*Plus 的路径:C:oraclexeapporacleproduct10.2.0serverBINsql
22、plus.exe4、Oracle 安装成功后,新建一个用户 root,用 navicat 把 root.sql 导入数据库1)创建用户的方法首先要用 system 或 sys 用户登录,得到:.9/30然后得到输入用户信息的界面:注意:把角色、直接授予的系统权限中所有的选项都选上。最后点击创建按钮,完成创建。2)对已经创建的用户还可以删除。3)用 navicat 把 root.sql 导入。1.61.6 本章知识点总结本章知识点总结1、数据管理技术发展的几个阶段:人工管理阶段、文件管理阶段、数据库管理阶段、分布式数据库管理、面向对象的数据库管理。2、DBS 包括:DBMS、DB、DBA 等。3
23、、数据库系统的模式:外模式、模式(概念模式)、模式,它们构成了“外模式/模式”和“模式/模式”两个映射。4、数据模型:层次模型、网状模型、关系模型。5、关系模式的表示方法:关系名(属性名 1,属性名 2,属性名 n)6、关系数据库,建立在关系模型基础上,而形成的数据库。7、几个概念:关系二维表;元组记录;属性字段8、常用的数据库管理系统:Oracle、MySQL、SQL Server、DB2、Sybase、FoxPro、ACCESS 等等。.10/30第第 2 2 章章 OracleOracle 10g10g 数据库的数据库的 SQLSQL 语言与查询语言与查询2.12.1 SQLSQL 语言
24、概述语言概述SQL(Structured Query Language)是一种结构化查询语言,简称为 SQL。它是一种面向数据库的通用数据处理语言规,能完成数据查询、插入修改删除数据、生成修改和删除数据库对象、数据库安全控制、数据库完整性与数据保护控制等。我们的重点是 CRUD(create、research、update、delete)即增删改查。SQL 的优点:1)非过程化语言(只需告诉系统做什么、而不需告诉它怎么做);2)统一的语言(DBMS为对数据库操作的全部任务都统一在 SQL 语言中);3)它是所有关系数据库的公共语言。2.22.2 OracleOracle 10g10g 数据库的
25、数据类型、运算符和表达式数据库的数据类型、运算符和表达式2.2.12.2.1 简单数据类型简单数据类型1、number(p,s),p 是数字的整个位数,是小数点后的位数2、varchar2(n),表示可变长度的字符串且其最大长度为 n,n 不能超过 4000。3、char(n),表示固定长度为 n 的字符串。4、date,表示日期,包括年份、月份。5、nvarchar2,不区分中英文,nvarchar2 中存的英文字母也占两个字节。6、nchar,用 Uicode 字符集存储定长的字符数据。7、CLOB:存储4GB 单字节字符数据。(别用来存中文)8、BLOB:用来存储4GB 无结构的二进制数
26、据。9、timestamp10、binary_float11、binary_double2.2.22.2.2 运算符运算符1、算术运算符:+、-、*、/2、比较运算符:=、!=()、=3、逻辑运算符:and、or、not4、围运算符:betweenand、not betweenand5、列表运算符:in、not in6、is、not is2.2.32.2.3 表达式表达式1、算术表达式:用算术运算符连接的表达式。2、关系表达式:用比较运算符连接的表达式。3、逻辑表达式:用逻辑运算符连接的表达式。2.32.3 OracleOracle 10g10g 的的 SELECTSELECT 查询语句查询语
27、句1)查什么;2)从哪里查;3)需要什么条件1、查看表结构的命令:describe tablename;或 desc tablename;2.3.12.3.1 简单查询(简单查询(selectselectfromfrom 结构)结构)1、基本格式如下SELECT*|字段名列表 FROM 表名;2、举例:1)select*from student;/查询所有行所有列2)查询指定的某些列.11/303)查询结果显示时,有它们的默认显示规则,如日期型和字符型的左对齐,数值型的右对齐。4)查询的时候可以使用算术运算符在 select 后,与对字段进行四则运算。select studentid,stud
28、entname,studentage+1 from student;|字符串连接运算符5)排重 distinct6)给字段起别名select studentid 学号,studentname,studentsex 性别 from student;或者select studentid as 学号,studentname as,studentsex as 性别 from student;2.3.22.3.2 带条件的简单查询(带条件的简单查询(selectselectfromfromwherewhere结构)结构)1、基本格式如下SELECT*|字段名列表FROM 表名WHERE 条件表达式;2、
29、具体实例1)单条件的查询查询工资高于 3000 元的教工信息select*from teacher where salary30002)组合条件的查询查询工资不低于 3000 元的女教工信息select*from teacher where salary=3000 and sex=女2.3.32.3.3 单表查询的应用单表查询的应用1、关键字 DISTINCT 的使用查询教师表看看有几个教研室2、关键字 BETWEENAND的使用查询总工资在4000,7000之间的教工信息select teachername,salary+bonus as 总工资 from teacher where sal
30、ary+bonus between 4000 and7000;3、通配符%和_的使用(模糊查询)注意:转义字符的使用。like s_%escape :这里用到了转义字符,表示的意思是以“s_”开头的字符串,而 s_%等价于 s%select*from sc where studentidlike s_%escape ;注意:进行模糊查询时用 like 关键字,而不用等号=4、关键字 NULL 和 NOT NULL 的使用查询没有奖金的教工信息字段名 is not null对 null 或 not null 查询时,不能用等号=而用 is.12/305、用 ORDER BY 子句为查询结果排序(
31、多字段排序)6、字段运算查询(可以对字段进行简单的算术运算,如+、-、*、/)在 navicat 的命令行,可以使用“set linesize 300;”命令来设置当行显示字符的数量。7、别名的使用1)格式:字段名 AS 别名2)注意:(1)别名不改变数据库的值。(2)如果别名中含有特殊字符(如:空格)和特殊的要求(如:所有字母大写显示等)要用双引号“”把别名引起来。3)举例2.3.42.3.4 多表查询多表查询多表查询是指查询结果要从两个以上的表中检索结果,这里仅仅介绍一种简单的多表查询。1、查询“寻欢”所在部门的地址。2、查询“过”所在部门的。或者select departmenttel
32、from department where departmentid in(select departmentid from teacher where teachername=过);注意:1)字符串只能用单引号,而不能用双引号”,双引号有特殊的用途。2)in 的用法3、分析总结:1)注意给表起别名。2)select 的后字段名用“表名.字段名|表别名.字段名”表示,特别是查询结果中有的字段名在 from后的表中都是一样的,那么这个字段名必须指出是哪个表的。如果没有这种现象,那么只用字段名即可。3)SQL 标准指定当为表名创建别名后,SQL 语句的其余部分必须使用该别名引用表(即不能再使用原始
33、表名)。2.3.52.3.5 子查询子查询如果一个 select 命令(查询 1)出现在另一个 select 命令(查询 2)的一个子句中,则称查询 1 是查询 2 的子查询,又称为“嵌套查询”。外层的 select 语句称为“父查询”,层的 select 语句称为“子查询”。子查询可以嵌套多层,子查询操作的数据表可以是父查询不操作的数据表。1、查询所有高于康工资的教师信息。select*from teacher where salary(select salary from teacher where teachername=康);.13/302、查询出跟寻欢在同一个教研室、而且工资大于王五
34、的工资的所有教员的和工资。练习:1、查询与寻欢在同一个教研室工作的教师的。2、查询不于低软件教研室任何一名教工工资的教工SELECT TEACHERNAME FROM TEAchER where salary=all(select salary from teacher wherestaffroom=软件)3、检索已经开设课程的部门信息3、特点:1)子查询的结果仅返回一行(一个)记录,这时可以用算术比较符:、=、=、BETWEEN.AND.、IN、IS NULL、NOT、AND、OR、子查询ORDER BY字段 1,字段 2 ASC|DESC.15/30第二天2.42.4 OracleOrac
35、le 10g10g 单行函数和聚合函数单行函数和聚合函数函数是一种有 0 个或多个参数并且有一个返回值的程序,Oracle 的函数主要分为两大类:单行函数和聚合函数(组函数)。SQL 和 PL/SQL 中自带很多类型的函数,如字符、数字、日期、转换和混合型等多种函数用于处理单行数据,这些函数统称为单行函数,这些函数均可用于 select、where、order by 等子句中。当需要对查询结果的数据行的同类信息合并在一起操作时,就需要用聚合函数来汇总这些数据行;oracle 提供了基于组的多行函数,它们可以在 select 或 select 的 having 子句中使用。2.4.12.4.1
36、单行函数单行函数单行函数对查询的表或视图的每一行返回一个结果行,分为:数值函数、字符函数、日期函数、转换函数等。单行函数也可以使用在 update 的 set 子句中、insert 的 values 子句中、delete 的 where 子句中等,但重点是用在 select 子句。哑表:哑表:dual 是 oracle 提供一个特使的表,主要用于测试函数。2.4.1.1 NVL 函数因为在我们的表中经常会有 null 值出现,而 null 无法参与其它的运算,如 salary+null 是非法的,为了解决这个问题,系统提供了 NVL 函数专门处理 null。1)该函数的格式:NVL(x1,x2
37、)其中 x1,x2 都是表达式,当 x1 的值为 null 时返回 x2 的值,否则返回 x1 的值。2)举例,找出问题所在先看上述语句会出现什么问题,解决办法如下:注意:x1、x2 的数据类型要相匹配。2.4.1.2 字符串函数1)ASCII(c):返回字符 c 的 ASCII 码值(十进制数)。2)CHR(i):返回整数 i 对应的字符。3)CONCAT(C1,C2):连接字符串 C1 和 C2。注意一个字符串的连接运算符:|,如:select:|teachername from teacher4)INITCAP(C):返回字符串 C,并将 C 中的每个单词的第一个字母大写,其它字母小写。
38、5)INSTR(C1,C2,i,j):在一个字符串中搜索指定的字符,返回发现指定的字符的位置。C1 是被搜索的字符串,C2 是搜索的字符串,i 是搜索的开始位置(默认为 1),j 是出现的次数(默认为 1)例如:求“oracle traing”中从第 1 个字符开始tr第 2 次出现的位置。Select instr(oracle training,ra,1,2)from dual;6)LENGTH(C):返回字符串 C 的长度,注意一个汉字和一个字母的长度都是 17)LOWER(C):返回字符串 C 的所有字符为小写。8)UPPER(C):返回字符串 C 的所有字符为大写。9)LPAD(C1,
39、C2):C1、C2 均为字符串,i 为整数。在 C1 的左侧用 C2 补足长度 i,可多次重复;如果 i 小于 C1 的长度,只返回 i 那么长的 C1 字符,其它的被截去;C2 的缺省值为单空格。例如:在字符串幸福的右边用*补足到 10 个字符,然后在结果的左边用&补足到 17.16/30个字符。SQL select LPAD(Rpad(幸福,10,*),17,&)FROM DUAL;说明:lpad 是左填充,rpad 是右填充。10)LTRIM(C)和 RTRIM(C):分别是删除 C 的前导空格和删除 C 尾部空格。11)TRIM(C):既删除 C 的前导空格又删除 C 尾部的空格。12
40、)SUBSTR(string,start,count):从母串 string 中取从 start 开始的 count 个字符作为一个子串返回。13)Replace(string,s1,s2):用 s2 替换出现在 string 中的 s1 字符串。如:select replace(aabbccddeeaaa,aa,AA)FROM DUAL;14)TRANSLATE(C1,C2,C3):它是分级替换的,具体做法如下:a)若在 C1 中能找到与 C2 全部一样的,就用 C3 把相应的字符全部代替。(第一级)结果:b)若在 C1 中能找到与 C2 部分一样的,就用 C3 中与 C2 对应位置上的字符
41、代替(第二级)。可分如下三种情况:I)若 C2 长度等于 C3 的长度,做对应位置字符替换。结果:Ii)若 C2 长度大于 C3 的,相当于把 C3 的末尾加上几个空串直到与 C2 长度一样,然后再做对应位置字符替换。结果:Iii)若 C2 长度小于 C3 的,相当于只保留 C3 前面的与 C2 长度的字符串,然后再做对应位置字符替换。实际上这种情况与 I)是一样的。结果:2.4.1.3 数值函数1)ABS(a):求指定数 a 的绝对值。2)EXP(n):返回 e 的 n 次幂。3)MOD(m,n):返回 m 除以 n 的余数。4)ROUND(n1,n2):n2=0 的正整数时返回 n1 所保
42、留的小数位数,其余的被舍入掉;n2工龄*12作为条件。2.4.1.5 转换函数转换函数是在日期、字符和数值之间的相互转换。1、to_char(number/date,format-model):按照 format-model 的格式把数值 number 或日期 date转换为相应的字符串。1)例如:select to_char(sysdate,yyyy-mm-dd)from dual;2)有关 format-model 的说明:(1)日期的显示格式:YYYY:4 位年份YY:两位年份Year:年的英文全名 如 nineteen nityeightMM:月的两位数字Month:月的英文全名 如
43、MAYMON:英文月的前三位简写 如 OCTDAY:星期几的英文全名 如 MondayDD:2 位日期(2)数字的显示格式:9:代表一个数字位0:代表数字前面补 0,如 to_char(-1200,000000.00)的结果:.:小数点的位置,:标记数字位置的逗号L:根据数据库字符集加货币符号 如 to_char(-1200,L9999.99);结果:.18/30$:给浮点数增加$结果:To_char 函数中 format-model 固定格式:9代表一个数字0强迫 0 显示$显示美元符号L强制显示一个当地的货币符号.显示一个小数点,显示一个千位分隔符号2、to_date(c,format-m
44、odel):c 表示字符串,format-model 表示一种特殊格式的字符串。返回 format-model 格式的字符串 c 所对应的日期。其实该函数将字符串 c 转换为 date 数据类型。如:3、to_number(c):c 表示字符串,format-model 表示一种特殊格式的字符串。返回 format-model 格式的数字。其实该函数将字符串 c 转换相应的数值。2.4.22.4.2 聚合函数(组函数)聚合函数(组函数)2.4.2.1 聚合函数的应用1、MAX(x):返回某个字段的所有值中的最大值。2、MIN(x):返回某个字段的所有值中的最小值。例如:查询教工中工资最高和最低
45、的员工3、AVG(x):返回指定字段中的平均值。注意 avg()函数只对数值型字段使用,即 x 的的数值类型只能是数值型的,如果空值,忽略不计。4、COUNT(*):返回查询中行的数目,*表示返回所有的行,用来统计一个表中有多少条记录(包含有空值的记录)。5、SUM(x):返回选择列表项目 x 的数值的总和。2.4.2.2 GROUPBY 子句的应用聚合函数一般是处理那些已经分好组的数据,分组可以用 group by 子句来完成。例如:1、统计各教研室的人数.19/302、求各个教研室中的最高工资2.4.2.3 HAVING 与 WHERE 关键字的使用这两个都是条件子句,where 主要与
46、select 搭配使用,而 having 只能出现在有 group by 子句的 sql语句中。注意,聚合函数不能出现 where 子句中。例题:1)查询教研室工资总和超过 10000 元的教研室2)查询除了助教外哪些教研室的工资总和多于 8000 元。2.4.2.4 ORDER BY 子句的使用使用 order by 子句可以对查询结果进行排序,其中包括升序(asc,缺省值)和降序(desc)。举例:2.52.5OracleOracle 10g10g 集合运算集合运算进行如下三种集合运算的条件:字段个数一样、对应列的类型匹配。1、Union 并例如:结果是两个查询结果的并集,若有重复的记录,
47、则只取它们中的一条。2、Intersect 交结果为空3、Minus 差两个集合 A、B,A-B 的结果是从 A 中去掉 A 与 B 共同的元素而剩余的元素。A-B=A-AB2.62.6 作业作业1、统计每个班的学生数.20/302、统计每个专业的学生数3、查询每个教研室中的最低或最高总工资,并按总工资降序排列。4、查询每个多于 1 人的教研室中最高和最低总工资,要求显示出教研室名、人数、最低工资和最高工资。5、查询至少有 3 人的教研室的名称与人数。6、求每个教研室的平均工资(要求看到教研室名称、人数和平均工资)。第二天总结1、单行函数2、聚合函数:min()、max()、sum()、avg
48、()、count()等3、Select 查询语句扩充SELECT DISTINCT*,column alias,.FROMtable1,table2WHEREcondition(s)GROUP BY column HAVING condition(s)ORDER BY column,expr,aliasASC|DESC;4、三种集合运算:union、intersect、minusOracle 第三天上午2.72.7 深入多表查询深入多表查询2.7.12.7.1 交叉连接(广义笛卡尔积交叉连接(广义笛卡尔积):1、广义笛卡尔积是不带连接谓词的连接,两个表的广义笛卡尔积即是两表中元组的交叉乘积,其
49、连接的结果会产生一些没有意义的元组,所以这种运算实际很少使用。2、举例 select*from student,score2.7.22.7.2 等值与非等值连接查询等值与非等值连接查询1、等值连接:连接运算符为=的连接操作1)连接条件:.=.2)任何子句中引用表 1 和表 2 中同名属性时,都必须加表名前缀。引用唯一属性名时可以省略表名前缀。3)举例:查询每个学生与其选修课程的情况。select*from student st,score sc where st.studentid=sc.studentid或select st.*,sc.*from student st,score sc wh
50、ere st.studentid=sc.studentid2、非等值连接查询:连接运算符不是=的连接操作1)格式:.或.BETWEEN.AND.2)比较运算符:、=、=、!=.21/302.7.32.7.3 自身连接自身连接1、表与其自己进行连接,称为表的自身连接。2、需要给表起别名以示区别,由于所有属性名都是同名属性,因此必须使用别名前缀3、举例:1)查询每一门课程的先修课(即先修课的先修课)。分析:在 Course 表中,只有每门课的直接先修课信息,而没有先修课的先修课。要得到这个信息,必须先对一门课找到其先修课,再按此先修课的课程号,查找它的先修课程。这就要将 Course 表与其自身连