Oracle数据库概念简介

1. 数据库

一般意义上的数据库包含两个部分

  • 库:就是一个存储一堆文件的文件目录
  • 数据库管理系统:管理库的系统

2. DBMS 数据库管理系统

数据库管理系统(Database Management System),是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS
它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性;
用户通过DBMS访问数据库中的数据,数据库管理员通过DBMS进行数据库的维护工作;
它可使多个应用程序和用户用不同的方法在同时或不同时刻去建立,修改和询问数据库;

大部分DBMS提供

  • 数据定义语言DDL(Data Definition Language):定义表、存储过程等。
  • 数据操作语言DML(Data Manipulation Language):定义数据库的模式结构与权限约束,实现对数据的追加、删除等操作。
  • 数据库控制语言DCL(Data Control Language):设置或更改数据库用户或角色权限的语句是一个操纵和管理数据库的大型软件,对数据库进行统一的管理。

3. Oracle 数据库

数据库有很多种,Oracle是其中之一,且是一个大型数据库,可以处理存储、处理海量数据,是大公司/企业常用数据库,价格相对高昂。

先看Oracle中的逻辑概念:

  • 数据库
    物理意义上的库,数据的物理存储,包括【数据文件ORA或者DBF、控制文件、联机日志、参数文件】
    Oracle数据库中物理库的概念和其它数据库不一样,一个操作系统只有一个物理库,可以看作是Oracle就只会有一个总数据库,其他都是逻辑数据库;
  • 数据库实例
    数据库启动时初始化的一组进程和内存结构,用来操作对应的数据库,一个实例只能对应一个数据库,但一个数据库可以对应多个实例;
  • 表空间
    是一个用来管理数据存储的逻辑概念
    表空间只是和数据文件(ORA或者DBF文件)发生关系,数据文件是物理意义上的,一个表空间可以包含多个数据文件,而一个数据文件只能隶属一个表空间;
  • 用户
    用户是在实例下建立的,不同实例可以建相同名字的用户;
    Oracle数据库建好后,要想在数据库里建表,必须先建立用户,并为用户指定表空间,然后在创建表的时候指定存放在表空间;
    Oracle就是通过用户这个概念来实现多个逻辑数据库的

  • 有了数据库、表空间和用户,就可以基于某一个用户在自己的表空间中创建表了;
    有了表就可以存储数据了;
  • 数据文件
    数据库的物理存储单位;
    数据库的数据是存储在表空间中一个或者多个数据文件中;
    一个表空间可以由一个或多个数据文件组成,一个数据文件只能属于一个表空间;
    一旦数据文件被加入到某个表空间后,就不能删除这个文件,如果要删除某个数据文件,只有删除其所属的表空间才行;

在这里插入图片描述
这里的段就是表

注意:
表的数据,是基于某一个用户放入某一个表空间的,而这个表空间会随机把这些表数据放到一个或者多个数据文件中;
Oracle的数据库是逻辑概念上的,是由用户和表空间对数据进行管理和存放的;
但是表不是由表空间去查询的,而是由用户去查的,因为不同用户可以在同一个表空间建立同一个名字的表,所以说实际上区分逻辑数据库的是用户。

3.1 创建表空间、用户

Oracle安装完成后,自带一个内置的客户端sqlplus

通过sqlplus客户端创建表空间:

  1. 启动sqlplus,但是不登录
    sqlplus /nolog;
    
  2. 通过超级管理员以dba的身份登录
    conn sys/root as sysdba;
    
  3. 创建表空间
    create tablespace 表空间名 datafile '文件路径\文件名.dbf' size 空间大小;
    
  4. 创建用户并指定表空间
    create user 用户名 identified by 密码 default tablespace 表空间名;
    
  5. 给用户授予dba权限
    grant dba to 用户名; 
    

    dba拥有所有权限,也可以单独授予用户连接、删除等单独权限。

3.2 约束

在数据库中我们通过约束来对每个字段中的数据的合法性进行规范

Oracle中常见约束:

  • 主键约束(PRIMARY KEY)
  • 唯一约束(UNIQUE)
  • 非空约束(NOT NULL)
  • 外键约束(FOREIGN KEY)
  • 检查约束(CHECK)

3.2.1 主键约束

