Oracle数据库概念简介

news2024/11/24 22:48:39

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.coloradmin.cn/o/979189.html

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

相关文章

vue中v-for循环数组使用方法中splice删除数组元素(每次都删掉点击的下面的一项)

总结:平常使用v-for的key都是使用index,这里vue官方文档也不推荐,这个时候就出问题了,我们需要key为唯一标识,这里我使用了时间戳(new Date().getTime())处理比较复杂的情况, 本文章…

mac安装adobe需要注意的tips(含win+mac all安装包)

M2芯片只能安装2022年以后的(包含2022年的) 1、必须操作的开启“任何来源” “任何来源“设置,这是为了系统安全性,苹果希望所有的软件都从商店或是能验证的官方下载,导致默认不允许从第三方下载应用程序。macOS sie…

接口参数校验

方式一:使用hibernate-validator注解方式参数校验 类似的框架太多了。缺点:返回的提示信息顺序不太确定 文档:https://hibernate.org/validator/documentation/ 参考资料:https://blog.csdn.net/weixin_45080272/article/details…

C++二叉树

代码随想录 (programmercarl.com) 二叉树理论基础篇 #算法公开课 《代码随想录》算法视频公开课 (opens new window) 大纲如下: 说到二叉树,大家对于二叉树其实都很熟悉了,本文呢我也不想教科书式的把二叉树的基础内容再啰嗦一遍&#xf…

npm/yarn link 测试包时报错 Warning: Invalid hook call. Hooks can only be called ...

使用 dumi 开发 React 组件库时,为避免每次修改都发布到 npm,需要在本地的测试项目中使用 npm link 为组件库建立软连接,方便本地调试。 结果在本地测试项目使用 $ npm link 组件库 后,使用内部组件确报错: react.dev…

4.(高级示例篇)leaflet移动端交互示例

注:高级示例博客不提供源码 地图之家总目录(订阅之前建议先查看该博客) 效果如下所示: leaflet移动端交互示例

2023年必须要知道的AI热词,看这一篇就够了!

2023年是AI工具大爆发的一年,随着AI的快速发展,出现了很多AI相关的名词,今天带你详细了解那些热门的AI词。 思维导图: https://gitmind.cn/app/docs/muksa9nd AI 人工智能 Artificial Intelligence,即人工智能&…

如何在VueJS应用程序中设置Toast通知

通知是开发者提升应用程序互动性和改善用户体验的强大工具。通过利用通知,开发者可以在用户与应用程序互动的同时,有效地向用户传达重要事件。 通知在应用程序中起着至关重要的作用,可以及时通知用户有关各种操作和事件的信息。它们可以用于通…

【sgCreateAPI】自定义小工具:敏捷开发→自动化生成API接口脚本(接口代码生成工具)

<template><div :class"$options.name"><div class"sg-head">接口代码生成工具</div><div class"sg-container"><div class"sg-start "><div style"margin-bottom: 10px;">接口地…

uniapp 网络请求封装(uni.request 与 uView-Plus)

一、背景 在开发项目中&#xff0c;需要经常与后端服务器进行交互&#xff1b;为了提高开发效率和代码维护性&#xff0c;以及降低重复性代码&#xff0c;便对网络请求进行封装统一管理。 二、创建环境文件 2.1、根目录新建utils文件夹&#xff0c;utils文件夹内新建env.js文…

中缀表达式 - 栈实现综合计算器

代码&#xff1a; package Algotithm.stackobject Calculator {def main(args: Array[String]): Unit {val expression "32*6-2"//创建两个栈&#xff1a;数栈、符号栈val numStack, operStack new ArrayStack2(10)//定义需要的相关变量var index, num1, num2, …

iOS开发Swift-9-SFSymbols,页面跳转,view屏幕比例,启动页-和风天气AppUI

1.创建项目 2.设置好测试机型,App显示名称,以及关闭横向展示. 3.下载SF Symbols. https://developer.apple.com/sf-symbols/ 右上角搜索 search ,可以找到很多系统自带图标.选择喜欢的图标,拷贝图标的名字. 插入一个Button,在Image中粘贴图标名称并选择,即可将Button变成想要的…

遥感图像应用:在低分辨率图像上实现洪水损害检测

代码来源&#xff1a;https://github.com/weining20000/Flooding-Damage-Detection-from-Post-Hurricane-Satellite-Imagery-Based-on-CNN/tree/master 数据储存地址&#xff1a;https://github.com/JeffereyWu/FloodDamageDetection/tree/main 数据详情&#xff1a;训练数据…

决策工具箱:战略分析必备工具与框架

跟随时代的步伐&#xff0c;企业战略也在不断演化。无论是初创企业还是知名企业&#xff0c;都需要有效的战略工具来指导其业务发展。探索这些必备工具&#xff0c;并学习如何最大限度地利用它们&#xff0c;是企业的一个学习目标。 战略分析工具和框架有很多&#xff0c;其中…

读懂AUTOSAR规范,之CanIf 发送缓冲(带实例代码)

1. General behavior一般行为 在CanIf范围内,传输过程始于调用CanIf_Transmit(),并在调用上层模块的回调服务<User_TxConfirmation>()时结束。在传输过程中,CanIf、CanDrv和CAN邮箱应共同将要传输的L-PDU仅存储一次在单个位置。根据传输方法,这些位置可以是: • CA…

Java字符串查找

目录 1.查找字符 &#xff08;1&#xff09;以索引查找字符 &#xff08;2&#xff09;以字符查找索引 2.查找字符串 在给定的字符串中查找需要的字符或字符串是常见的操作&#xff0c;以下是String类中常用的查找方法。 1.查找字符 查找字符分为两种情况&#xff1a;一种…

【两周学会FPGA】从0到1学习紫光同创FPGA开发|盘古PGL22G开发板学习之DDR3 IP简单读写测试(六)

本原创教程由深圳市小眼睛科技有限公司创作&#xff0c;版权归本公司所有&#xff0c;如需转载&#xff0c;需授权并注明出处 适用于板卡型号&#xff1a; 紫光同创PGL22G开发平台&#xff08;盘古22K&#xff09; 一&#xff1a;盘古22K开发板&#xff08;紫光同创PGL22G开发…

【Ubuntu20.04】【验证可行】修改切换输入法的快捷键

网上好多博客都是说添加输入法什么的&#xff0c;没说到关键点。 修改切换输入法的快捷键&#xff0c;是在系统设置的键盘快捷键那里修改的&#xff0c; 不是在输入法那里改的&#xff0c;如下图 看到上面的【Keyboard shortcuts】/ 【Typing】 默认是SuperSpace【微软键盘就…

电梯五方对讲接口说明 Sip五方对讲使用说明

1.2/4线接线模块输出接口;接4方对讲设备:12V&#xff0c;2/4线接线模块供电输入 -:GND&#xff0c;接地 R二/四线R Li二四线L 2.RS-485接口:预留援口&#xff0c;可接读卡器、楼层控制器、探头&#xff0c;需要软件额外开发实现。 3.短路输出接口2:对应短路输入接口&#x…

Vue2+Vue3基础入门到实战项目(六)——课程学习笔记

镇贴&#xff01;&#xff01;&#xff01; day07 vuex的基本认知 使用场景 某个状态 在 很多个组件 来使用 (个人信息) 多个组件 共同维护 一份数据 (购物车) 构建多组件共享的数据环境 1.创建项目 vue create vuex-demo 2.创建三个组件, 目录如下 |-components |--Son1.…