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.rhkb.cn/news/127780.html

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

相关文章

kubernetes(K8S)笔记

文章目录 大佬博客简介K8SDocker VS DockerDockerK8S简介K8S配合docker相比较单纯使用docker 大佬博客 Kubernetes(通常缩写为K8s)是一个用于自动化容器化应用程序部署、管理和扩展的开源容器编排平台。它的构造非常复杂,由多个核心组件和附加…

UNIAPP之js/nvue混淆探索

因项目需要对UNIAPP的js混淆做了一些调研 混淆教程: https://uniapp.dcloud.net.cn/tutorial/app-sec-confusion.html 按照教程配置进行打包正式包进行混淆 下载正式包将 .ipa改为.zip 解压获取到HBuilder.app 右键显示包内容 获取到混淆的key 不同时间进行打包混淆同一文…

Zabbix 利用 Grafana 进行图形展示

安装grafana和插件 配置zabbix数据源 导入模版 查看数据 1.安装grafana wget https://mirrors.tuna.tsinghua.edu.cn/grafana/yum/rpm/Packages/grafana-10.0.0-1.x86_64.rpm [rootrocky8 apps]# yum install grafana-10.0.0-1.x86_64.rpm [rootrocky8 apps]# systemctl sta…

【公网远程手机Android服务器】安卓Termux搭建Web服务器

目录 概述 1.搭建apache 2.安装cpolar内网穿透 3.公网访问配置 4.固定公网地址 5.添加站点 概述 Termux是一个Android终端仿真应用程序,用于在 Android 手机上搭建一个完整的Linux 环境,能够实现Linux下的许多基本操作,不需要root权限…

springWeb

springweb就是spring框架中的一个模块,对web层进行了封装,使用起来更加方便。如何方便?参数接收框架进行封装 SpringWeb拥有控制器,接收外部请求,解析参数传给服务层。 SpringWeb运行流程 用户发起请求 ip:端口/项目名…

晶尔忠产业集团全面启动暨表彰大会

八月下旬,三伏已尽,初秋遂至。夏日的余热还没有完全散去,初秋的热浪随之席卷而来,大地依旧绿意盎然,万物正是生长最猛烈的时期,为秋天的收获做最后的冲刺,这是一个充满生机的时节,也…

设计模式之桥接模式、组合模式与享元模式

目录 桥接模式 简介 优缺点 结构 实现 运用场景 组合模式 简介 优缺点 结构 实现 运用场景 享元模式 简介 优缺点 结构 实现 运用场景 桥接模式 简介 将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降…

基于springboot的图片文字识别,支持中英文识别

概述 基于springboot的图片文字识别,支持中英文识别. 页面上传图片即可转换为中文或者英文. 详细 1.需求(要做什么) 识别图片文字, 实现页面上传图片即可转换为中文或者英文. 2.理论概述 OCR,即Optical Character Recognition&#xff…

数据结构与算法:概述

目录 算法 评价标准 时间的复杂度 概念 推导原则 举例 空间的复杂度 定义 情形 运用场景 数据结构 组成方式 算法 在数学领域,算法是解决某一类问题的公式和思想; 计算机科学领域,是指一系列程序指令,用于解决特定的…

数据结构插入排序

好久不见,这几天有点事情,都快一个礼拜没有学习,对键盘都要陌生起来了,今天也是刚刚学了一点排序,在这里也给大家更新一个插入排序,后面也会渐渐的把八大排序更新完的,还有就是二叉树&#xff0…

Vivado 2017.04版本安装教程

文章目录 前言一、vivado 简介二、vivado 下载三、vivado 安装四、vivado 申请证书五、关闭升级提醒六、资源自取 前言 本文记录了在 windows 11 下安装 vivado 2017 的详细步骤。 一、vivado 简介 Vivado 是 Xilinx 公司于 2012 推出的新一代集成设计环境,虽然目…

学习笔记|定时器|STC中断|定时器时间计算|STC32G单片机视频开发教程(冲哥)|第十一集:定时器的作用和意义

文章目录 1.定时器的作用和意义定时器中断定时器是定时器和计数器的统称。 2.STC32G单片机定时器使用原理2.1 先设置功能为定时器/计数器(本质都是加法计数器)2.2、在定时器模式下,设置不分频或者12分频∶Tips:选择不分频还是12分频2.3、定时器的工作模式…

算法竞赛个人注意事项

浅浅记录一下自己在算法竞赛中的注意事项。 数据类 注意看数大小,数学库中的函数尽量加上 * 1.0,转成double,防止整型溢出。,int型相乘如果可能溢出,乘 * 1LL。 数据范围大于1e6,注意用快读。 浮点数输…

HCIP自我重修总笔记

第一章.复习OSITCP/IP 模型 (2023 9/5) OSI 模型: 开放式系统互联参考模型 应用层:抽象语言-->编码表示层:编码--->二进制会话层:提供会话地址,建立应用程序端到端的会话 上三层为应用程序对数据加…

初识Python

初识Python Python背景知识1. 编程语言2. Python优缺点 搭建Python环境1.找到官网2. 下载3.安装4.检查 安装PyCharm1.找到官网下载2. 安装3. 检查 Python官网文档学习 Python背景知识 1. 编程语言 编程语言通常可以分为以下三类: 高级语言(High-Level…

PostgreSQL 查询修改max_connections(最大连接数)及其它配置

文章目录 查询max_connections(最大连接数)修改max_connections(最大连接数)其他配置 查询max_connections(最大连接数) SHOW max_connections;修改max_connections(最大连接数) 要设置PostgreSQL数据库的最大连接数,你需要修改数据库的配置文件 postgresql.conf。…

el-table中加图标文字提示

<el-table :data"tableData" style"width: 100%" max-height"250"><el-table-column fixed prop"aaa" label"日期" width"150" /><el-table-column prop"bbb" label"日期" wi…

【技能树笔记】网络篇——练习题解析(二)

目录 前言 一. 数据链路层的作用 1.1 数据链路层作用 1.2 数据链路层封装 1.3 数据链路层功能 1.4 数据帧格式 二. MAC地址及分类 2.1 MAC地址 2.2 MAC地址分类 三. 交换机的作用 3.1 交换机的作用 3.2 交换机作用 四.交换机的工作原理 4.1 交换机的工作原理 4.…

决策树算法学习笔记

一、决策树简介 首先决策树是一种有监督的机器学习算法&#xff0c;其采用的方法是自顶向下的递归方法&#xff0c;构建一颗树状结构的树&#xff0c;其具有分类和预测功能。其基本思想是以信息熵为度量构造一棵熵值下降最快的树&#xff0c;到叶子节点处的熵值为零。决策树的构…

MVC,MVP,MVVM的理解和区别

MVC MVC &#xff0c;早期的开发架构&#xff0c;在安卓里&#xff0c;用res代表V&#xff0c;activity代表Controller层&#xff0c;Model层完成数据请求&#xff0c;更新操作&#xff0c;activity完成view的绑定&#xff0c;以及业务逻辑的编写&#xff0c;更新view&#xf…