主键是定位表中单个行的方式,可 唯一确定 表中的某一行;
关系型数据库要求所有表都应该有主键;
不过Oracle没有遵循此范例要求,Oracle中的表可以没有主键(这种情况不多见);
关于主键有几个需要注意的点:

  1. 主键列必须必须具有 唯一性,且 不能为空,其实主键约束相当于UNIQUE+NOT NULL
  2. 一个表只允许有一个主键
  3. 主键所在列必须具有索引(主键的唯一约束通过索引来实现),如果不存在,将会在索引添加的时候自动创建;

3.2.2 唯一约束

唯一性约束可作用在单列或多列上,对于这些列或列组合,唯一性约束保证每一行的唯一性; UNIQUE允许null值,UNIQUE约束的列可存在多个null

3.2.3 非空约束

约束列数据不能为空;

3.2.4 外键约束

外键约束是关系数据库中的一种约束,用于维护表之间的关系。它定义了一个表的列与另一个表的主键或唯一键之间的关系。在Oracle数据库中,外键约束有以下特点:

  • 外键关系:外键约束用于确保两个表之间的关系。在外键约束中,一个表的列(称为外键)引用了另一个表的主键或唯一键(称为参考键);

  • 参考完整性:外键约束确保了参考完整性,即外键的值必须在参考表中存在。这样可以防止在关联表之间出现不一致的数据;

  • 级联操作:外键约束还可以定义级联操作,以确保在主表中的更新或删除操作时,相关的外键表也会相应进行更新或删除。常见的级联操作包括级联更新(CASCADE UPDATE)和级联删除(CASCADE DELETE);

  • 约束类型:在Oracle中,外键约束可以是唯一约束(UNIQUE CONSTRAINT)或主键约束(PRIMARY KEY CONSTRAINT)的一部分。也可以单独定义外键约束;

  • 创建外键约束:可以使用ALTER TABLE语句来创建外键约束。例如,以下示例创建了一个名为fk_order_customer的外键约束,将order表的customer_id列与customer表的id列关联起来:

    ALTER TABLE order
    ADD CONSTRAINT fk_order_customer
    FOREIGN KEY (customer_id)
    REFERENCES customer (id);
    
  • 禁用和启用外键约束:可以使用ALTER TABLE语句来禁用或启用外键约束。例如,以下示例禁用了名为fk_order_customer的外键约束:

    ALTER TABLE order
    DISABLE CONSTRAINT fk_order_customer;
    

    这将禁用外键约束,使得可以在不违反外键约束的情况下修改或删除相关的数据。类似地,可以使用ENABLE CONSTRAINT语句来启用外键约束;

3.3 图形化客户端

一般Oracle数据库不用自带的sqlplus客户端操作数据,只用作用户、表空间等基础数据的操作和管理,因为全是命令行不方便,操作表、存储过程等数据常用图形客户端,例如sqldeveloperplsqldeveloper

Oracle数据查询数据流程

Oracle的DBMS查询数据的大体流程如下:

  1. 用户发起查询请求:用户通过SQL语句向Oracle数据库发起查询请求。SQL语句可以包括查询条件、排序规则、分组规则等。

  2. SQL解析:Oracle数据库接收到查询请求后,会对SQL语句进行解析。解析过程包括语法检查、语义检查和权限检查等。

  3. 查询优化:在解析完SQL语句后,Oracle数据库会对查询语句进行优化。优化过程包括选择最优的执行计划、选择合适的索引、重写查询语句等。

  4. 执行查询计划:一旦查询计划确定,Oracle数据库会根据查询计划执行查询操作。查询操作包括扫描表、使用索引、聚合数据、连接表等。

  5. 返回结果集:当查询操作完成后,Oracle数据库会将查询结果返回给用户。结果可以是单个值、一行或多行数据,也可以是查询的统计信息。

  6. 结果处理:用户接收到查询结果后,可以对结果进行进一步处理。处理方式可以是保存结果、打印结果、导出结果等。

其中 执行查询计划 的过程中,Oracle数据库会将需要的数据从磁盘加载到内存中进行处理;这是为了提高查询的性能,因为内存的读取速度比磁盘要快得多;

具体来说,当执行查询计划时,Oracle数据库会使用缓冲区高速缓存(Buffer Cache)来存储已经读取的数据块;如果查询需要的数据块已经在缓冲区高速缓存中,则可以直接从内存中读取,避免了磁盘I/O的开销;如果查询需要的数据块不在缓冲区高速缓存中,则会从磁盘读取相应的数据块,并将其加载到缓冲区高速缓存中,供后续查询使用;

