Oracle基础知识介绍

Oracle简介

ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(
CLIENT/SERVER)或B/S体系结构的数据库之一。

Oracle数据库是什么?

Oracle Database,又名 Oracle RDBMS,简称 Oracle。Oracle 数据库系统是美国 Oracle
公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(client/server)或B/S体系结构的数据库之一,比如
SilverStream 就是基于数据库的一种中间件。Oracle
数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系型数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能,只要在一种机型上学习了
操作Oracle 的知识,便能在各种类型的机器上使用它。

数据文件(dbf)

数据文件是数据库的物理存储单位,而表空间TableSpace则是数据库的逻辑组成部分。数据库的数据是存储在表空间中的,而一个表空间可以由一个或多个数据文件组成,一个数据文件只能属于一个表空间。一旦数据文件被加入到某个表空间后,就不能删除这个文件,如果要删除某个数据文件,只能删除其所属于的表空间才行。

表空间

表空间是 Oracle 对物理数据库上相关数据文件(ORA 或者 DBF
文件)的逻辑映射。一个数据库在逻辑上被划分成一到若干个表空间,每个表空间包含了在逻辑上相关联的一组结构。每个数据库至少有一个表空间(称之为
system 表空间)。每个表空间由同一磁盘上的一个或多个文件组成,这些文件叫数据库文件(datafile)。一个数据文件只能属于一个表空间。

用户

用户是在实例下建立的。不同实例中可以建相同名字的用户。注意!表的数据,是由用户放入某一个表空间的,而这个表空间会随机把这些表数据放到一个或者多个数据文件中。由于
Oracle 的数据库不是普通的概念,oracle 是由用户和表空间对数据进行管理和存放的。但是表不是由表空间去查询的,而是由用户去查的。因为不同用户可以在同一个表空间建立同一个名字的表!这里区分就是用户了!
SCOTT 和 HR(用户)

scott 与 hr 就是初始的普通用户,这些用户下面都默认存在了表结构

关于数据库语言的分类

DDL:数据库定义语言:create、drop

DML:数据库的操作语言:insert、update、delete

DQL:数据库的查询语言:select

DCL:数据库的控制语言:grant、revoke

oracle数据库的优势

ORACLE 数据库系统能够在业内独占鳌头并不是空穴来风,下面我们来细数一下 ORACLE 数据库的优势所在:

  1. 完整的数据管理功能
  • 数据的大量性
  • 数据的保存的持久性
  • 数据的共享性
  • 数据的可靠性
  1. 完备关系的产品:
  • 信息准则—关系型 DBMS 的所有信息都应在逻辑上用一种方法,即表中的值显式地表示
  • 保证访问的准则
  • 视图更新准则—只要形成视图的表中的数据变化了,相应的视图中的数据同时变化
  • 数据物理性和逻辑性独立准则
  1. 分布式处理功能:
  • ORACLE 数据库自第5版起提供了分布式处理能力,到第7版有比较完善的分布式数据库功能了,一个ORACLE 分布式数据库由
    oraclerdbms、sqlNet、SQLCONNECT 和其他非 ORACLE 的关系型产品构成。
  • 用 ORACLE 能轻松的实现数据仓库的操作

以上是 Oracle 数据库的优势,从这些优势中不难看出这是一款功能强大的数据库系统。

数据库和实例

Oracle 数据库服务器由一个数据库和至少一个数据库实例组成。 数据库是一组存储数据的文件,而数据库实例则是管理数据库文件的内存结构。此外,数据库是由后台进程组成。

数据库和实例是紧密相连的,所以我们一般说的 Oracle 数据库,通常指的就是实例和数据库。

  1. Oracle数据库
    Oracle 数据库的一个基本任务是存储数据,以下部分简要地介绍 Oracle 数据库的物理和逻辑存储结构。
  • 物理存储结构
    物理存储结构是存储数据的纯文件。当执行一个 CREATE DATABASE 语句来创建一个新的数据库时,将创建下列文件:

● 数据文件:数据文件包含真实数据,例如销售订单和客户等。逻辑数据库结构(如表和索引)的数据被物理存储在数据文件中。

● 控制文件:每个 Oracle 数据库都有一个包含元数据的控制文件。元数据用来描述包括数据库名称和数据文件位置的数据库物理结构。

● 联机重做日志文件:每个 Oracle 数据库都有一个联机重做日志,里面包含两个或多个联机重做日志文件。联机重做日志由重做条目组成,能够记录下所有对数据所做的更改。

除这些文件外,Oracle 数据库还包括如参数文件、网络文件、备份文件以及用于备份和恢复的归档重做日志文件等重要文件。

  • 逻辑存储结构
    Oracle 数据库使用逻辑存储结构对磁盘空间使用情况进行精细控制。以下是 Oracle 数据库中的逻辑存储结构:

