计算机实用技术 Par七工 Oracle SQL Par七工工 Oracle体系结构 谢金国朱敏 南京航空航天大学计算中心 2005年9月
计算机实用技术 Part I Oracle SQL Part II Oracle 体系结构 谢金国 朱敏 南京航空航天大学计算中心 2005年9月
计算机实用新技术(Part) 且录
计算机实用新技术(Part I) 目 录 - 2 -
计算机实用技术(Part) Part I ORACLE SQL 1.什么是SQL? SQL,翻译成中文就是“结构化查询语言”。其发音是“SQL”,也可以读 作“ sequel”。 SL是一种计算机语言,它是为了从存储在关系数据库中的数据中获得信息 而设计的,即通过SL可以从大量收集的数据中查找想要的信息 SL不同于其他计算机语言,我们使用SL描述想要的信息类型,然后计算机 会确定出获得它的最好过程,并运行这个过程。这就是所谓的“说明性”计算机 语言,因为它注重的是结果:我们可以详细说明结果的外表特征。计算机允许使 用任意数据处理方法,只要它获得正确结果。 其他计算机语言大部分是“过程性”的,如汇编、 Pascal、C、Java等。我 们使用这些语言描述应用于数据的过程,无需描述结果。结果是将过程应用到数 据后所得到的东西 这好比我们清晨去一家咖啡店。如果使用SL支持的说明性方法,你只要说: “我想来一杯咖啡和一个炸面包圈。”而使用过程性方法,你不能那样说,你必 须说出如何得到结果,并且给它一个特定的过程。也就是说,你必须说出如何制 作咖啡以及炸面包圈。因此,对于咖啡,你必须说:“将一些烘烤好的咖啡豆磨 成粉,添加开水,冲泡一会儿,再将它倒入一个茶杯,然后给我。”对于炸面包 圈,你必须阅读菜谱。显然,说明性方法更贴近于我们通常说话的方式,并且它 更容易于为大多数人所使用。 相对于其他计算机语言而言,SQL是易于使用的,实际上这也正是SQL如此流 行和重要的主要原因。 信息自身并不强大,只有在需要的人使用它的时候,它才变得强大。SQL是 传递信息的工具
计算机实用技术(Part II) Part I ORACLE SQL 1. 什么是SQL? SQL,翻译成中文就是“结构化查询语言”。其发音是“S-Q-L”,也可以读 作“sequel”。 SQL是一种计算机语言,它是为了从存储在关系数据库中的数据中获得信息 而设计的,即通过SQL可以从大量收集的数据中查找想要的信息。 SQL不同于其他计算机语言,我们使用SQL描述想要的信息类型,然后计算机 会确定出获得它的最好过程,并运行这个过程。这就是所谓的“说明性”计算机 语言,因为它注重的是结果:我们可以详细说明结果的外表特征。计算机允许使 用任意数据处理方法,只要它获得正确结果。 其他计算机语言大部分是“过程性”的,如汇编、Pascal、C、Java等。我 们使用这些语言描述应用于数据的过程,无需描述结果。结果是将过程应用到数 据后所得到的东西。 这好比我们清晨去一家咖啡店。如果使用SQL支持的说明性方法,你只要说: “我想来一杯咖啡和一个炸面包圈。”而使用过程性方法,你不能那样说,你必 须说出如何得到结果,并且给它一个特定的过程。也就是说,你必须说出如何制 作咖啡以及炸面包圈。因此,对于咖啡,你必须说:“将一些烘烤好的咖啡豆磨 成粉,添加开水,冲泡一会儿,再将它倒入一个茶杯,然后给我。”对于炸面包 圈,你必须阅读菜谱。显然,说明性方法更贴近于我们通常说话的方式,并且它 更容易于为大多数人所使用。 相对于其他计算机语言而言,SQL是易于使用的,实际上这也正是SQL如此流 行和重要的主要原因。 信息自身并不强大,只有在需要的人使用它的时候,它才变得强大。SQL是 传递信息的工具。 - 3 -
计算机实用技术(Part) 注释:关于SQL SL是从关系数据库中获得信息的说明性语言。 SL会告诉获得什么信息,而不是告诉如何获得信息。 SQL的基本知识是易于掌握的 SQL使得人们能够控制信息。 SQL允许人们使用新的方式来处理信息 ■SQL通过向需要的人们提供信息来使信息变得强大。 2.什么是关系数据库?为什么要使用它? 关系数据库是一种在计算机中用于组织数据的方法。 SL是使人们将数据组织到关系数据库中的一个主要原因,使用SQL,你可以 毫不费劲地从数据中获得信息,这是非常重要的 另外一个原因是:许多人可以在同一时间使用关系数据库中的数据。有时, 几百或者几千人可以一起共享数据库中的数据。所有人都可以看见数据,并且所 有人都可以更改数据(如果他们有这样的权限的话)。从商业观点来看,这提供 了一个协调所有员工的方法,并且让每一个人都使用相同的信息主体。 第三个原因是:关系数据库是为希望信息可以随时间进行更改而设计的。信 息可能需要重新组织或者新的信息需要被添加,关系数据库的设计目标是为了使 这种类型的更改变得容易。大多数计算机系统很难更改。因为它们假设你在开始 构造之前就知道所有的请求。 从计算机语言的观点来看,关系数据库的灵活性和SQL的可用性使得开发新 的计算机应用程序要比传统技术更为迅速。 开发关系数据库的想法出现于20世纪70年代早期,用来处理大量数据和数以 百万计的纪录。最初,关系数据库被想象成后端处理器,它向使用过程性语言(如 C语言或C0BL语言)编写的计算机应用程序提供信息。即使到现在,关系数据库 还遗留着这些痕迹。 不过今天,这种想法变得如此成功,以致于整个信息系统常常被构造为关系 数据库,并且无需很多过程代码(除了支持输入格式)。最初被开发为过程性代 码做配角的关系数据库现在已经唱了主角,许多过程性代码已经不再需要
计算机实用技术(Part II) 注释:关于SQL SQL是从关系数据库中获得信息的说明性语言。 SQL会告诉获得什么信息,而不是告诉如何获得信息。 SQL的基本知识是易于掌握的。 SQL使得人们能够控制信息。 SQL允许人们使用新的方式来处理信息。 SQL通过向需要的人们提供信息来使信息变得强大。 2. 什么是关系数据库?为什么要使用它? 关系数据库是一种在计算机中用于组织数据的方法。 SQL是使人们将数据组织到关系数据库中的一个主要原因,使用SQL,你可以 毫不费劲地从数据中获得信息,这是非常重要的。 另外一个原因是:许多人可以在同一时间使用关系数据库中的数据。有时, 几百或者几千人可以一起共享数据库中的数据。所有人都可以看见数据,并且所 有人都可以更改数据(如果他们有这样的权限的话)。从商业观点来看,这提供 了一个协调所有员工的方法,并且让每一个人都使用相同的信息主体。 第三个原因是:关系数据库是为希望信息可以随时间进行更改而设计的。信 息可能需要重新组织或者新的信息需要被添加,关系数据库的设计目标是为了使 这种类型的更改变得容易。大多数计算机系统很难更改。因为它们假设你在开始 构造之前就知道所有的请求。 从计算机语言的观点来看,关系数据库的灵活性和SQL的可用性使得开发新 的计算机应用程序要比传统技术更为迅速。 开发关系数据库的想法出现于20世纪70年代早期,用来处理大量数据和数以 百万计的纪录。最初,关系数据库被想象成后端处理器,它向使用过程性语言(如 C语言或COBOL语言)编写的计算机应用程序提供信息。即使到现在,关系数据库 还遗留着这些痕迹。 不过今天,这种想法变得如此成功,以致于整个信息系统常常被构造为关系 数据库,并且无需很多过程代码(除了支持输入格式)。最初被开发为过程性代 码做配角的关系数据库现在已经唱了主角,许多过程性代码已经不再需要。 - 4 -
计算机实用技术(Part) 在关系数据库中,所有数据都保存在表里,表是由列和行组成的二维结构。 在使用了一段时间的表以后,你会发现表为处理数据提供了一个非常好的结构。 它们易于更改,可以在同一时间与所有用户共享数据,并且可以在表数据上运行 SL。许多人开始从表的角度考虑他们的数据,表已经成为处理数据时的主要手 段 今天,人们使用小的个人数据库来保护地址簿、为音乐磁带做目录、组织藏 书或者纪录他们的财务情况。商业上应用的数据库也被建立为关系数据库。许多 人更愿意将他们的数据存入一个数据库中,即使其中只有少量的记录。 关系数据库的起源 关系数据库最初是在20世纪70年代开发的,开发目的是为了以一致并且 相关的方式来组织大量信息。 关系数据库允许几千人在相同时间使用相同信息。 ■关系数据库总是保持信息的实时性和一致性。 关系数据库使单位中所有级别的人(从秘书到副总裁)都可以容易地获 得信息。它们使用SQL、表单、标准化的报告和临时报告,及时地将信 息传递给人们。 关系数据库是作为信息服务器后端设计的。这意味着大部分人将不会直 接使用数据库,而用另一层的软件。这个软件从数据库中获得信息,然 后传递给需要的人们 关系数据库使人们能够在需要信息的时候获得当前信息。 今天—关系数据库任何改变 除了已经描述的大型数据库之外,现在还有许多处理较少信息量的小型 数据库,它们可以被个人使用或几个人分享。 关系数据库非常成功,易于使用,使用它的应用程序要比原先设想的应 用范围大许多。 现在许多人直接使用数据库,而不是通过另一个软件层来使用。 许多人更愿意将他们的数据保存在数据库中。他们觉得关系数据库为处 理各种类型的数据提供了一个实用且高效的框架 5
计算机实用技术(Part II) 在关系数据库中,所有数据都保存在表里,表是由列和行组成的二维结构。 在使用了一段时间的表以后,你会发现表为处理数据提供了一个非常好的结构。 它们易于更改,可以在同一时间与所有用户共享数据,并且可以在表数据上运行 SQL。许多人开始从表的角度考虑他们的数据,表已经成为处理数据时的主要手 段。 今天,人们使用小的个人数据库来保护地址簿、为音乐磁带做目录、组织藏 书或者纪录他们的财务情况。商业上应用的数据库也被建立为关系数据库。许多 人更愿意将他们的数据存入一个数据库中,即使其中只有少量的记录。 关系数据库的起源 关系数据库最初是在20世纪70年代开发的,开发目的是为了以一致并且 相关的方式来组织大量信息。 关系数据库允许几千人在相同时间使用相同信息。 关系数据库总是保持信息的实时性和一致性。 关系数据库使单位中所有级别的人(从秘书到副总裁)都可以容易地获 得信息。它们使用SQL、表单、标准化的报告和临时报告,及时地将信 息传递给人们。 关系数据库是作为信息服务器后端设计的。这意味着大部分人将不会直 接使用数据库,而用另一层的软件。这个软件从数据库中获得信息,然 后传递给需要的人们。 关系数据库使人们能够在需要信息的时候获得当前信息。 今天——关系数据库任何改变 除了已经描述的大型数据库之外,现在还有许多处理较少信息量的小型 数据库,它们可以被个人使用或几个人分享。 关系数据库非常成功,易于使用,使用它的应用程序要比原先设想的应 用范围大许多。 现在许多人直接使用数据库,而不是通过另一个软件层来使用。 许多人更愿意将他们的数据保存在数据库中。他们觉得关系数据库为处 理各种类型的数据提供了一个实用且高效的框架。 - 5 -
计算机实用技术(Part) 3.为什么学习S? SL被运用于100多种软件产品中。一旦学会了SQL,你将能够使用所有这些 产品。当然,你需要稍微了解一下每种产品的特性,很快你就会感觉到它们很熟 悉并且知道如何使用。你可重复使用这些技巧。 主要SQL产品 其他SQL产品(和基于SQL的产品) MYSQL Microsoft access IBM DB2 Cold fusion Microsoft SQL Se Informix Business objects SQL Windows ODBC Sybase Ingres SAS sql procedure Ocelot SQL OsloData dB Tandem SQL Rapid SQL XDB SQL/DS Mini SQL Empress nterbase ogress p SQL Report Wri Paradox Delphi VAX SQL Essbase Beagle SQL GNU SQL Server Just logic/SQL Primebase Altera erver PowerBuilder SL被广泛使用的原因之一是:相对于其他许多计算机语言来说,SQL易于学 习。另一个原因是:它打开了关系数据库的大门,而关系数据库提供了许多便利。 一些人说:SL是关系数据库最好的特性,并且SQL是关系数据库获得成功的原因
计算机实用技术(Part II) 3. 为什么学习SQL? SQL被运用于100多种软件产品中。一旦学会了SQL,你将能够使用所有这些 产品。当然,你需要稍微了解一下每种产品的特性,很快你就会感觉到它们很熟 悉并且知道如何使用。你可重复使用这些技巧。 主要SQL产品 其他SQL产品(和基于SQL的产品) Oracle MYSQL Microsoft Access SQLbase IBM DB2 Cold Fusion Microsoft SQL Server SAP Informix Business Objects SQL Windows ODBC Sybase Ingres SAS sql procedure Ocelot SQL Foxpro OsloData dBase PostgreSQL Tandem SQL Rapid SQL XDB SQL/DS Mini SQL Empress Interbase Progress Supra SQL Report Writer Paradox Delphi VAX SQL Essbase Beagle SQL GNU SQL Server Just Logic/SQL PrimeBase Altera SQL Server DataScope PowerBuilder SQL被广泛使用的原因之一是:相对于其他许多计算机语言来说,SQL易于学 习。另一个原因是:它打开了关系数据库的大门,而关系数据库提供了许多便利。 一些人说:SQL是关系数据库最好的特性,并且SQL是关系数据库获得成功的原因。 - 6 -
计算机实用技术(Part) 而另一些人说:是关系数据库使得SQL成功。大部分人同意SQL和关系数据库是 个成功组合的观点。 SL是最成功的说明性计算机语言——一种你可以对它说你想要什么,而不 是告诉它如何得到你想要东西的语言。虽然也有其他一些说明性语言和报告生成 工具,但它们大部分在功能上有更多的限制。SQL更强大,可以应用于更多的场 合 在SL基础上易于构建最终用户程序,帮助不懂SQL语言的用户从数据库中获 得信息 4SQ语句的分类 SQL使用一种很简单的语法,易于学习和使用。SQL语句可分为5类,简要概 括如下: ●查询语句用于检索数据库表中存储的行。可以使用SQL的 SELECT语句 编写查询语句 ●数据操纵语言 ata Manipulation language,DM)语句用于修改表 的内容。DML语句有3种: · INSERT向表中添加行。 · UPDATE修改行的内容。 DELETE删除行 ●数据定义语言( Data Definition language,DDL语句用于定义构成 数据库的数据结构,例如表。DDL语句有5种基本类型: CREATE创建数据库结构。例如, CREATE TABLE语句用于创建一个 表; CREATE USER用于创建一个数据库用户。 · ALTER修改数据库结构。例如, ALTER TABLE语句用于修改一个表。 DROP删除数据库结构。例如, DROP TABLE语句用于删除表。 · RENAME更改表名。 TRUNCATE删除表的全部内容 事务控制( Transaction Control,TC)语句用于将对行所作的修改永 久性地存储到表中,或者取消这些修改操作。TC语句有3种
计算机实用技术(Part II) 而另一些人说:是关系数据库使得SQL成功。大部分人同意SQL和关系数据库是一 个成功组合的观点。 SQL是最成功的说明性计算机语言——一种你可以对它说你想要什么,而不 是告诉它如何得到你想要东西的语言。虽然也有其他一些说明性语言和报告生成 工具,但它们大部分在功能上有更多的限制。SQL更强大,可以应用于更多的场 合。 在SQL基础上易于构建最终用户程序,帮助不懂SQL语言的用户从数据库中获 得信息。 4. SQL语句的分类 SQL使用一种很简单的语法,易于学习和使用。SQL语句可分为5类,简要概 括如下: ● 查询语句 用于检索数据库表中存储的行。可以使用SQL的SELECT语句 编写查询语句。 ● 数据操纵语言(Data Manipulation Language, DML)语句 用于修改表 的内容。DML语句有3种: · INSERT 向表中添加行。 · UPDATE 修改行的内容。 · DELETE 删除行。 ● 数据定义语言(Data Definition Language, DDL)语句 用于定义构成 数据库的数据结构,例如表。DDL语句有5种基本类型: · CREATE 创建数据库结构。例如,CREATE TABLE 语句用于创建一个 表;CREATE USER 用于创建一个数据库用户。 · ALTER 修改数据库结构。例如,ALTER TABLE 语句用于修改一个表。 · DROP 删除数据库结构。例如,DROP TABLE 语句用于删除表。 · RENAME 更改表名。 · TRUNCATE 删除表的全部内容。 ● 事务控制(Transaction Control, TC)语句 用于将对行所作的修改永 久性地存储到表中,或者取消这些修改操作。TC语句有3种: - 7 -
计算机实用技术(Part) COMMIT永久性地保存对行所作的修改。 ROLLBACK取消对行所作的修改。 SAVEBACK设置一个“保存点”,可以将对行所作的修改回滚到此处。 ●数据控制语言( Data Control language,DCL)语句用于修改数据库结 构的操作权限。DCL语句有2种 GRANT授予用户对数据库结构(例如表)的访问权限。 REVOKE收回用户对数据库结构(例如表)的访问权限。 有很多方法都可以运行SL语句,并从数据库中返回结果,其中包括使用 Oracle forms、 Delphi、 PowerBuilder等设计的程序;还可以通过JDBC在Java 程序中加入SQL语句。 0 racle还有一个名为SL*Plus的工具,可以使用这个工具从键盘输入SQL语 句,或者提供一个包含SQL语句的文件,并在SQL*Plus中运行这些语句。通过 SL*Plus,可以与数据库进行“对话”,因为可以输入SL语句,并查看数据库 所返回的结果 5.使用SQL*Pus SQL*Plus有两个版本:一个是 Windows版本,另外一个是命令行版本。可以 在任何 Oracle数据库的操作系统上使用命令行版本的SQL*Plus ●启动 Windows版本的SQL*Plus 如果使用 Windows操作系统,双击桌面的SQL*Plus 图标,或单 击开始菜单,并选择程序| Oracle| Application Development|SQL*Plus来启动SQL*Plus(如图1) Applicati on Development IRTYPE File Assistant a Configuration and Migration Tools a Oracle Objects for OLE Class Library Help Enterprise Management Packs Oracle Objects for OLE Help C Enterprise Manager Quick Tours e Oracle Objects forOLE Readme t tool a orAcle HttP Server a OraOLEDB Documentation Release documentati on COT Dl 图1从 程序菜单启动SQL*Plus 8
计算机实用技术(Part II) · COMMIT 永久性地保存对行所作的修改。 · ROLLBACK 取消对行所作的修改。 · SAVEBACK 设置一个“保存点”,可以将对行所作的修改回滚到此处。 ● 数据控制语言(Data Control Language, DCL)语句 用于修改数据库结 构的操作权限。DCL 语句有2种: · GRANT 授予用户对数据库结构(例如表)的访问权限。 · REVOKE 收回用户对数据库结构(例如表)的访问权限。 有很多方法都可以运行SQL语句,并从数据库中返回结果,其中包括使用 Oracle Forms、Delphi、PowerBuilder等设计的程序;还可以通过JDBC在Java 程序中加入SQL语句。 Oracle还有一个名为SQL*Plus的工具,可以使用这个工具从键盘输入SQL语 句,或者提供一个包含SQL语句的文件,并在SQL*Plus中运行这些语句。通过 SQL*Plus,可以与数据库进行“对话”,因为可以输入SQL语句,并查看数据库 所返回的结果。 5. 使用SQL*Plus SQL*Plus有两个版本:一个是Windows版本,另外一个是命令行版本。可以 在任何Oracle数据库的操作系统上使用命令行版本的SQL*Plus。 ● 启动Windows版本的SQL*Plus 如果使用Windows操作系统,双击桌面的SQL*Plus 图标,或单 击 开始 菜单,并选择 程序 | Oracle | Application Development | SQL*Plus 来启动SQL*Plus(如图 1 )。 图1 从 程序菜单启动SQL*Plus - 8 -
计算机实用技术(Part) 图2显示了在 Windows操作系统上运行S*Plus时出现的 Log on对话框。在用户 名称( User name)中输入:s30101,在口令( Password)中输入: student,主机字 符串( Host string)输入: oracle9i用来告诉SQL*Plus数据库在哪里运行,然 后单击确定。 登录 用户名称凹 s40101 令凹 主机字符串凹: oracle gi 取消 图2SQL*Plus登录窗口 成功登录到数据库中之后,就会看到SQL*Plus窗口,可以通过这个窗口与数据库 进行交互。SQL*Plus窗口如图3所示。 土0lSqL未】s 文件)编描)索()选项0)帮助Q Plus: Release9.2.01..- Production on星期三11月216:12:u2005 Copyright (c)1982, 2002, Oracle Corporation. All rights reserved 9.2.0.1.0- Production 图3SQL*P1us
计算机实用技术(Part II) 图 2 显示了在Windows操作系统上运行SQL*Plus时出现的Log On对话框。在用户 名称(User Name)中输入:s30101,在口令(Password)中输入:student,主机字 符串(Host String) 输入:oracle9i 用来告诉SQL*Plus数据库在哪里运行,然 后单击 确定。 图 2 SQL*Plus登录窗口 成功登录到数据库中之后,就会看到SQL*Plus窗口,可以通过这个窗口与数据库 进行交互。SQL*Plus窗口如图 3 所示。 图 3 SQL*Plus - 9 -
计算机实用技术(Part) ●启动命令行版本的SQL*P1us 要启动命令行的SQL*P1us,可以使用 sqlplus命令。 sqlplus命令的完整语法 如下: Sqlplus [user name[/password [@host sting]]] 其中: ser name指定数据库的用户名。 password指定该数据库用户的密码。 · host string指定要连接的数据库 下面是执行 sqlplus命令的例子: sqlplus s30101/student@oracle9i ●使用SoL*Plus执行 SELECT语句 使用SQL*Plus登录到数据库之后,输入下面的 SELECT语句,会返回数据库中 的当前时间: SELECT SYSDATE FRoM dual SYSDATA是一个内置 Oracle函数,它返回当前日期,dua1表是 Oracle的 个内置表,该表只包含一行可以使用dua1表来执行一些简单的查询,这些查询的 结果并非从特定表中获得 SQL> SELECT sysdate 2 FROM dual; SYSDATE 27-SEP-05 SOL> 通过输入EIT命令,可以编辑SQL*Plus中的最后一条SQL语句。在输错SQL 语句或想修改SαL语句时,这种功能非常有用。在 Windows系统中输入EDⅠT命令后, 就会启动记事本,然后就可以使用记事本来编辑SQL语句。在退出记事本并保存 SL语句时,SQL语句就会被传递到SQL*Plus中,可以用/重新执行该条SQL语句
计算机实用技术(Part II) ● 启动命令行版本的SQL*Plus 要启动命令行的SQL*Plus,可以使用sqlplus命令。sqlplus命令的完整语法 如下: Sqlplus [user_name[/password[@host_sting]]] 其中: · user_name 指定数据库的用户名。 · password 指定该数据库用户的密码。 · host_string 指定要连接的数据库。 下面是执行sqlplus命令的例子: sqlplus s30101/student@oracle9i ● 使用SQL*Plus执行SELECT 语句 使用SQL*Plus登录到数据库之后,输入下面的SELECT语句,会返回数据库中 的当前时间: SELECT SYSDATE FROM dual; SYSDATA 是一个内置Oracle 函数,它返回当前日期,dual 表是Oracle的一 个内置表,该表只包含一行可以使用dual表来执行一些简单的查询,这些查询的 结果并非从特定表中获得。 SQL> SELECT sysdate 2 FROM dual; SYSDATE --------- 27-SEP-05 SQL> 通过输入EDIT命令,可以编辑SQL*Plus中的最后一条SQL语句。在输错SQL 语句或想修改SQL语句时,这种功能非常有用。在Windows系统中输入EDIT命令后, 就会启动记事本,然后就可以使用记事本来编辑SQL语句。在退出记事本并保存 SQL语句时,SQL语句就会被传递到SQL*Plus中,可以用/重新执行该条SQL语句。 - 10 -