通过将数据加载到内存中,Oracle数据库可以减少磁盘I/O的次数,提高查询的响应速度和性能;同时,Oracle数据库还会使用其他技术如数据压缩、内存排序等来进一步优化查询操作;

其实其它与Oracle一样都是关系型数据库的数据库如Mysql都是类似的查询流程。这些传统的关系型数据库都受限于表结构、数据关联、磁盘IO、可靠性、强持久化等因素的影响。

拓展:非关系型数据

如上所说,传统关系型数据库有其局限性,因此非关系型数据就是突破这些局限性,迎合大数据时代的来临;当然,这样也会出现它自身的短板,例如持久化、可靠性等;

一般来说,NoSQL数据库相对于传统的关系型数据库(如Oracle)在某些场景下可以 减少磁盘I/O开销。这是因为NoSQL数据库采用了不同的数据存储和访问模型;

NoSQL数据库通常采用 键值存储、文档存储、列存储或图形存储 等非关系型数据模型,这些模型往往具有更高的可伸缩性和灵活性。在某些情况下,NoSQL数据库可以将数据完全存储在内存中,减少了对磁盘的访问需求,从而降低了磁盘I/O开销

此外,NoSQL数据库还采用了一些优化技术,如数据分片、数据复制、缓存等,以提高读写性能和降低磁盘I/O开销。例如,一些NoSQL数据库可以将数据分布在多个节点上,通过并行读取和写入操作来提高性能,并减少对单个节点的磁盘I/O压力。

然而,需要注意的是,NoSQL数据库并不是在所有场景下都比关系型数据库更少磁盘I/O开销。具体的性能表现还取决于具体的应用需求、数据模型、数据访问模式等因素。因此,在选择数据库时,需要综合考虑应用需求和数据库特性,进行合适的选择。

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

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

相关文章

Bun v0.8.0 正式发布,Zig 编写的 JavaScript 运行时

Bun 是采用 Zig 语言编写的高性能 “全家桶” JavaScript 运行时,官方称其为 "all-in-one JavaScript runtime"。 所谓 "all in one",是因为 Bun 提供了打包、转译、安装和运行 JavaScript & TypeScript 项目的功能&#xff0c…

华为mate60 上线 媒介盒子多家媒体报道

为什么你的品牌营销不见效?如何能推动品牌破圈?让媒介盒子给你一些启发。本期盒子要跟大家分享地新机上市,数码科技行业企业该如何做线上宣传。 HUAWEI Mate 60系列8月29日官宣发布,出色的拍照功能、强大的性能表现和持久的续航能…

初阶三子棋(超详解)

✨博客主页:小钱编程成长记 🎈博客专栏:C语言小游戏 初阶三子棋 1.游戏介绍2.基本思路3.实现前的准备4.实现步骤4.1 打印菜单4.2 初始化棋盘4.3 打印棋盘4.4 玩家下棋4.5 电脑下棋4.6 判断本局游戏继续还是结束4.7 优化棋盘的显示 5.游戏代码…

docker 笔记5:redis 集群分布式存储案例

尚硅谷Docker实战教程(docker教程天花板)_哔哩哔哩_bilibili 目录 1.cluster(集群)模式-docker版哈希槽分区进行亿级数据存储 1.1面试题 1.1.1 方案1 哈希取余分区 1.1.2 方案2 一致性哈希算法分区 原理 优点 一致性哈希算法的容错性 一致性…

MySQL的用户管理

1、MySQL的用户管理 (1)创建用户 create user zhang3 identified by 123123;表示创建名称为zhang3的用户,密码设为123123。 (2)了解user表 1)查看用户 select host,user,authentication_string,select…

计算机网络的故事——确保Web安全的Https