● 数据块(Data blocks):Oracle 将数据存储在数据块中。数据块也被称为逻辑块,Oracle 块或页,对应于磁盘上的字节数。

● 范围(Extents):范围是用于存储特定类型信息的逻辑连续数据块的具体数量。

● 段(Segments):段是分配用于存储用户对象(例如表或索引)的一组范围。

● 表空间(Tablespaces):数据库被分成称为表空间的逻辑存储单元。 表空间是段的逻辑容器。 每个表空间至少包含一个数据文件。

  1. Oracle实例
    Oracle 实例是客户端应用程序(用户)和数据库之间的接口。Oracle 实例由三个主要部分组成:系统全局区 (SGA),程序全局区 (PGA)
    和后台进程。如下图所示 :

DBWr(DBWR)在后来允许多进程写data file,所以改成DBWn了。

SGA 是实例启动时分配的共享内存结构,关闭时释放。 SGA 是一组包含一个数据库实例的数据和控制信息的共享内存结构。

不同于所有进程都可用的 SGA,PGA 是会话开始时为每个会话分配的私有内存区,当会话结束时释放。

主要的Oracle数据库的后台进程
以下是 Oracle 实例的主要后台进程:

● PMON 是 Oracle 数据库中最活跃的一个进程,是调节所有其他进程的进程监视器。PMON 能够清理异常连接的数据库连接,并自动向侦听器进程注册数据库实例。

● SMON 是执行系统级清理操作的系统监视进程。它有两个主要职责,包括在发生故障的情况下自动恢复实例,例如断电和清理临时文件。

● DBWn 是数据库编写器。Oracle 在内存中执行每个操作。因为在内存中的处理速度比在磁盘上快。DBWn 进程从内存读取数据并将其写回到磁盘。
一个 Oracle 实例有许多数据库编写器,如:DBW0,DBW1,DBW2等等。

● CKPT 是检查点进程。 在 Oracle 中,磁盘上的数据称为块,内存中的数据称为缓冲区。 当该块写入缓冲区并更改时,缓冲区变脏,需要将其写入磁盘。CKPT
进程使用检查点信息更新控制和数据文件头,并向脏盘写入脏缓冲区的信号。 请注意,Oracle 12c 允许全面和增量检查点。

● LGWR 是日志写入过程,是可恢复架构的关键。 在数据库中发生的每一个变化都被写出到一个名为 redo 日志文件中用于恢复目的。
而这些变化是由 LGWR 进程编写和记录的。 LGWR 进程首先将更改写入内存,然后将磁盘写入重做日志,然后将其用于恢复。

● ARCn 是归档进程,它将重做日志的内容复制到归档重做日志文件。存档程序进程可以有多个进程,如:ARC0,ARC1 和
ARC3,允许存档程序写入多个目标,如 D:驱动器,E:驱动器或其他存储。

● MMON 是收集性能指标的可管理性监控流程。

● MMAN 是自动管理 Oracle 数据库内存的内存管理器。

● LREG 是监听器注册过程,它使用 Oracle Net Listener 在数据库实例和调度程序进程上注册信息。

数据库创建导入

  1. 创建新用户并授予权限
  • 打开
    首先,启动 SQL plus 程序的命令行:
sqlplus
  • 登录
    当 SQL Plus 启动后,它会提示您输入用户名和密码。继续使用在安装 Oracle 数据库服务器期间输入的密码以 sys 用户身份登录:
sys as sysdba
  • 创建新用户
    使用以下 CREATE USER 语句创建一个新用户:ot,用于在可插入数据库中创建示例
    ot 可为任意名字
 CREATE USER OT IDENTIFIED BY Orcl1234;

上面的语句创建了一个名为:OT 的新用户,并在 IDENTIFIED BY 子句之后指定了一个密码,在这个示例中,创建的用户:OT
对应的密码为:Orcl1234 。

  • 授权
    通过使用以下 GRANT 语句授予 OT 用户权限:
GRANT CONNECT, RESOURCE, DBA TO OT;
  1. 登录新账号
    使用OT用户帐户连接到数据库(ORCL)。 当 SQL Plus 提示输入密码时,输入:Orcl1234。

对于 Oracle 11g/12c,使用如下命令(docker 中只需执行 CONNECT ot):

CONNECT ot@orcl

注意,OT 用户仅存在于 ORCL 数据库中,因此,必须在 CONNECT 命令中明确指定用户名为 ot@orcl。
3. 创建数据库表
要为示例数据库创建表,需要从 SQL plus 执行 ot_schema.sql 文件中的语句
在 SQL plus 的文件中执行 SQL 语句,可以使用下面的命令(语法):

 @path_to_sql_file

