购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

第1章 初识Oracle

学习目标|Objective

Oracle是以关系数据库的数据存储和管理作为构架基础,构建出的数据库管理系统。Oracle是世界上第一个支持SQL语言的商业数据库,定位于高端工作站,以及作为服务器的小型计算机,如IBM P系列服务器、HP的Integrity服务器和Sun Fire服务器等。本章主要介绍数据库的基础知识,通过本章的学习,读者可以了解数据库的基本概念、数据库的构成和Oracle的基本知识。

内容导航|Navigation

1.1 数据库基础

数据库由一批数据构成有序的集合,这些数据被存放在结构化的数据表里。数据表之间相互关联,反映了客观事物间的本质联系。数据库系统提供对数据的安全控制和完整性控制。本节将介绍数据库中的一些基本概念,包括:数据库的定义、数据表的定义和数据类型等。

1.1.1 什么是数据库

数据库的概念诞生于60年前,随着信息技术和市场的快速发展,数据库技术层出不穷,随着应用的拓展和深入,数据库的数量和规模越来越大,其诞生和发展给计算机信息管理带来了一场巨大的革命。

数据库的发展大致划分为如下几个阶段:人工管理阶段、文件系统阶段、数据库系统阶段、高级数据库阶段。其种类大概有3种:层次式数据库、网络式数据库和关系式数据库。不同种类的数据库按不同的数据结构来联系和组织。

对于数据库的概念,没有一个完全固定的定义,随着数据库历史的发展,定义的内容也有很大的差异,其中一种比较普遍的观点认为,数据库(DataBase, DB)是一个长期存储在计算机内的、有组织的、有共享的、统一管理的数据集合。它是一个按数据结构来存储和管理数据的计算机软件系统。即数据库包含两层含义:保管数据的“仓库”,以及数据管理的方法和技术。

数据库的特点包括:实现数据共享,减少数据冗余;采用特定的数据类型;具有较高的数据独立性;具有统一的数据控制功能。

1.1.2 表

在关系数据库中,数据库表是一系列二维数组的集合,用来存储数据和操作数据的逻辑结构。它由纵向的列和横向的行组成,行被称为记录,是组织数据的单位。列被称为字段,每一列表示记录的一个属性,都有相应的描述信息,如数据类型、数据宽度等。

例如一个有关作者信息的名为authors的表中,每个列包含所有作者的某个特定类型的信息,比如“姓名”,而每行则包含了某个特定作者的所有信息:编号、姓名、性别、专业,如图1-1所示。

图1-1 authors表结构与记录

1.1.3 数据类型

数据类型决定了数据在计算机中的存储格式,代表不同的信息类型。常用的数据类型有:整数数据类型、浮点数数据类型、精确小数类型、二进制数据类型、日期/时间数据类型、字符串数据类型。

表中的每一个字段就是某种指定的数据类型,比如图1-1中“编号”字段为整数数据,“性别”字段为字符型数据。

1.1.4 主键

主键(PRIMARY KEY)又称主码,用于唯一地标识表中的每一条记录。可以定义表中的一列或多列为主键,主键列上不能有两行相同的值,也不能为空值。假如,定义authors表,该表给每一个作者分配一个“作者编号”,该编号作为数据表的主键,如果出现相同的值,将提示错误,系统不能确定查询的究竟是哪一条记录。如果把作者的“姓名”作为主键,则不能出现重复的名字,这与现实不相符合,因此“姓名”字段不适合作为主键。

1.2 数据库技术构成

数据库系统由硬件部分和软件部分共同构成,硬件主要用于存储数据库中的数据,包括计算机、存储设备等。软件部分则主要包括DBMS、支持DBMS运行的操作系统,以及支持多种语言进行应用开发的访问技术等。本节将介绍数据库的技术构成。

1.2.1 数据库系统

数据库系统有3个主要的组成部分。

数据库(Database System)提供了一个存储空间用以存储各种数据,可以将数据库视为一个存储数据的容器。一个数据库可能包含许多文件,一个数据库系统中通常包含许多数据库。

数据库管理系统(DataBase Management System, DBMS)是用户创建、管理和维护数据库时所使用的软件,位于用户与操作系统之间,对数据库进行统一管理。DBMS能定义数据存储结构,提供数据的操作机制,维护数据库的安全性、完整性和可靠性。

数据库应用程序(DataBase Application)虽然已经有了DBMS,但是在很多情况下,DBMS无法满足对数据管理的要求。数据库应用程序的使用可以满足对数据管理的更高要求,还可以使数据管理过程更加直观和友好。数据库应用程序负责与DBMS进行通信,访问和管理DBMS中存储的数据,允许用户插入、修改、删除DB中的数据。

数据库系统如图1-2所示。

图1-2 数据库系统

