Oracle数据库概念简介

这篇具有很好参考价值的文章主要介绍了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数据库概念简介,数据库,oracle,数据库,约束,表空间,DBMS,nosql
这里的段就是表

注意:
表的数据,是基于某一个用户放入某一个表空间的,而这个表空间会随机把这些表数据放到一个或者多个数据文件中;
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开销。具体的性能表现还取决于具体的应用需求、数据模型、数据访问模式等因素。因此,在选择数据库时,需要综合考虑应用需求和数据库特性,进行合适的选择。文章来源地址https://www.toymoban.com/news/detail-697961.html

到了这里,关于Oracle数据库概念简介的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Oracle数据库

    ①层次型数据库 ②网状型数据库 ③关系型数据库(主要介绍) E-R图:属性(椭圆形),实体(矩形),联系(菱形-一对一、一对多、多对多) 注:有的联系也有属性 关系型数据库的设计范式: 第一范式(1NF):属性不可再分,字段保证原子性 第二范式(2NF):在满足1

    2024年02月08日
    浏览(57)
  • Oracle 开发篇+Java通过HiKariCP访问Oracle数据库

    标签:HikariCP、数据库连接池、JDBC连接池、 释义:HikariCP 是一个高性能的 JDBC 连接池组件,号称性能最好的后起之秀,是一个基于BoneCP做了不少的改进和优化的高性能JDBC连接池。 ★ Java代码 ※ 如果您觉得文章写的还不错, 别忘了在文末给作者点个赞哦 ~

    2024年02月13日
    浏览(54)
  • 快速监控 Oracle 数据库

    Oracle 数据库在行业内应用广泛,通常存放的非常重要的数据,监控是必不可少的,本文使用 Cprobe 采集 Oracle 监控数据,极致简单,分享给大家。 安装配置 Oracle 简单起见,我使用 Docker 启动 Oracle,命令如下: 如上命令启动之后,Oracle 的监听端口是 1521,用户名/密码是 syst

    2024年01月20日
    浏览(49)
  • Oracle大型数据库技术

    sqlplus 记录实验过程的方法: 开启相关服务 oracleserviceORCL 控制面板–管理–服务–找到后开启 命令行方法: cmd–net start|stop oracleserviceorcl 常用操作 显示当前用户名 常用的用户名和口令 :dba用户,默认口令:change_on_install,Oraclell,必须以sysdba或者sysoper身份登录 system: 普通管

    2024年02月19日
    浏览(47)
  • ORACLE数据库 开窗函数

    开窗函数 2.1开窗函数的定义及语法 开窗函数(又名:分析函数,窗口函数,OLAP函数) 聚合函数:将数据按照一定的规则分组,统一分析各组的某项情况,每个分组返回一行结果 开窗函数:将数据按照一定的规则分组,统一分析各组的某项情况,每行数据返回一行结果 (

    2024年02月11日
    浏览(46)
  • 数据库(二) Oracle篇

    概述 SQL函数有单行函数和多行函数,其区别为: 单行:输入一行,返回一行,如字符、数字、转换、通用函数等 多行:输入多行,返回一行,也称为分组函数、组函数、聚合函数, 且多行函数会自动滤空 字符函数 CONCAT( X,Y): 连接字符串X和Y INSTR(X,STR) : 后面STR在前面字符串X第一次

    2024年02月10日
    浏览(52)
  • oracle数据库巡检脚本

    用于Oracle数据库巡检的示例脚本: 

    2024年02月14日
    浏览(60)
  • Oracle数据库完整卸载

    进入计算机管理,在服务中,找到oracle开头的所有服务,右击选择停止。 快捷键:ctrl+shift+esc打开任务管理器 点击开始菜单找到Oracle,然后点击Oracle安装产品,再点击Universal Installer。 点击之后稍等一会然后会进入进入下图界面,点击卸载产品。 单击“卸载产品”,选中除“Or

    2024年01月16日
    浏览(63)
  • Oracle 数据库恢复删除的数据

    需求描述: 同事让删除脏数据,结果删错了,需要恢复数据 思路: 利用闪回恢复数据只能恢复15分钟之内的,后面undo空间会被重写,就恢复不了,所以删除数据后,要谨慎再三确认,若发现不对,则利用闪回恢复 先查询删除时的时间节点的快照 查到时间戳之后 闪回恢复数

    2024年01月24日
    浏览(68)
  • Oracle数据库从入门到精通系列之二十一:Oracle 19c数据库增加重做日志大小

    在此最佳实践中,我们增加了 Oracle 重做日志的大小以提高数据库性能。适当调整数据库重做日志的大小可以减少数据库中的等待事件,从而优化数据库系统。 数据库重做日志至少包含两个文件,负责存储对数据库所做的任何更新。重做日志对于数据库至关重要,因为它们可

    2024年04月26日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包