Oracle数据库入门

Oracle数据库介绍,安装和基本操作

Posted by Wenqin on September 14, 2025

Oracle数据库入门

1. 数据库概述

1.1 数据库介绍

什么是数据库

  • 数据库,简单来说,就是存放数据的 “仓库”。

在日常生活中,我们会有各种各样的数据,比如家里的购物清单、学校的学生成绩、公司的客户信息等。数据库就像是一个超级大柜子,把这些数据按照一定的规则整理好,存放在里面,方便我们查找和使用。

数据库可以做什么?

  1. 数据存储:数据库最基本的功能就是存储数据。无论是文字、数字、图片,还是音频、视频等各种类型的数据,都可以存储在数据库中。比如,一家电商网站需要存储大量的商品信息,包括商品名称、价格、描述、图片等,这些数据就可以存放在数据库里。
  2. 数据管理:数据库可以帮助我们管理数据。它可以对数据进行分类、排序、筛选等操作。例如,学校的教务系统,要管理学生的选课信息,通过数据库就能很方便地查看某个学生选了哪些课程,某个课程有哪些学生选修等。
  3. 数据查询:这是数据库非常重要的一个功能。我们可以根据自己的需求,从数据库中快速查询到想要的数据。比如,我们在搜索引擎上搜索信息,搜索引擎其实就是在后台的数据库中进行查询,然后把相关的结果展示给我们。再比如,在一个员工信息数据库中,我们想知道所有年龄在 30 岁以上的员工,通过数据库的查询功能,就能很快得到结果。
  4. 数据更新和修改:如果数据发生了变化,我们可以在数据库中对其进行更新和修改。比如,商品的价格调整了,我们就可以在电商网站的数据库中修改商品的价格信息。
  5. 数据共享:数据库允许多个用户同时访问和使用其中的数据。比如,公司的不同部门可以同时从公司的数据库中获取自己需要的数据,实现数据的共享,提高工作效率。
  6. 数据备份和恢复:为了防止数据丢失,数据库可以进行数据备份。当出现意外情况,如电脑故障、病毒攻击等导致数据丢失时,可以从备份中恢复数据。就像我们会定期备份手机里的照片和联系人信息,以防手机丢失或损坏后数据丢失。

总之,数据库在我们的生活和工作中无处不在,它帮助我们更好地管理和利用数据,让我们能够快速、准确地获取所需信息,为各种业务和应用提供了强大的支持。

数据库要怎么使用呢?

简单来讲就是需在计算机中安装一个数据库的软件,通过这个软件可以将数据保存在软件下的某些文件中,然后我们通过一门专业的语言(SQL)可以高效的对文件中的数据进行增删改查的操作。

6666666

在现今的行业中,数据库的种类有很多,各自的数据库也有其独特的特性。

MySQL数据库

  • 最早是瑞典一家公司开发的,后来被sun公司收购,再后来被oracle公司收购。开源且免费,但是mysql从5.6版本之后出现了两种版本:一种的社区版本(免费),一种是企业版(收费)。

Oracle数据库

  • oracle公司的代表产品,闭源且付费,多应用于政府、银行、电商等项目。

DB2数据库

  • IBM公司的产品,闭源且付费,早起多应用于金融行业。

SqlServer数据库

  • 微软旗下的产品,闭源且付费,仅能应用在windows平台的操作系统上。

1.2 关系型数据库

在正式学习Oracle数据库之前,需要先了解一个概念:关系型数据库(RDBMS)。

概念:建立在关系模型基础之上,由多张相互连接的二维表组成的数据库。

而所谓二维表,指的是由行和列组成的表,如下图:

image-20221205145028667

二维表的优点:

  • 使用表存储数据,格式统一,便于维护

  • 使用SQL语言操作,标准统一,使用方便,可用于复杂查询

之前提到的MySQL、Oracle、DB2、SQLServer这些都是属于关系型数据库,里面都是基于二维表存储数据的。

结论:基于二维表存储数据的数据库就成为关系型数据库。

2. Oracle数据库

2.1 什么是Oracle

Oracle数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品。

Oracle通常应用于大型系统的数据库产品。Oracle在海量存储、高性能、高并发、安全性方面都相当不错。

Oracle数据库具有以下特点:

1)支持多用户、大事务量的事务处理(支持大并发、大访问量)

2)数据安全性和完整性控制(金融行业对安全性要求比高,通常使用ORACLE)