假设 ot_schema.sql 文件位于 F:\website\oraok\ot 目录中,则执行下面的语句 :

@F:\website\oraok\ot\11g\ot_schema.sql

当执行语句完成后,可以通过列出 OT 用户拥有的表来验证表是否成功创建。以下是这样做的声明:

SELECT table_name FROM user_tables ORDER BY Table_name;

在这个语句中,我们从 user_tables 表中选择了 table_name 列中的值,并按字母顺序排列了表名
4. 将数据加载到表中
要将数据加载到表中,请按如下所示执行 ot_data.sql 文件中的语句:

@F:\website\oraok\ot\11g\ot_data.sql

如果没有看到任何错误消息,则意味着数据已成功加载导入。

还可以使用 SELECT 语句验证数据是否已成功加载导入。 例如,要获取 contacts 表中的行数,请使用以下语句:

SELECT COUNT(*) FROM contacts;

数据库连接

使用SQL * Plus连接Oracle数据库服务器

SQL * Plus 是交互式查询工具,我们在安装 Oracle 数据库服务器或客户端时会自动安装。SQL * Plus 有一个命令行界面,允许您连接到 Oracle 数据库服务器并交互执行语句。
注意:如果有使用过 MySQL 或 PostgreSQL,SQL * plus 与 MySQL 中的 mysql 程序或 PostgreSQL 中的 psql 类似。

sqlplus

启动 SQLPlus 图标时,会提示输入用户名和密码。输入在安装Oracle数据库服务器期间设置的用户名和密码。如果不知道要使用哪个帐户,请询问安装数据库的管理员。

在 Oracle 12c 中,当连接到数据库服务器时,默认数据库是名为 CDB$ROOT 的 ROOT 容器数据库。 要显示数据库名称,请使用 SHOW 命令:

SHOW con_name;

如果要切换到可插拔数据库,请使用ALTER SESSION语句将当前数据库设置为可插入数据库,例如:PDBORDL,如下所示:

ALTER SESSION SET CONTAINER = PDBORDL;

现在,您连接到 PDBORCL 数据库。

要断开用户与 Oracle 数据库服务器的连接,请使用 EXIT 命令:

EXIT

要将OT用户连接到位于PDBORCL可插拔数据库中的示例数据库,请输入以下命令:

sqlplus OT@PDBORCL

SQL Plus 会提示输入 OT 用户的密码。输入密码,您将连接到 Oracle 数据库服务器中的 PDBORCL* 数据库。

使用 SQL Developer 连接到 Oracle 数据库服务器

SQL Developer 是一个用于在 Oracle 数据库中使用 SQL 的免费 GUI 工具。与 SQL * Plus 程序一样,SQL Developer 在安装 Oracle 数据库服务器或客户端时自动安装。

要启动 SQL Developer 程序,请单击开始菜单中Oracle程序文件夹中的SQL Developer图标,如下图所示:

安装 Oracle 11g 会自带一个叫做 SQL Developer 的工具,它的功能非常强大。
SQL Developer 不能用于创建 Oracle 数据库,只能用来连接已创建的数据库,我们一般都是使用 Database Configuration Assistant(简称 DBCA)来创建数据库

打开 DBCA 以后按照向导来创建数据库,非常简单,这里不再赘述。

在 SQL Developer 中我们新建一个连接,点击左上角的“绿色加号”

填写完配置以后可以点击“Test”来测试数据库连接是否正确

创建新用户

接着为 ORCL 这个数据库创建新用户

  • 填写用户名和密码,以及为用户指定表空间。
  • 为用户分配权限
  • 查看创建用户和分配权限所对应的 sql 代码

使用新用户创建数据库连接

使用新账户创建数据库连接的方法和第一步类似,这里不再赘述。

使用新用户创建数据库连接

使用新账户创建数据库连接的方法和第一步类似,这里不再赘述。

  1. 先写好驱动字符串,连接字符串,用户名和密码字符串。

localhost 是本地地址

1521 是Oracle 默认端口

orcl 是Oracle 默认名称

uname 和 pwd 是 Oracle的用户名和密码

  1. 加载驱动 Class.forName(driverStr);

  2. 获取连接 conn=DriverManager.getConnection(orclStr,uname,pwd);

  3. 然后就可以进行数据库的操作。

  4. 关闭数据库,一定要记住反序关闭,先内后外。

  5. 这样就连接到数据库并成功对数据库进行了一次操作。

基础知识

查询数据

本节将学习如何从Oracle数据库中查询数据。

● Select语句 - 演示如何查询单个表中的数据。

排序数据

● ORDER BY语句 - 按升序或降序对查询的结果集进行排序。

过滤数据

● DISTINCT - 介绍如何消除查询输出中的重复行。