确保Web安全的Https 文章目录 确保Web安全的Https一、HTTP 的缺点二、HTTP 加密 认证 完整性保护 HTTPS 一、HTTP 的缺点 1、明文传输 通信加密,HTTP协议中没有加密机制,但是可以通过SSL(Secure Socket Layer,安全套接字层)或TLE(Transpor…

PhpStorm软件安装包分享(附安装教程)

目录 一、软件简介 二、软件下载 一、软件简介 PhpStorm是一款由JetBrains开发的专业PHP集成开发环境(IDE),旨在提供全面的PHP开发支持。它是基于IntelliJ IDEA平台构建的,具有强大的功能和工具,可以帮助开发人员提高…

springboot~自定义favicon加载问题

影响自定义favicon加载的原因 1、浏览器缓存问题2、由于favicon图标是在一个session会话中,所以需要关闭重开浏览器3、favicon源文件格式问题 1、浏览器缓存问题 清空浏览器缓存,或者是在network请求中停用缓存 2、由于favicon图标是在一个session会话中…

30天入门Python(基础篇)——第1天:为什么选择Python

文章目录 专栏导读作者有话说为什么学习Python原因1(总体得说)原因2(就业说) Python的由来(来自百度百科)Python的版本 专栏导读 🔥🔥本文已收录于《30天学习Python从入门到精通》 🉑🉑本专栏专门针对于零基础和需要重新复习巩固…

C语言共用体详解

文章目录 共用体解释代码说明小端存储 Little Endian共用体与小端存储为什么只能用第一个成员类型的值初始化一个共用体变量 共用体解释 共用体(Union)是一种特殊的数据类型, 它允许在同一个内存位置存储不同的数据类型。 共用体的所有成员共…

【C++入门】C语言的不足之处

概要 C入门主要讲的是C语言的一些不足,C作为补充,来补充C的不足之处 C的关键字有63个,C语言有32个(作为了解,不需要专门记) 变量的命名规则: 变量名必须以字母或下划线开头。变量名只能包含字…

数据结构与算法-----顺序表(链表篇)

目录 前言 顺序表 链表 概念 与数组的不同 单链表 1. 创建节点 2.插入节点 尾插节点(形成链表结构) 向指定位置插入节点(链表已有) ​编辑 3.遍历链表数据 4.获取链表长度 5.删除节点 删除尾节点 删除指定节点 …

MyBatis的逆向工程

文章目录 前言MyBatis的逆向工程创建逆向工程的步骤添加依赖和插件创建MyBatis的核心配置文件创建逆向工程的配置文件执行MBG插件的generate目标 QBC查询增改 总结 前言 MyBatis的逆向工程 正向工程:先创建Java实体类,由框架负责根据实体类生成数据库表…

微信支付-Native支付(网页二维码扫码微信支付)简单示例

目录 概述 界面展示 & 前端代码(Vue) 后端实现(SpringBoot) Maven依赖 下单接口(主要功能代码) 支付成功回调接口 测试(后端线上环境) 概述 本篇博文主要演示和说明网页扫…

腾讯云新用户有哪些优惠政策和专属活动?

腾讯云作为中国领先的云计算服务提供商,一直在为用户提供优质、高效且具有竞争力的服务。对于新用户,腾讯云更是诚意满满,推出了一系列优惠政策和专属活动。本文将详细介绍腾讯云新用户的优惠政策和专属活动,帮助大家更好地了解如…

【算法专题突破】滑动窗口 - 长度最小的子数组(9)

目录 1. 题目解析 2. 算法原理 3. 代码编写 写在最后: 1. 题目解析 题目链接:209. 长度最小的子数组 - 力扣(Leetcode) 要注意的是,题目给的是正整数, 而题目要求并不难理解,就是找最短的…

Python批处理(一)提取txt中数据存入excel

Python批处理(一)提取txt中数据存入excel 问题描述 现从冠层分析软件中保存了叶面积指数分析的结果,然而软件保存格式为txt,且在不同的文件夹中,每个文件夹的txt文件数量不固定,但是txt文件格式固定。现需…

PPT 架构师三板斧

PPT 架构师三板斧 目录概述需求: 设计思路实现思路分析1.多节点上PPT 架构师三板斧2.几张框框组合有组织3.专业词汇4.切记点要点 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy,ski…

Android扫码连接WIFI实现

0&#xff0c;目标 APP中实现扫WIFI分享码自动连接WIFI功能 1&#xff0c;前提条件 设备需要有个扫码器&#xff08;摄像头拍照识别也行&#xff09;&#xff0c;APP调用扫码器读取WIFI连接分享码。 2&#xff0c;增加权限 在AndroidManifest.xml中增加权限 <uses-permissi…

接入 NVIDIA A100、吞吐量提高 10 倍!Milvus GPU 版本使用指南

Milvus 2.3 正式支持 NVIDIA A100&#xff01; 作为为数不多的支持 GPU 的向量数据库产品&#xff0c;Milvus 2.3 在吞吐量和低延迟方面都带来了显著的变化&#xff0c;尤其是与此前的 CPU 版本相比&#xff0c;不仅吞吐量提高了 10 倍&#xff0c;还能将延迟控制在极低的水准。…