3)支持分布式数据处理

4)可移植性

MySQL和ORACLE的区别:

1、MySQL属于轻量级数据库(中小型数据库);Oracle属于重量级数据库(大型数据库)

2、MySQL是免费开源;Oracle是商业级的数据库(收费、提供技术支持)

个人观点:MySQL是实用很好用,oracle就是很好很强大

2.2 Oracle体系结构

1、数据库

Oracle数据库是数据的物理存储集合(各种物理文件的集合)。包括数据库文件ORA或DBF、控制文件、联机日志、参数文件。其实Oracle数据库的概念和其它数据库不一样,这里的数据库是一个操作系统只有一个库。可以看作是Oracle就只有一个大数据库。

2、实例

实例:数据库启动时初始化的一组进程和内存结构。

在启动数据库并使用数据库的时候,实际上是连接到该数据库的实例,通过实例来连接、使用数据库。

在启动数据库时,Oracle首先要在内存中获取、划分、保留各种用途的区域,运行各种用途的后台进程,即创建一个实例(instance),然后由该实例装载、打开数据库,最后由这个实例来访问和控制数据库的各种物理结构。一个数据库可以有n个实例。

img

3. SQL简介

前面我们提到过使用SQL语言来管理和操作数据库。那什么是SQL呢?

SQL(Structured Query Language):结构化查询语言。

SQL是一门操作关系型数据库的编程语言,通过 SQL可以实现与数据库的通信,可以执行CRUD等操作。

  • CRUD是指增加(Create)、检索(Retrieve)、更新(Update)和删除(Delete)

SQL语言相对其他编程类语言来讲简单易学、使用方便、且功能强大。

数据开发人员通过编写SQL程序,来向数据库执行CRUD等操作。

3.1 通用语法

在学习具体的SQL语句之前,先来了解一下SQL语言的通用语法:

  1. SQL语句可以单行或多行书写,以分号结尾

    1
    2
    3
    4
    5
    6
    
    -- 把SQL语句写在一行
    SELECT * FROM student;
       
    -- 把SQL语句写在多行
    SELECT  *  
    FROM student;
    
  2. 可使用空格和缩进来增强语句的可读性。

  3. SQL语句不区分大小写,但在开发中关键字通常使用大写

    1
    2
    3
    
    select *  from  student;
    -- 通常建议:关键字使用大写
    SELECT *  FROM  student;
    
  4. SQL语句中有两种注释:

    • 单行注释: – 注释内容

      1
      2
      
      -- SQL语句单行注释(仅对当前行有效)
      SELECT * FROM teacher;
      
    • 多行注释: /* 注释 */

      1
      2
      3
      4
      5
      6
      
      /*
      多行
      注释
      内容
      */
      SELECT * FROM student;
      

3.2 SQL分类

在Oracle中SQL语句根据其功能被分为五大类:DDL、DML、DQL、DCL 、DTL

分类 全称 说明
DDL Data Definition Language 数据定义语言。Oracle用来定义数据表,列等。
DML Data Manipulation Language 数据操作语言。用来对数据库表中的数据进行增删改。
DQL Data Query Language 数据查询语言。用来查询数据库中表的记录。
DCL Data Control Language 数据控制语言,用来操作用户和权限。
DTL Data Transaction Language 数据事务语言。用来操作事务。

4. Oracle安装

4.1 挂载Oracle虚拟机

1
2
3
4
5
6
7
8
9
10
11
提供的虚拟机  =>  host: yzd     ip: 192.168.105.129

Linux系统信息:
user : root  
pwd : 123456
---------------------------
Oracle数据库信息:     管理员账户:sys     密码:123456
sid : orcl  
user : yzd  
pwd : 123456  
port : 1521

步骤1:在VMware中选择”文件” -> “打开”

image-20250423190520764

步骤2:找到提供的Oracle虚拟机

image-20250423190617031

步骤3:挂载完成后,点击”开启此虚拟机”

image-20250423190732775

步骤4:如有弹出提示窗体,点击”我已复制该虚拟机”

image-20250423190801301

步骤5:等待虚拟机中的linux系统启动….

步骤6:修改linux中的网络为静态ip地址

1
2
3
4
5
# 第1步: 查看Linux系统网络ip
ip addr   # 确认自己的ip地址是多少