1.2.2 SQL语言

对数据库进行查询和修改操作的语言叫做SQL。SQL的含义是结构化查询语言(Structured Query Language)。SQL有许多不同的类型,有3个主要的标准:ANSI(美国国家标准机构)SQL,对ANSI SQL修改后在1992年采纳的标准,称为SQL-92或SQL2。最近的SQL-99标准,SQL-99标准从SQL2扩充而来并增加了对象关系特征和许多其他新功能。其次,各大数据库厂商提供不同版本的SQL,这些版本的SQL不但能包括原始的ANSI标准,而且在很大程度上支持新推出的SQL-92标准。

SQL语言包含以下4个部分。

(1)数据定义语言(DDL):DROP、CREATE、ALTER等语句。

(2)数据操作语言(DML):INSERT(插入)、UPDATE(修改)、DELETE(删除)语句。

(3)数据查询语言(DQL):SELECT语句。

(4)数据控制语言(DCL):GRANT、REVOKE、COMMIT、ROLLBACK等语句。

下面是一条SQL语句的例子,该语句声明创建一个叫students的表:

该表包含3个字段,分别为student_id、name、sex,其中student_id定义为表的主键。

现在只是定义了一张表格,但并没有任何数据,接下来这条SQL声明语句,将在students表中插入一条数据记录:

执行完该SQL语句之后,students表中就会增加一行新记录,该记录中字段student_id的值为41048101,name字段的值为Lucy Green,sex字段值为1。

再使用SELECT查询语句获取刚才插入的数据,如下:

上面简单列举了常用的数据库操作语句,在这里给读者一个直观的印象,读者可能还不能理解,接下来会在学习Oracle的过程中详细介绍这些知识。

1.2.3 数据库访问技术

不同的程序设计语言会有各自不同的数据库访问技术,程序语言通过这些技术,执行SQL语句,进行数据库管理。主要的数据库访问技术有:

1.ODBC

Open Database Connectivity(开放数据库互连)技术为访问不同的SQL数据库提供了一个共同的接口。ODBC使用SQL作为访问数据的标准。这一接口提供了最大限度的互操作性:一个应用程序可以通过共同的一组代码访问不同的SQL数据库管理系统(DBMS)。

一个基于ODBC的应用程序对数据库的操作不依赖任何DBMS,不直接与DBMS打交道,所有的数据库操作由对应的DBMS的ODBC驱动程序完成。也就是说,不论是Access、MySQL还是Oracle数据库,均可用ODBC API进行访问。由此可见,ODBC的最大优点是能以统一的方式处理所有的数据库。

2.JDBC

Java Database Connectivity(Java数据库连接)用于Java应用程序连接数据库的标准方法,是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。

3.ADO.NET

ADO.NET是微软在.NET框架下开发设计的一组用于和数据源进行交互的面向对象类库。ADO.NET提供了对关系数据、XML和应用程序数据的访问,允许和不同类型的数据源以及数据库进行交互。

4.PDO

PDO(PHP Data Object)为PHP访问数据库定义了一个轻量级的、一致性的接口,它提供了一个数据访问抽象层,这样,无论使用什么数据库,都可以通过一致的函数执行查询和获取数据。PDO是PHP 5新加入的一个重大功能。

1.3 熟悉新版Oracle 12c

Oracle数据库是积聚了众多领先性的数据库系统,在集群技术、高可用性、商业智能、安全性、系统管理等方面都领跑业界。Oracle是一个大型关系数据库管理系统,目前已经成为企业级开发首选。本章节主要介绍Oracle数据库的发展历程和Oracle 12c的新功能。

1.3.1 Oracle的发展历程

Oracle是由甲骨文公司开发出来的,并于1989年正式进入中国市场,成为第一家进入中国的世界软件巨头。Oracle大致发展历程如下:

1977年,Larry Ellison、Bob Miner和Ed Oates等人组建了Relational软件公司(Relational Software Inc., RSI)。他们决定使用C语言和SQL界面构建一个关系数据库管理系统(Relational Database Management System, RDBMS),并很快发布了第一个版本(仅是原型系统)。

1979年,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)的版本。

1985年,Oracle的第5版发布。该版本可称作是Oracle发展史上的里程碑,因为它通过SQL*Net引入了客户端/服务器的计算机模式,同时它也是第一个打破640KB内存限制的MS-DOS产品。

1988年,Oracle的第6版发布。该版本除了改进性能、增强序列生成与延迟写入(Deferred Writes)功能以外,还引入了底层锁。除此之外,该版本还加入了PL/SQL和热备份等功能。这时Oracle已经可以在许多平台和操作系统上运行。

1991年,Oracle RDBMS的6.1版在DEC VAX平台中引入了Parallel Server选项,很快该选项也可用于许多其他平台。

