第一章 ORACLE 简介
1.1 什么是 ORACLE
ORACLE数据库系统是美国ORACLE 公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器体系结构的数据库之一。
英文官网:Database | Oracle
中文官网:数据库 | Oracle 中国
ORACLE 通常应用于大型系统的数据库产品。
ORACLE 数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。
DB-Engines排名:DB-Engines Ranking - popularity ranking of database management systems
Oracle 数据库主要有四个版本:
- 企业版:它是最强大和最安全的版本它提供所有功能包括卓越的性能和安全性。
- 标准版:它为不需要企业版强大软件包,提供用户基本功能。
- 易捷版(XE):它是轻量级,免费且有限的 Windows 和 Linux 版本。
- Oracle Lite:专为移动设备而设计。
ORACLE 数据库具有以下特点:
- 支持多用户、大事务量的事务处理
- 数据安全性和完整性控制
- 支持分布式数据处理
- 可移植性
1.2 ORACLE 体系结构
1.2.1 数据库
Oracle 数据库是数据的物理存储,是一组存储数据的文件。 这就包括(数据文件 ORA 或者 DBF、控制文件、联机日志、参数文件)。
其实 Oracle 数据库的概念和其它数据库不一样,这里的数据库是一个操作系统只有一个库。可以看作是 Oracle 就只有一个全局的数据库,这一点和MySQL不太一样。
1.2.2 实例
一个Oracle 实例(Oracle Instance)有一系列的后台进程(Backguound Processes)和内存结构(Memory Structures)组成。是管理数据库文件的。一个数据库可以有 n 个实例。但通常情况下,一个实例对应一个数据库。
1.2.3 数据文件(dbf)
数据文件是数据库的物理存储单位。也就是说最终数据落到磁盘上是以文件形式存在的,这个文件就叫做数据文件,后缀名是dbf。
数据库的数据是存储在表空间中的,真正是在某一个或者多个数据文件中。而一个表空间可以由一个或多个数据文件组成,一个数据文件只能属于一个表空间。一旦数据文件被加入到某个表空间后, 就不能删除这个文件,如果要删除某个数据文件,只能删除其所属于的表空间才行。
1.2.4 表空间
表空间是 Oracle 对物理数据库上相关数据文件(ORA 或者 DBF 文件)的逻辑映射。一个数据库在逻辑上被划分成一到若干个表空间,每个表空间包含了在逻辑上相关联的一组结构。每个数据库至少有一个表空间(称之为 system 表空间)。
每个表空间由同一磁盘上的一个或多个文件组成,这些文件叫数据文件
(datafile)。一个数据文件只能属于一个表空间。表空间下还有进一步的逻辑划分。
注:表的数据,是有用户放入某一个表空间的,而这个表空间会随机把这些表数据放到一个或者多个数据文件中。
由于 oracle 的数据库不是普通的概念,oracle 是有用户和表空间对数据进行 管理和存放的。但是表不是有表空间去查询的,而是由用户去查的。因为不同用户可以在同一个表空间建立同一个名字的表!这里区分就是用户了!
1.2.5 用户
用户是在表空间下建立的。用户登陆后只能看到和操作自己的表, ORACLE的用户与 MYSQL 的数据库类似,每建立一个应用需要创建一个用户。
MySQL中是一个用户可以查看、管理操作多个数据库,不同的应用创建不同的数据库。
Oracle是一个数据库下可以创建不同的用户,每个用户可以操作属于自己的表。正好和MySQL的概念是反过来的。
第二章 ORACLE 安装与配置
2.1 安装虚拟机
注意:安装路径要选择没有中文没有空格的。
安装好虚拟机软件之后,需要将虚拟机中vmnet8的网段设置为192.168.88.0网段,简称88网段。
Window中的VMnet8虚拟网卡配置:
2.2 导入虚拟机到VMware
2.2.1 oracle虚拟机导入
step1:解压压缩包
解压缩到一个没有中文、没有空格的路径下
解压后应如图样式
step2:打开VMware,导入虚拟机
step3:根据需求调整内存等(可选)
step4:开机
step5:登录Linux系统,验证Oracle服务是否自启动成功
2.3 Oracle命令行客户端--SQLPlus
SQLPlus是 Oracle 数据库的命令行工具,用于执行 SQL 和 PL/SQL 命令。它是数据库管理员和开发人员和Oracle交互的一款工具。
- 可以直接在终端命令行中使用
- 如果想在自己的windows电脑上使用,需要安装Oracle Instant Client,参考教程:
InstantClient+PLSQL安装配置教程-CSDN博客
- 当客户端和Oracle服务不在一台机器上的时候,这时候属于远程连接,相关命令如下:
sqlplus system/123456@192.168.88.188:1521/orcl
用户名system 密码123456 Oracle服务器地址192.168.88.188 全局数据库名称orc
2.4 Oracle可视化客户端--PL/SQL Developer
PL/SQL Developer是一款集成开发环境,由Allround Automations公司进行开发,是一款专门面向Oracle数据库存储的程序单元。
2.5 Oracle可视化客户端—Datagrip
DataGrip是由 JetBrains 开发的一款强大的关系数据库集成开发环境(IDE)。它为开发人员和数据库管理员提供了一个统一的界面,用于管理和开发各种关系型数据库。DataGrip 支持多种流行的数据库系统,包括 MySQL、PostgreSQL、Microsoft SQL Server、Oracle 等。
- 打开Datagrip,新建一个project工程
- 创建Oracle连接
- 将下载好的驱动文件解压到一个没有中文,没有空格的路径下
- 配置驱动
- 设置相关参数
- 测试连接是否正常
- 控制台sql执行测试
第五章 准备数据,项目案例《自来水公司收费系统》
3.1项目介绍与需求分析
XXX 市自来水公司为更好地对自来水收费进行规范化管理,决定开发《自来水公司收费系统》。考虑到自来水业务数量庞大,数据并发量高,决定数据库采用 ORACLE 数据库。主要功能包括:
1.、基础信息管理:
(1)业主类型设置
(2)价格设置
(3)区域设置
(4)收费员设置
(5)地址设置
2、业主信息管理:
(1)业主信息维护
(2)业主信息查询
3、收费管理:
(1)抄表登记
(2)收费登记
(3)收费记录查询
(4)欠费用户清单
4、统计分析
(1)收费日报单
(2)收费月报表
3.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
NUMBER
是
门牌号
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 张表的物理模型如下:
3.3 创建表空间
--1、查看已有表空间的存储路径 |
解释:
waterboss 为表空间名称
datafile 用于设置物理文件名称
size 用于设置表空间的初始大小
autoextend on 用于设置自动增长,如果存储量超过初始大小,则开始自动扩容
next 用于设置扩容的空间大小
3.4 创建用户
--1、查看当前所有用户 |
wateruser 为创建的用户名。
identified by 用于设置用户的密码
default tablesapce 用于指定默认表空间名称
3.5 用户赋权
-- 给用户赋予dba权限 |
给用户 wateruser 赋予 DBA 权限后即可登陆
3.6 切换用户wateruser
第四章 表的创建、修改与删除
4.1 创建表
语法:
create table 表名称( ---------------------------------------------------------------------- 完整语法如下: CREATE TABLE table_name ( column1 datatype [DEFAULT expression] [constraint], column2 datatype [DEFAULT expression] [constraint], ... ); table_name:表的名称。 column1, column2, ...:列的名称。 datatype:列的数据类型,如 VARCHAR2, NUMBER, DATE 等。 DEFAULT expression:为列指定默认值。 constraint:为列添加约束,如 PRIMARY KEY, FOREIGN KEY, UNIQUE, NOT NULL, CHECK 等。 |
数据类型:
1. 字符型
(1)CHAR : 固定长度的字符类型,最多存储 2000 个字节
(2)VARCHAR2 :可变长度的字符类型,最多存储 4000 个字节
(3)LONG : 大文本类型。 最大可以存储 2 个 G
2.数值型
NUMBER : 数值类型
例如:NUMBER(5) 最大可以存的数为 99999
NUMBER(5,2) 最大可以存的数为 999.99
3.日期型
(1)DATE:日期时间型,精确到秒
(2)TIMESTAMP:精确到秒的小数点后 9 位
4.二进制型(大数据类型)
(1)CLOB : 存储字符,最大可以存 4 个 G
(2)BLOB:存储图像、声音、 视频等二进制数据,最多可以存 4 个 G
实例:
创建业主表
--业主表 |
其它表的创建见资料。
4.2 修改表
1. 增加字段语法:
ALTER TABLE 表名称 ADD(列名1 类型 [DEFAULT 默认值],列名2 类型 [DEFAULT 默认值]...) |
--增加字段 |
2. 修改字段语法:
ALTER TABLE 表名称 MODIFY( |
--修改字段类型 |
3. 修改字段名语法:
ALTER TABLE 表名称 RENAME COLUMN 原列名 TO 新列名; |
--修改字段名 |
4. 删除字段名
-- 删除一个字段 |
--删除字段 |
4.3 删除表
语法:
DROP TABLE 表名; |
第五章 数据增删改
5.1 插入数据
语法:
insert into 表名[(列名 1,列名 2 ,...)] values(值 1,值 2 ,...); |
执行 INSERT 后一定要再执行 commit 提交事务
向业主表插入数据:
--1、插入数据 |
语句中的 sysdate 是系统变量用于获取当前日期,点击齿轮的图标后,再点击下
图的绿色图标,此图标为 commit
我们再次录入一条数据,语句如下:
insert into t_owners |
5.2 修改数据
语法:
update 表名 set 列名1=值1, 列名2=值2 ,.... where 修改条件; |
执行 UPDATE 后一定要再执行 commit 提交事务
需求:将 ID 为 1 的业主的登记日期更改为三天前的日期
update t_owners set adddate=adddate-3 where id=1; |
5.3 删除数据
语法 1 :
delete from 表名 where 删除条件; |
执行 DELETE 后一定要再执行 commit 提交事务
需求:删除业主 ID 为 4 的业主信息
delete from t_owners where id=4; |
语法 2:
truncate table 表名称 |
比较 truncat 与 delete 实现数据删除?
1. delete 删除的数据可以 rollback
2. delete 删除可能产生碎片,并且不释放空间
3. truncate 是先摧毁表结构,再重构表结构