# 第2步: 打开并修改网络配置文件
vim /etc/sysconfig/network-scripts/ifcfg-ens33
  • 效果图如下(仅供参考):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    TYPE="Ethernet"
    PROXY_METHOD="none"
    BROWSER_ONLY="no"
    BOOTPROTO="dhcp"          # 设置IP方式:静态IP 或 动态IP
    DEFROUTE="yes"            
    IPV4_FAILURE_FATAL="no"
    IPV6INIT="yes"
    IPV6_AUTOCONF="yes"
    IPV6_DEFROUTE="yes"
    IPV6_FAILURE_FATAL="no"
    IPV6_ADDR_GEN_MODE="stable-privacy"
    NAME="ens33"
    UUID="58485d82-b73a-4505-8efb-42ae6fc379de"
    DEVICE="ens33"
    ONBOOT="yes"            # 开机时是否启用此网络
    
1
2
3
4
5
6
7
8
9
# 第3步: 修改网络配置文件中的内容(参考)
BOOTPROTO="static"       # 设置为:静态IP方式
ONBOOT="yes"             # 设置为:开机时启用此网络 
IPADDR=192.168.200.128   # 设置为:自己linux系统的ip地址(之前自己 ip addr 查看到的ip)
NETMASK=255.255.255.0    # 子网掩码 
GATEWAY=192.168.200.2    # 设置默认网关地址

# 第4步: 重启网络服务
systemctl restart network

步骤7:修改主机名和ip的映射

1
2
3
4
5
vim /etc/hosts

-------- 修改hosts文件 --------
# 自己的IP地址   主机名
192.168.200.128  yzd     

4.2 使用客户端远程连接Oracle

说明:提前安装客户端DBeaver

1
2
# 在linux系统中查看Oracle数据库是否启动
ps -ef | grep pmon  # 查看数据库实例是否运行。 如有ora_pmon_orcl的进程表示Oracle已启动

步骤1:创建新连接

image-20250423224320318

步骤2:选择”Oracle数据库”

image-20250423224607633

步骤3:下载Oracle驱动文件

image-20250423191720440

步骤4:配置Oracle数据库连接参数

image-20250423224942685

忽略弹出的警告

image-20250423225014862

连接成功:

image-20250423225053127

步骤5:测试成功后,点击”完成”

image-20250423225127885

image-20250423225236401

5. 项目案例介绍

5.1 项目介绍与需求分析

XXX市自来水公司为更好地对自来水收费进行规范化管理,决定委托开发《自来水公司收费系统》。考虑到自来水业务数量庞大,数据并发量高,决定数据库采用ORACLE数据库。主要功能包括:

1、基础信息管理:

(1)业主类型设置

(2)价格设置

(3)区域设置

(4)收费员设置

(5)地址设置

2、业主信息管理:

(1)业主信息维护

(2)业主信息查询

3、收费管理:

(1)抄表登记

(2)收费登记

(3)收费记录查询

(4)欠费用户清单

4、统计分析:

(1)收费日报单

(2)收费月报表

5.2 表结构设计

1、业主类型表 : t_ownertype

字段名 类型(位数) 是否必填 说明
ID NUMBER 主键
NAME VARCHAR2(30) 类型名称

2、价格表 :t_pricetable

字段名 类型(位数) 是否必填 说明
ID NUMBER 主键
PRICE NUMBER(10,2) 价格
OWNERTYPEID NUMBER 业主类型ID
MINNUM NUMBER(10,2) 区间数开始值
MAXNUM NUMBER(10,2) 区间数截止值

3、区域表 :t_area

字段名 类型(位数) 是否必填 说明
ID NUMBER 主键
NAME VARCHAR2(30) 区域名称

4、收费员表 :t_operator

字段名 类型(位数) 是否必填 说明
ID NUMBER 主键
NAME VARCHAR2(30) 操作员名称

5、地址表 :t_address

字段名 类型(位数) 是否必填 说明
ID NUMBER 主键
NAME VARCHAR2(30) 地址名称
AREAID NUMBER 区域ID
OPERATORID NUMBER 操作员ID

6、业主表 :t_owners

字段名 类型(位数) 是否必填 说明
ID NUMBER 主键
NAME VARCHAR2(30) 业主名称
ADDRESSID NUMBER 地址ID
HOUSENUMBER VARCHAR2(30) 门牌号
WATERMETER VARCHAR2(30) 水表编号
ADDDATE DATE 登记日期
OWNERTYPEID NUMBER 业主类型ID

