Oracle简介、环境搭建和基础DML语句

第一章 ORACLE 简介

1.1 什么是 ORACLE

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

英文官网:Database | Oracle 

中文官网:数据库 | Oracle 中国

ORACLE 通常应用于大型系统的数据库产品。

ORACLE 数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。

DB-Engines排名:DB-Engines Ranking - popularity ranking of database management systems

Oracle 数据库主要有四个版本:

  1. 企业版:它是最强大和最安全的版本它提供所有功能包括卓越的性能和安全性。
  2. 标准版:它为不需要企业版强大软件包,提供用户基本功能。
  3. 易捷版(XE):它是轻量级,免费且有限的 Windows 和 Linux 版本。
  4. Oracle Lite:专为移动设备而设计。

ORACLE 数据库具有以下特点:

  1. 支持多用户、大事务量的事务处理
  2. 数据安全性和完整性控制
  3. 支持分布式数据处理
  4. 可移植性

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交互的一款工具。

  1. 可以直接在终端命令行中使用
  2. 如果想在自己的windows电脑上使用,需要安装Oracle Instant Client,参考教程:

InstantClient+PLSQL安装配置教程-CSDN博客

  1. 当客户端和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 等。

  1. 打开Datagrip,新建一个project工程
  2. 创建Oracle连接
  3. 将下载好的驱动文件解压到一个没有中文,没有空格的路径下
  4. 配置驱动
  5. 设置相关参数
  6. 测试连接是否正常
  7. 控制台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、查看已有表空间的存储路径
select name from v$datafile;

--2、创建表空间
create tablespace waterboss
datafile '/home/app/oracle/oradata/orcl/waterboss.dbf'
size 100m
autoextend on
next 10m;

解释:

waterboss 为表空间名称

datafile  用于设置物理文件名称

size  用于设置表空间的初始大小

autoextend on    用于设置自动增长,如果存储量超过初始大小,则开始自动扩容

next  用于设置扩容的空间大小​​​​​​​

3.4 创建用户

--1、查看当前所有用户
select username from all_users;

--2、创建新用户
create user wateruser
identified by 123456
default tablespace waterboss;

wateruser 为创建的用户名。

identified by  用于设置用户的密码

default tablesapce    用于指定默认表空间名称

​​​​​​​3.5 用户赋权

-- 给用户赋予dba权限
grant dba to wateruser;

给用户 wateruser 赋予 DBA 权限后即可登陆

​​​​​​​3.6 切换用户wateruser

第四章 表的创建、修改与删除

4.1 创建表

语法:

create table 表名称(
    字段名 类型(长度) primary key,
    字段名 类型(长度),
    .......
);

----------------------------------------------------------------------