1992年,Oracle 7发布。Oracle 7在对内存、CPU和I/O的利用方面做了许多体系结构上的变动,这是一个功能完整的关系数据库管理系统,在易用性方面也做了许多改进,引入了SQL*DBA工具和Database角色。

1997年,Oracle 8发布。Oracle 8除了增加许多新特性和管理工具以外,还加入了对象扩展(Object Extension)特性(在Windows系统下开始使用,以前的版本都是在UNIX环境下运行)。

2001年,Oracle 9i release 1发布。这是Oracle 9i的第一个发行版,包含RAC(Real Application Cluster)等新功能。

2002年,Oracle 9i release 2发布,它在release 1的基础上增加了集群文件系统(Cluster File System)等特性。

2004年,针对网格计算的Oracle 10g发布。该版本中Oracle的功能、稳定性和性能的实现都达到一个新的水平。

2007年7月12日,甲骨文公司推出的最新数据库软件Oracle 11g,Oracle 11g有400多项功能,经过了1500万个小时的测试,开发工作量达到了3.6万人/月。相对过往版本而言,Oracle 11g具有与众不同的特性。

2013年6月26日,Oracle Database 12c版本正式发布,12c里面的c是cloud,也就是代表云计算的意思。

与Oracle数据库基本同时期的还有informix数据库系统。两者使用的用户有所侧重。Oracle数据库系统银行业使用较多,Informix数据库系统,通信业使用较多。由于Oracle数据库产品是当前数据库技术的典型代表,除了数据库系统外,还有应用系统和开发工具等。

1.3.2 Oracle 12c版本的新功能

新版Oracle Database 12c汇集了参会者最多的目光,Larry Ellison也在开幕演讲中重点介绍了12c的一些新特性。在学习Oracle Database 12c之前,数据库管理员希望能够提前了解它的一些新功能、新特性。

(1)PL/SQL性能增强:类似在匿名块中定义过程,现在可以通过WITH语句在SQL中定义一个函数,采用这种方式可以提高SQL调用的性能。

(2)改善Defaults:包括序列作为默认值、自增列。当明确插入NULL时指定默认值;metadata-only default值指的是增加一个新列时指定的默认值,和11g中的区别在于,11g的default值要求NOT NULL列。

(3)放宽多种数据类型长度限制:增加了VARCHAR2、NVARCHAR2和RAW类型的长度到32KB,要求兼容性设置为12.0.0.0以上,且设置了初始化参数MAX_SQL_STRING_SIZE为EXTENDED,这个功能不支持CLUSTER表和索引组织表。最后这个功能并不是真正改变了VARCHAR2的限制,而是通过OUT OF LINE的CLOB实现。

(4)TOP N的语句实现:在SELECT语句中使用“FETCH next N rows”或者“OFFSET”,可以指定前N条或前百分之多少的记录。

(5)行模式匹配:类似分析函数的功能,可以在行间进行匹配判断并进行计算。在SQL中新的模式匹配语句是“match_recognize”。

(6)分区改进:Oracle Database 12c中对分区功能做了较多的调整,其中共分成下面6个部分。

(7)Adaptive执行计划:拥有学习功能的执行计划,Oracle会把实际运行过程中读取到的返回结果作为进一步执行计划判断的输入,因此统计信息不准确或查询真正结果与计算结果不准时,可以得到更好的执行计划。

(8)统计信息增强:动态统计信息收集增加第11层,使得动态统计信息收集的功能更强;增加了混合统计信息用以支持包含大量不同值,且个别值数据倾斜的情况;添加了数据加载过程收集统计信息的能力;对于临时表增加了会话私有统计信息。

(9)临时UNDO:将临时段的UNDO独立出来,放到TEMP表空间中,优点包括减少UNDO产生的数量,减少REDO产生的数量,在ACTIVE DATA GUARD上允许对临时表进行DML操作。

(10)数据优化:新增了ILM(数据生命周期管理)功能,添加了“数据库热图”(Database Heat Map),在视图中直接看到数据的利用率,找到哪些数据是最“热”的数据。可以自动实现数据在线压缩和数据分级,其中数据分级可以在线将定义时间内的数据文件转移到归档存储,也可以将数据表定时转移至归档文件,还可以实现在线数据压缩。

(11)应用连续性:Oracle Database 12c之前RAC的FAILOVER只做到SESSION和SELECT级别,对于DML操作无能为力,当设置为SESSION,进行到一半的DML自动回滚;而对于SELECT,虽然FAILOVER可以不中断查询,但是对于DML的问题更甚之,必须要手工回滚。而Oracle Database 12c中Oracle终于支持事务的FAILOVER。