7、收费账单 :t_account

字段名 类型(位数) 是否必填 说明
ID NUMBER 主键
OWNERID NUMBER 业主编号
OWNERTYPEID NUMBER 业主类型
AREAID NUMBER 所在区域
YEAR CHAR(4) 账务年份
MONTH CHAR(2) 账务月份
NUM0 NUMBER   上月累计数
NUM1 NUMBER   本月累计数
USENUM NUMBER   本月使用数
METERUSERID NUMBER   抄表员
METERDATE DATE   抄表日期
MONEY NUMBER(10,2)   应缴金额
ISFEE CHAR(1) 是否缴费
FEEDATE DATE   缴费日期
FEEUSERID NUMBER   收费员

上述7张表的数据模型如下:

img

6. 创建项目中数据表

在ORACLE中,创建表之前需要先创建表空间,再创建用户,并把创建的表空间给用户(如果未给指定表空间,默认使用系统的SYSTEM表空间)。

image-20250424014232949

6.1 表空间

在Oracle数据库中,创建表之前需要先创建表空间(数据表会归属于某个表空间下)。

什么是表空间呢?

  • 在 Oracle 里,表空间就好比是一个大仓库,用来存放各种数据。比如说,你有很多不同类型的东西要存放,像衣服、书籍、玩具等,你就可以把不同类型的东西放在仓库的不同区域,这样找起来方便,管理也容易。表空间也是这个道理,它可以把数据库中的数据按照不同的用途或性质,存放在不同的 “区域” 里。比如,你可以把公司员工的信息放在一个表空间里,把公司产品的信息放在另一个表空间里。

表空间的作用和价值:

  • 数据管理更有条理。就像仓库分区能让你快速找到想要的东西一样,表空间能让数据库管理员很容易地找到和管理特定的数据。
  • 提高数据库的性能。通过合理分配不同类型的数据到不同表空间,数据库可以更高效地读取和写入数据,就好像你把常用的东西放在容易拿到的地方,用的时候就能很快拿到一样。
  • 增强数据的安全性。你可以对不同的表空间设置不同的访问权限,比如有些表空间只有特定的人才能看或者修改,这样就能保护数据不被随意访问和破坏啦。

创建表空间语法: tablespace是表空间关键字

1
2
3
4
5
6
-- 标准语法结构(照着模板格式写即可)
CREATE TABLESPACE waterboss
DATAFILE '/home/oracle/waterboss.dbf'  -- 物理文件存储路径
SIZE 10m  -- 初始化物理文件大小
AUTOEXTEND ON  -- 物理文件存储不足时会自动扩容
NEXT 10m  -- 自动扩容大小为10M
  • 解释:
    • waterboss为表空间名称
    • datafile 用于设置物理文件名称
    • size 用于设置表空间的初始大小
    • autoextend on 用于设置自动增长,如果存储量超过初始大小,则开始自动扩容
    • next 用于设置扩容的空间大小

表空间是由一个或多个数据文件组成的,一个数据文件只能与一个表空间相关联。

表空间的大小等于构成该表空间的所有数据文件大小之和。

删除表空间:

1
2
3
4
5
-- 删除表空间(但不会删除表空间下的数据文件)
DROP TABLESPACE waterboss; 

-- 删除表空间并且删除表空间下的数据文件
DROP TABLESPACE waterboss INCLUDING CONTENTS AND DATAFILES;

修改表空间:

1
2
3
4
5
6
7
8
9
10
11
12
-- 修改表空间
ALTER DATABASE   
    DATAFILE '/home/oracle/waterboss.dbf' 
    AUTOEXTEND ON 
    NEXT 20M 
    MAXSIZE 2G  
    
-- 修改原有的数据文件大小
alter database datafile '/home/oracle/waterboss.dbf' resize 50M;

-- 为表空间增加新的数据文件
alter tablespace 表空间名 add datafile 数据文件 size 大小

查看Oracle下的表空间:

1
SELECT * FROM DBA_TABLESPACES;
  • 查询结果:SYSTEMSYSAUXTEMPUNDOTBS1USERS
    • SYSTEM是系统表空间,存放系统的最基本的信息,如果SYSTEM表空间坏掉,Oracle将无法启动
    • SYSAUX从10g中引入,作为SYSTEM的辅助表空间,用以减少SYSTEM表空间的负荷 。以前其他表空间中的一些组件,现在放到SYSAUX表空间中了
    • TEMP是临时表空间,当排序不能在分配的空间中完成时,就会使用磁盘排序的方式,即在Oracle实例中的临时表空间中进行
    • UNDOTBS1是撤销表空间(回滚),是UNDO类型的表空间,保存用户进行DML操作中,修改前的数据
    • USERS是数据库默认的永久表空间