● WHERE - 演示如何为查询返回结果集中的行记录指定过滤条件。

● AND - 组合两个或两个以上的布尔表达式,如果所有表达式都为true,则返回true。

● OR - 组合两个或两个以上的布尔表达式,如果其中一个表达式为true,则返回true。

● FETCH - 演示如何使用行限制子句限制查询返回的行数。

● IN - 确定值是否与列表或子查询中的任何值相匹配。

● BETWEEN - 基于一系列值(区间值)过滤数据。

● LIKE - 根据特定模式执行匹配。

连接表

● INNER JOIN - 演示如何从表中查询具有与其他表匹配的行记录。

● LEFT JOIN - 介绍左连接概念,并学习如何使用它选择左表中具有,但右表中不具有的行记录。

● RIGHT JOIN - 解释右连接概念,并演示如何从右表查询具有,但左表中不具有的行记录。

● CROSS JOIN –介绍如何从多个表中构建笛卡尔乘积。

● Self Join - 演示如何将表连接到自身以查询分层数据或比较同一个表中的行记录。

分组数据

● GROUP BY - 演示如何将行分组为子组,并为每个分组应用聚合函数。

● HAVING - 演示如何过滤分组中的行记录。

子查询

● 子查询 - 介绍子查询的概念以及如何使用子查询来执行高级数据选择技术。

● 相关子查询 - 了解相关的子查询,它是一个依赖于外部查询返回的值的子查询。

● EXISTS和NOT EXISTS - 检查子查询返回的行是否存在。

● ANY,SOME和ALL - 将值与列表或子查询进行比较。

设置操作符

本节介绍使用集合运算符合并两个或多个独立查询的结果集的步骤。

● UNION - 演示如何将两个查询的结果合并为一个结果。

● INTERSECT - 演示如何实现两个独立查询的结果的交集。

● MINUS - 学习如何从一个结果集中减去另一个结果(也就是求差集)。

修改数据

在本节中,将学习如何更改Oracle数据库的数据内容。用于修改数据的SQL命令被称为数据操纵语言(DML)。

● INSERT - 学习如何在表中插入一行。

● INSERT INTO SELECT - 从查询结果中将数据插入到表中。

● INSERT ALL - 讨论多重插入语句,将多行插入到一个或多个表中。

● UPDATE - 演示如何更新表的存在的数据值。

● DELETE - 演示如何从表中删除一行或多行。

● MERGE - 使用单个语句逐步完成插入,更新和删除操作。

数据定义

本节介绍如何管理数据库和表的最重要的数据库对象。

● CREATE TABLE - 演示如何在数据库中创建新表。

● IDENTITY列 - 了解如何使用IDENTITY子句来定义表的标识列。

● ALTER TABLE - 演示如何改变表的结构。

● ALTER TABLE ADD列 - 显示如何将一个或多个列添加到现有表

● ALTER TABLE MODIFY列 - 演示如何更改表中现有列的定义。

● DROP COLUMN - 了解如何使用各种语句从表中删除一列或多列。

● DROP TABLE - 演示如何从数据库中删除表。

● TRUNCATE TABLE - 更快,更有效地删除表中的所有数据。

● RENAME TABLE - 学习如何重命名表和处理其依赖对象的过程。

Oracle数据类型

● Oracle数据类型 - 内置Oracle数据类型的概述。

● NUMBER - 介绍数字数据类型,并展示如何使用它为表定义数字列。

● FLOAT - 通过实例来解释Oracle中的浮点数据类型。

● CHAR - 了解固定长度的字符串类型。

● NCHAR - 演示如何存储固定长度的Unicode字符数据,并解释CHAR和NCHAR数据类型之间的区别

● VARCHAR2 - 向您介绍可变长度字符,并向您展示如何在表中定义可变长度字符列。

● NVARCHAR2 - 了解如何在数据库中存储可变长度的Unicode字符。

● DATE - 讨论日期和时间数据类型,并说明如何有效地处理日期时间数据。

● TIMESTAMP - 介绍如何以小数秒精度存储日期和时间。

● INTERVAL - 介绍区间数据类型,主要用来存储时间段。

● TIMESTAMP WITH TIME ZONE - 了解如何使用时区数据存储日期时间。

约束

● 主键 - 解释主键概念,并演示如何使用主键约束来管理表的主键。

● 外键 - 解释介绍外键概念,并演示如何使用外键约束来强制表之间的关系。

● NOT NULL约束 - 演示如何确保列不接受NULL值。

● UNIQUE约束 - 讨论如何确保存储在一列或一组列中的数据在整个表内的行之间是唯一的。

● CHECK约束 - 在将数据存储到表中之前添加用于检查数据的逻辑的过程。

  • 12
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值