• 从SQL SERVER、MYSQL到ORACLE


    1. 背景

    最近做的一个项目,需要管理oracle数据库中,涉及到2000多张表的CRUD操作。之前是比较系统的学习过sql语言和sql server数据库的;而mysql和sql server在使用上,虽然有一定程度的差异,但差异并不算大,经过几个项目的使用,也就比较熟悉了。
    而对于最近使用的oracle数据库,对于有sql server或者mysql的使用经验的开发者而言。要比较快的上手,还是得投入一定的时间去尝试。

    2. oracle的安装事项

    oracle的安装,可以参考网上相关的安装文档。
    比如,可以参考该文章:oracle 11g安装教程完整版
    安装成功后,登录即可。
    只是安装完成后,登录成功。过了几天,再次登录的时候,不知道什么原因,再进行登录,就无法登录了。查看了相应的服务都是启动的,并且,用SQL Plus是能够正常登录的。但是,用navicat和datagrid都提示无法连接。后续,经过若干查找,查找到关于Net Configuration AssistantNet Manager。问题就出在这里,安装的时候,是基于localhost来进行安装的。但是监听程序监听的本机的名称。如下图所示:
    在这里插入图片描述
    如此一来,在使用navacat连接oracle数据库的时候,就识别不了localhost。如下图所示为navacat的oracle的连接。
    在这里插入图片描述
    以下,为orcl数据库启动的主机名。
    在这里插入图片描述
    那么,知道了原因所在。解决问题也就水到渠成。有两种方式,(1)监听程序添加一个localhost的监听地址;(2)修改host文件,让计算机名和localhost对应起来。
    至此,安装oracle并正常连接,也就算是完成了。

    3. oracle的表空间、表和用户

    如果说oracle与sql server(mysql)有什么差异的话,那么,oracle的表空间、表和用户就是最大的差异之一。做一个比方,表空间就相当于一个仓库、创建一个表空间、就会在磁盘上生成一个文件。如下图所示:
    在这里插入图片描述
    但是,该表空间并不会在navacat连接后,展示出来。在明白了什么是表空间后,下一个需要明白的就是用户。新建一个用户,就会在navacat中多出一个用户。如下图所示:
    在这里插入图片描述
    从上图可知,oracle是基于用户来展示数据的。即某一个用户,拥有多少表。如果说表空间就像仓库一样,那么,用户就相当于商家。表就相当于商品。

    1. 1个商家能有很多商品,1个商品只能属于一个商家
      即:一个用户可以有很多表,一个表只能属于一个用户
    2. 1个商品可以放到仓库A,也可以放到仓库B,但不能同时放入A和B
      即:一个表可以放到A表空间,也可以放到B表空间,但不能同时放入A表空间和B表空间
    3. 仓库不属于任何商家
      即:表空间不属于任何用户
    4. 商家都有一个默认的仓库,如果不指定具体仓库,商品则放到默认的仓库中
      即:用户都有一个默认的表空间,如果不指定具体的表空间,则表放到默认的表空间中

    oracle中用户的所有数据都是存放在表空间中的,很多个用户可以共用一个表空间,也可以指定一个用户只用某一个表空间。

    表空间:创建表空间会在物理磁盘上建立一个数据文件,作为数据库对象(用户、表、存储过程等等)的物理存储空间;

    用户:创建用户必须为其指定表空间,如果没有显性指定默认表空间,则指定为users表空间;创建用户后,可以在用户上,创建表、存储过程等等其他数据库对象;

    表:是数据记录的集合;

    创建过程: 表空间—>用户—>表;

    所属关系: 表空间 包含 用户 包含 表;

    说明:以上引用来源于oracle中表空间与用户的关系,Oracle 用户与表空间关系

    4. 结语

    oracle数据库十多年以前有接触过,但由于没有涉及到项目实践,也没有与其他数据库进行相关的比较,对应的知识也就随着时间流逝而逐渐模糊,直到变为一个简单的名称(oracle)。
    前几个月,在项目的驱动下,再次捡起oracle。经过了简单的几步:
    (1)安装及其注意事项;
    (2)理解oracle的表空间、用户、表之间的关系;
    (3)平台开发过程中,涉及到相关的操作语句,去搜索并逐渐熟悉oracle。
    当然,oracle本身就是复杂的,只是,对于开发人员来说,最基本的需求是能够使用oracle来为开发服务。当有新的需求的时候,再进一步深入。
    对于新知识的渴求,不在于知识本身,而在于新知识能够解决复杂的问题,也在于新知识能够让曾经无序的思维变得有序,在于新知识能够让工作变得高效,让遇到的问题都能够找到好的对应的解决方案。
    (好记性不如烂笔头。对抗遗忘的最好方式是:在解决问题的时候,记录下遇到的问题和解决的方式,后续遇到相同的问题,只需要翻翻笔记即可。)

  • 相关阅读:
    H3C S5820V2_5830V2交换机IRF2堆叠后升级方法
    【番外篇】如何制作慕斯蛋糕
    写过vue自定义指令吗,原理是什么?.m
    使用vite创建vue3项目
    【413.等差数列划分】
    学习ASP.NET Core Blazor编程系列三——实体
    @PropertySource读取自定义配置
    P4 开发实践 — NG-SDN Tutorial — Exercise 4: Enabling ONOS Built-in Services
    Linux常用命令大全
    【漏洞复现】redis未授权访问
  • 原文地址:https://blog.csdn.net/fanjianglin/article/details/126405431