6.2 创建用户

创建用户的语法: create user是创建用户的关键字

1
CREATE USER wateruser DEFAULT TABLESPACE waterboss IDENTIFIED BY 123456
  • 说明:
    • wateruser为创建的用户名
    • identified by 用于设置用户的密码
    • default tablesapce 用于指定默认表空间名称

创建完ORACLE用户后,登录时发现:无法登录,权限不足。

删除用户:

1
DROP USER 用户名 CASCADE;

查看用户归属的表空间:

1
2
3
4
-- 说明:Oracle数据库关键字不区分大小写, 但表中的数据是区分大小写的。
SELECT username, default_tablespace FROM dba_users WHERE username = 'WATERUSER';

-- 在oracle中有一些管理数据库相关信息的表: dba_xxxx 、user_xxxx

6.3 用户授权

ORACLE在创建用户后,新创建的用户不具备操作数据库的权限(例:登录权限),需要给用户授权。

1
2
3
GRANT dba TO wateruser ; -- 把数据库中的DBA权限授予指定的用户

GRANT CREATE SESSION, CREATE TABLESPACE,CREATE TABLE  TO 用户;
  • 给用户wateruser赋予DBA权限后即可登陆

ORACLE中将权限分为两类:

  • 系统权限:系统规定用户使用数据库的权限(系统权限是对用户而言)

    • 系统权限提供了用户在整个DBMS中执行操作的能力,会影响到整个数据库系统的安全
  • 对象权限:是指赋予用户在特定数据库对象执行特定操作的能力(是针对表或视图而言的)

    • 数据库对象包括:数据表、视图、字段、序列等

      语法:GRANT 对象权限[,对象权限,…] ON 用户名.对象 TO 用户

6.4 创建表

建表语法:

1
2
3
4
5
CREATE TABLE 表名称 (
  字段名   数据类型(长度)  [约束]  [默认值],
  字段名   数据类型(长度)  [约束]  [默认值],
  .......
)tablespace 表空间名;

示例:创建业主表

字段名 类型(位数) 是否必填 说明
ID NUMBER 主键
NAME VARCHAR2(30) 业主名称
ADDRESSID NUMBER 地址ID
HOUSENUMBER VARCHAR2(30) 门牌号
WATERMETER VARCHAR2(30) 水表编号
ADDDATE DATE 登记日期
OWNERTYPEID NUMBER 业主类型ID
1
2
3
4
5
6
7
8
9
10
CREATE TABLE t_owners
(
 id NUMBER PRIMARY KEY , -- 业主编号
 name VARCHAR2(30),   -- 业主名称
 addressid NUMBER,   -- 地址id
 housenumber VARCHAR2(30),  -- 门牌号
 watermeter NUMBER,   -- 水表编号
 adddate DATE,   -- 登记日期
 ownertypeid NUMBER -- 业主类型id
)TABLESPACE waterboss;  -- 创建表时指定表空间

6.5 数据类型

在Oracle中需要给存储的数据需要指定具体的类型,称为数据类型。

数据类型的划分:

  • 字符型

    • CHAR : 固定长度的字符类型,最多存储2000个字节
    • VARCHAR2 :可变长度的字符类型,最多存储4000个字节
    • LONG : 大文本类型。最大可以存储2个G
  • 数值型

    • NUMBER : 数值类型

      1
      2
      
      NUMBER(5)  -- 最大可以存的数为99999   
      NUMBER(5,2)  -- 最大可以存的数为999.99  
      
  • 日期型

    • DATE:日期时间型,精确到秒。
      • MySQL中:日期是date(年月日)、日期时间是datetime(年月日时分秒)
    • TIMESTAMP:精确到秒的小数点后9位
  • 二进制型(大数据类型)

    • CLOB : 存储字符,最大可以存4个G
    • BLOB:存储图像、声音、视频等二进制数据,最多可以存4个G

现在开发中的作法:把图像、声音、视频文件存储到文件服务器中(例:云存储服务器OSS)。数据表中的字段存储的是文件的URL。