《Oracle 入门教程》第 02 篇 Oracle 简介

2.1 关系型数据库

数据库(Database)是计算机中存储的有组织的数据集合。当用户或者应用需要访问和使用这些数据库中的数据时,需要借助专门的管理软件系统,也就是数据库管理系统(DBMS)。

dbms
按照数据的组织和管理模式,主要的 DBMS 可以分为关系数据库管理系统和非关系数据库管理系统。关系型数据库(Relational database)是指基于关系模型的数据库。在关系模型中,用于存储数据的逻辑结构称为关系(Relation);对于用户而言,关系就是二维表(Table)。以下面是一个员工信息表,它和 Excel 表格非常类似,由行(Row)和列(Column)组成。

employee
常见的关系型数据库产品有 Oracle、MySQL、Microsoft SQL Server、PostgreSQL、SQLite 等。

2.2 Oracle 数据库

Oracle 数据库是甲骨文公司(Oracle)的关系型数据库产品,是世界上第一个商业化的的关系型数据库管理系统。Oracle 数据库拥有超过 40 年的开发历史,是流行度排名第一的数据库软件,最新的版本为 Oracle 19c。

Oracle 数据库发展过程中不同版本的一些主要亮点包括:

  • 成立 Oracle 公司。1977 年 Larry Ellison、Bob Miner 和 Ed Oates 成立了咨询公司 Software Development Laboratories,随后改名为 Relational Software, Inc. (RSI)。1983 年 RSI 成为了 Oracle 系统公司,并随后改名为 Oracle 公司。
  • 第一个商业 RDBMS。1979 年 RSI 发布了第一个基于 SQL 的商用关系型数据库管理系统 Oracle V2 (Version 2) 。
  • Oracle 数据库可移植版本。1983 年发布的 Oracle Version 3 是首个可以同时支持大型机、小型机以及个人电脑的关系型数据库。该版本使用 C 语言编写,可以支持不同平台的移植性。
  • 并发控制、数据分布以及可扩展性增强。Oracle Version 4 引入了多版本一致性读(multiversion read consistency)。1985 发布的 Oracle Version 5 支持了客户端/服务器计算以及分布式数据库系统。Oracle Version 6 增强了磁盘 I/O、行锁、可扩展性以及备份与恢复功能,同时还首次引入了 PL/SQL 语言。
  • PL/SQL 存储过程支持。1992 年发布的 Oracle7 增加了 PL/SQL 存储过程和触发器。
  • 面向对象和分区支持。1997 年发布的 Oracle8 成为了一个对象-关系型数据库,增加了很多新的数据类型。同时,它还增加了分区表功能。
  • 网络计算(Internet computing)。1999 年发布的 Oracle8i 增加了网络协议的原生支持和服务器端 Java 编程,支持数据库的多层应用环境部署。
  • Oracle 真正应用集群(Oracle RAC)。2001 年发布的 Oracle9i 数据库增加了 RAC 功能,允许多个实例同时访问单个数据库。同时, Oracle XML 数据库((Oracle XML DB)引入了存储和查询 XML 数据的功能。
  • 网格计算。2003 年发布的 Oracle Database 10g 引入了网格计算(grid computing)的概念,允许企业基于低成本的商用服务器构建一个网格基础设施,从而对计算资源进行虚拟化。一个关键的目标就是允许数据库自我管理和调优。Oracle 自动存储管理(Oracle ASM)通过虚拟化和简化存储管理来实现该目标。
  • 可管理性、诊断性和可用性。2007 年发布的 Oracle Database 11g 引入了许多新特性,可以帮助管理员和开发人员快速应对业务需求的变更。实现这种适应性的关键是通过整合信息和尽可能使用自动化来简化信息基础设施。
  • 接入云端。2013 年发布的 Oracle Database 12c 专为云计算而生,提供了新的多租户体系结构、内存列存储以及 JSON 文档支持。Oracle Database 12c 可以帮助 DBA 更有效地利用 IT 资源,同时不断为终端用户减少成本和提高服务级别。
  • 集成和内存性能提升。Oracle Database 18c 简化了与目录服务的集成,例如 Microsoft Active Directory;同时它还引入了一些可以使用列存储模型以及快速行访问模型的内存功能。
  • 增强稳定性。Oracle Database 19c 作为 Oracle Database 12c 家族中的长期支持版本对稳定性进一步进行了增强,同时还对 JSON 以及 Active Data Guard 等功能进行了改进。

总而言之,Oracle 数据库以其强大的功能、稳定性、高性能、安全性以及可扩展性被广泛应用于政府、金融、能源、教育、医疗和交通等行业的企业数据库。

2.3 SQL

SQL 代表结构化查询语言(Structured Query Language),它是管理和访问所有关系型数据库的标准语言。通过 SQL 可以执行数据的增加(Create)、删除(Delete)、修改(Update)以及查询(Retrieve),同时还可以执行许多数据库的管理操作。

sql
SQL 语句可以按照它们的作用分为以下几类:

  • DQL(data query language),数据查询语言;主要是SELECT语句,用于查询数据库中的数据和信息。
  • DML(data manipulation language),数据操作语言;主要用于对数据库进行数据的增加(INSERT)、修改(UPDATE)、删除(DELETE)以及合并(MERGE)等语句。
  • DDL(data definition language),数据定义语言;主要用于定义数据库中的模式对象,例如表或索引,创建(CREATE)、修改(ALTER)以及删除(DROP)等。
  • TCL(transaction control language),事务控制语言;用于管理数据库事务,主要包括开始事务(BEGIN)、提交事务(COMMIT)、回滚事务(ROLLBACK)、保存点(SAVEPOINT)等。
  • DCL(data control language),数据控制语言;用于控制数据的访问权限,主要有授予(GRANT)和撤销(REVOKE)等。

SQL 最初由 IBM 公司开发,在 1986 年成为 ANSI 标准,并且在 1987 年成为 ISO 的标准。ANSI 在1992 年对 SQL 标准进行了修订,称为 SQL92 或者 SQL2;在 1999 年再次进行了修订,称为 SQL99 或者 SQL3。如今,SQL 标准由 ANSI 和 ISO/IEC 共同维护,随后经历的修订版本包括 SQL:2003、SQL:2006、SQL:2008、SQL:2011、SQL:2016。最新的版本为 SQL:2019 或者 ISO/IEC 9075:2019,它取代了之前的所有版本。

需要注意的是,不同厂商基于 SQL 标准实现了自己的数据库产品,它们都在一定程度上兼容 SQL 标准。Oracle 实现了 SQL 中的绝大部分功能,同时也扩展了一些专用的语法,这也是本专栏主要介绍的内容。

2.4 PL/SQL

PL/SQL 的全称是 Procedural Language/SQL,它是 Oracle SQL 的过程语言扩展。

由于 SQL 是一种声明式的语言,关注的是结果而不是过程。但是在实际开发中为了满足业务处理的需要,Oracle 也提供了过程语言扩展,支持例如定义变量、控制流结构、循环结构、异常处理以及面向对象编程等的特性,从而支持在数据库服务器端实现业务处理功能。

本专栏包含了 Oracle PL/SQL 存储过程的详细介绍。

接下来就让我们看看如何安装 Oracle 软件和数据库。