(12)Oracle Pluggable Database:Oracle PDB体系结构由一个容器数据库(CDB)和多个可组装式数据库(PDB)构成,PDB包含独立的系统表空间和SYSAUX表空间等,但是所有PDB共享CDB的控制文件、日志文件和UNDO表空间。

1.3.3 Oracle的优势

Oracle的主要优势如下。

(1)速度:运行速度快。

(2)稳定性:Oracle是目前数据库中稳定性非常好的数据库。

(3)共享SQL和多线索服务器体系结构:Oracle 7.X以来引入了共享SQL和多线索服务器体系结构。这减少了Oracle的资源占用,并增强了Oracle的能力,使之在低档软硬件平台上用较少的资源就可以支持更多的用户,而在高档平台上可以支持成百上千个用户。

(4)可移植性:能够工作在不同的系统平台上,例如:Windows和Linux等。

(5)安全性强:提供了基于角色(ROLE)分工的安全保密管理。在数据库管理功能、完整性检查、安全性、一致性方面都有良好的表现。

(6)支持类型多:支持大量多媒体数据,如二进制图形、声音、动画以及多维数据结构等。

(7)方面管理数据:提供了新的分布式数据库能力。可通过网络较方便地读写远端数据库里的数据,并有对称复制的技术。

1.4 了解Oracle工具

Oracle数据库管理系统提供了许多命令行工具,这些工具可以用来管理Oracle服务器、对数据库进行访问控制、管理Oracle用户以及数据库备份和恢复工具等。而且Oracle提供图形化的管理工具,这使得对数据库的操作更加简单。本节将为读者介绍这些工具的作用。

1.4.1 SQL Plus

SQL Plus这客户端工具。在SQL Plus中,可以运行SQL Plus命令与SQL语句。

通常所说的DML、DDL、DCL语句都是SQL语句,它们执行完后,都可以保存在一个被称为sql buffer的内存区域中,并且只能保存一条最近执行的SQL语句,可以对保存在SQL Buffer中的SQL语句进行修改,然后再次执行,SQL Plus一般都与数据库打交道。

除了SQL语句,在SQL Plus中执行的其他语句称之为SQL Plus命令。它们执行完后,不保存在sql buffer的内存区域中,它们一般用来对输出的结果进行格式化显示,以便于制作报表。

SQL Plus是目前最常用的工具,具有很强的功能,主要功能包含如下:

(1)数据库的维护,如启动,关闭等,这一般在服务器上操作。

(2)执行SQL语句。

(3)执行SQL脚本。

(4)数据导出为报表。

(5)应用程序开发、测试SQL。

(6)生成新的SQL脚本。

(7)供应用程序调用,如安装程序中进行脚本的安装。

(8)用户管理及权限维护等。

SQL Plus的运行界面如图1-3所示。

图1-3 SQL Plus运行界面

1.4.2 Oracle SQL Developer

Oracle SQL Developer是Oracle公司出品的一个免费的集成开发环境。使用SQL Developer可以浏览数据库对象、运行SQL语句和脚本、编辑和调试PL/SQL语句。另外还可以创建执行和保存报表。Oracle SQL Developer可以连接任何Oracle 9.2.0.1或者以上版本的Oracle数据库,支持Windows、Linux和Mac OS X系统。

Oracle 12c系统自带SQL Developer开发工具,操作主界面如图1-4所示。

图1-4 SQL Developer主界面

1.5 如何快速掌握Oracle

在学习Oracle数据库之前,很多读者都会问如何才能学习好Oracle的相关技能呢?下面就来讲述学习Oracle的方法。

1.培养兴趣

兴趣是最好的老师,不论学习什么知识,兴趣都可以极大地提高学习效率。当然学习Oracle也不例外。

2.夯实基础

计算机领域的技术非常强调基础,刚开始学习可能还认识不到这一点,随着技术应用的深入,只有有着扎实的基础功底,才能在技术的道路上走得更快、更远。对于Oracle的学习来说,SQL语句是其中最为基础的部分,很多操作都是通过SQL语句来实现的。所以在学习的过程中,读者要多编写SQL语句,对于同一个功能,使用不同的实现语句来完成,从而深刻理解其不同之处。

3.及时学习新知识

正确、有效地利用搜索引擎,可以搜索到很多关于Oracle 5.6的相关知识。同时,参考别人解决问题的思路,也可以吸取别人的经验,及时获取最新的技术资料。

4.多实践操作

数据库系统具有极强的操作性,需要多上机操作,在实际操作的过程中发现问题,并思考解决问题的方法和思路,只有这样才能提高实战的操作能力。 e7FW2f8sPDrKJu1XxwrE1SYkD9K7p2IJ3HziOz1bNHIwtvGt9M2wTfkZ18lXQlVV

点击中间区域
呼出菜单
上一章
目录
下一章
×