完整语法如下:

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 个字节
    (2VARCHAR2    :可变长度的字符类型,最多存储 4000 个字节
    (3LONG :  大文本类型。 最大可以存储 2 个 G
2.数值型
    NUMBER :  数值类型
    例如:NUMBER(5)      最大可以存的数为 99999
    NUMBER(5,2)    最大可以存的数为 999.99
3.日期型
    (1)DATE:日期时间型,精确到秒
    (2TIMESTAMP:精确到秒的小数点后 9
4.二进制型(大数据类型)
    (1CLOB :  存储字符,最大可以存 4 个 G
    (2BLOB:存储图像、声音、  视频等二进制数据,最多可以存 4 个 G

实例:

创建业主表

--业主表
create table t_owners
(
    id number primary key,
    name varchar2(30),
    addressid number,
    housenumber varchar2(30),
    watermeter varchar2(30),
    adddate date,
    ownertypeid number
);

--如果需要给表添加注释,需要额外的语句实现
comment on table t_owners is '业主表';

comment on column t_owners.id is '主键';
comment on column t_owners.name is '业主名称';
comment on column t_owners.addressid is '地址ID';
comment on column t_owners.housenumber is '门牌号';
comment on column t_owners.watermeter is '水表编号';
comment on column t_owners.adddate is '登记日期';
comment on column t_owners.ownertypeid is '业主类型ID';

其它表的创建见资料。

​​​​​​​4.2 修改表

1.  增加字段语法:

ALTER TABLE 表名称  ADD(列名1  类型  [DEFAULT  默认值],列名2  类型 [DEFAULT  默认值]...)

--增加字段
-- 为业主表增加两个字段  remark 字符串, outdate 日期类型
alter table t_owners add
(
    remark varchar2(20),
    outdate date
);

2.  修改字段语法:

ALTER TABLE 表名称 MODIFY(
    列名1  类型  [DEFAULT  默认值],
    列名2  类型 [DEFAULT  默认值]...
);

--修改字段类型
--修改业主表增加的两个字段类型  remark char(66), outdate timestamp
alter table t_owners modify
(
    remark char(66),
    outdate timestamp
);

3. 修改字段名语法:

ALTER TABLE 表名称 RENAME COLUMN 原列名 TO 新列名;

--修改字段名
--将业主表的 列名 outdate 重命名为 exitdate
alter table t_owners rename column outdate to exitdate;

4.  删除字段名

-- 删除一个字段
alter table 表名称 drop column 列名;

-- 删除多个字段
alter table 表名称 drop (列名1, 列名2 ...);

--删除字段
alter table t_owners drop column remark;
--删除多个字段
alter table t_owners drop  (remark,exitdate);

​​​​​​​4.3 删除表

语法:

DROP TABLE 表名;

第五章 数据增删改

5.1 插入数据

语法:

insert into 表名[(列名 1,列名 2 ,...)]   values(值 1,值 2 ,...);

执行 INSERT 后一定要再执行 commit 提交事务

向业主表插入数据:

--1、插入数据
insert  into  t_owners
values(1, '张三丰', 1, '2-2', '5678', sysdate, 1, sysdate);

语句中的 sysdate 是系统变量用于获取当前日期,点击齿轮的图标后,再点击下

图的绿色图标,此图标为 commit

我们再次录入一条数据,语句如下:

insert into t_owners
values (4, '刘德华', 1, '2-3', '9876', sysdate, 1, sysdate);

commit;

​​​​​​​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;
commit;

语法 2:

truncate    table    表名称

比较 truncat 与 delete 实现数据删除?

1.   delete 删除的数据可以 rollback

2.   delete 删除可能产生碎片,并且不释放空间

3.   truncate 是先摧毁表结构,再重构表结构

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/59191.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【React】初学React

A. react中如何创建元素呢? 说明一点: 属性都改为驼峰形式(无障碍属性aria-*除外), class改成className 创建元素 B. 变量或表达式如何表示呢?大括号{ }包起来 变量值用大括号包裹 C. 元素和组件的区别 元素…

Memento 备忘录模式

备忘录模式 意图结构适用性实例Java Web开发中的简单示例Originator 类Memento 类Caretaker 类 文本编辑器示例1. Originator (发起人) - TextEditor2. Memento (备忘录) - TextMemento3. Caretaker (负责人) - History4. 使用示例输出 备忘录模式(Memento Pattern&…

导入项目时微信开发者工具如何自动识别项目APPID

一、需求 当我们在公司拉取小程序项目的时候,经常会在微信开发者工具中导入项目,需要我们手动输入自己的appid非常麻烦,我们可以用在导入项目的时候自动识别公司的appid 二、步骤 2.1 使用Hbuilder工具编译项目 编译成功后会有一个unpacka…

小语言模型介绍与LLM的比较

小模型介绍 小语言模型(SLM)与大语言模型(LLM)相比,具有不同的特点和应用场景。大语言模型通常拥有大量的参数(如 GPT-3 拥有 1750 亿个参数),能够处理复杂的自然语言任务&#xff…

17.快递物流仓库管理系统(基于springboot和vue)

目录 1.系统的受众说明 2.系统详细设计 2.1 需求分析 2.2 系统功能设计 2.3 开发环境分析 ​​​​​​​2.4 E-R图设计 2.5 数据库设计 3. 系统实现 3.1 环境搭建 ​​​​​​​3.2 员工信息管理模块 3.3 销售订单信息管理模块 ​​​​​​​3.4 图表分析模块…

Shortcut Learning in In-Context Learning: A Survey

为我们的综述打一打广告,目前是初级版本,欢迎各位批评指正!后续的论文列表、测评基准会在Github更新[/(ㄒoㄒ)/~~最近比较忙容许我拖一拖] 这里是arxiv链接:Linking!!! Abstract:捷径学习是指模型在实际任务中使用简单…

第三十四章 Vue路由进阶之声明式导航(导航高亮)

目录 一、导航高亮 1.1. 基于语法 1.2. 主要代码 二、声明式导航的两个类名 2.1. 声明式导航类名匹配方式 2.2. 声明式导航类名样式自定义 ​2.3. 核心代码 一、导航高亮 1.1. 基于语法 在Vue中通过VueRouter插件,我们可以非常简单的实现实现导航高亮效果…

第七部分:1. STM32之ADC实验--单通道实验

主要利用一个模拟量的电位器来实时改变电压值,通过STM32自带的ADC通道来采集这个数据,并打印出来! 一句话,学完STM32,我就往南走,我的工资只有5000.~~~~Whappy

Ubuntu20.04两种安装及配置中文界面、输入法、换源、共享文件夹实现,及注意事项

虚拟机安装法 1、新建虚拟机,自定义下一步 任意指定路径 提高处理器数量能加快系统响应 完成以后不要运行,添加镜像文件 导入镜像文件,点击浏览 选择后打开->确认->运行虚拟机 出现这种情况就需要检查虚拟机的配置,操作系统…

记录解决vscode 登录leetcode中遇到的问题

1. 安装完 leetcode 点击sign in to leetcode 点击打开网站登录leetcode,发现网页无法打开。 解决办法:将leetcode.cn.js文件中的leetcode-cn.com路径都改成leetcode.cn 2. 继续点击 sign in to leetcode ,选择使用账号登录,始…

docker镜像仓库实战

docker镜像仓库实战 搭建一个nginx服务基础知识(Web服务器)查找nginx镜像拉取镜像启动nginx镜像 搭建一个nginx服务 基础知识(Web服务器) Web 服务器,一般是指“网站服务器”,是指驻留于互联网上某种类型计算机的程序。Web 服务器可以向 Web 浏览器等客…

zabbix安装配置与使用

zabbix Zabbix的工作原理如下: 监控部分: Zabbix Agent安装在各个需要监控的主机上,它以主配置的时间间隔(默认60s)收集主机各项指标数据,如CPU占用率、内存使用情况等。 通讯部分: Agent会把收集的数据通过安全通道(默认10051端口)发送到Zabbix Server。Server会存储这些数…

CSS的三个重点

目录 1.盒模型 (Box Model)2.位置 (position)3.布局 (Layout)4.低代码中的这些概念 在学习CSS时,有三个概念需要重点理解,分别是盒模型、定位、布局 1.盒模型 (Box Model) 定义: CSS 盒模型是指每个 HTML 元素在页面上被视为一个矩形盒子。…

关于LLC知识23(频率越大变压器体积越小?)

为什么频率越高,同样的磁芯就可以用的更小? 变压器他负责的功能是 1、隔离 2、能量传递 这里主要是与能量传递有关 我们首先要知道,次级的输出功率一定的情况下,那么在一定的时段内消耗的能量就是一定的,比如1000W…

UE5.4 PCG Layered Biomes插件

B站学习链接 官方文档 一、PCGSpawn Preset:负责管理PCG要用到的植被资产有哪些 二、BiomesSettings:设置要使用的植被资产Layer、Spawn参数 1.高度Layer参数: 2.地形Layer:我这里用地形样条线绘制了一块地形Layer 绘制点和…

数字后端零基础入门系列 | Innovus零基础LAB学习Day8

###LAB15 Detail Routing for Signal Integrity, Timing, Power and Design for Yield 这个章节虽然标题有点长,但不要被它吓到,其实这个章节就是Innovus工具的绕线Routing。只不过这个阶段做Route不是仅仅是把所有的逻辑连接,用实际的金属层…

量化交易 股市技术指标

股市数据分类 股票数据根据信息来源和分析方法的不同,可以分为技术面数据和基本面数据。 技术面数据和基本面数据都是股票分析中重要的工具,它们提供了不同的视角和方法来评估股票的投资价值。投资者可以综合运用这两类数据,从技术面和基本…

【从零开始的LeetCode-算法】3222. 求出硬币游戏的赢家

给你两个 正 整数 x 和 y ,分别表示价值为 75 和 10 的硬币的数目。 Alice 和 Bob 正在玩一个游戏。每一轮中,Alice 先进行操作,Bob 后操作。每次操作中,玩家需要拿出价值 总和 为 115 的硬币。如果一名玩家无法执行此操作&#…

MR30分布式IO模块与高效PLC协同

在现代工业自动化领域中,数据采集与控制系统扮演着至关重要的角色。其中,可编程逻辑控制器(PLC)和分布式IO模块(Distributed I/O Modules)是这一领域的两大核心组件。本文将详细介绍MR30分布式IO模块与PLC如…

贝尔不等式的验证

在量子计算机上运行一个实验,以演示使用Estimator原型违反CHSH不等式。 import numpy as npfrom qiskit import QuantumCircuit from qiskit.circuit import Parameter from qiskit.quantum_info import SparsePauliOpfrom qiskit_ibm_runtime import QiskitRuntim…