Oracle和mysql容易混的误区

举报
窗台 发表于 2020/10/29 22:33:54 2020/10/29
【摘要】 Oracle 能在所有主流平台上运行(包括Windows)。完全支持所有的工业标准。采用完全开放策略。可以使客户选择最适合的解决方案。(收费较高昂) MySql 已于开发语法上也比较简单,很友好对于初学者的学习和实际操作有很好的实际操作感。

mysql 和Oracle 在开发中的使用是随处可见的,那就简单去了解一下这俩款火的不行的数据库,

本质区别:            

          • Oracle数据库是一个对象关系数据库管理系统(收费)

          • MySQL是一个开源的关系数据库管理系统(免费)

数据库的安全性:

        • mysql使用三个参数来验证用户,即用户名,密码和位置

        • Oracle使用了更多的安全功能,如用户名,密码,配置文件,本地身份验证,外部身份验证,高级安全增强功能等

权限

    MySQL的权限系统是通过继承形成的分层结构。权限授于高层时,其他低层隐式继承被授于的权限,当然低层也可改写这些权限。

  按授权范围不同,MySQL有以下种授权方式:

        1、全局;

        2、基于每个主机;

        3、基于表;

        4、基于表列。

 每一级在数据库中都有一个授权表。当进行权限检查时,MySQL从高到低检查每一张表,低范围授权优先于高范围授权。

与Oracle不同,MySQL没有角色的概念。也就是说,如果对一组用户授于同样的权限,需要对每一个用户分别授权。

模式迁移

  模式包含表、视图、索引、用户、约束、存储过程、触发器和其他数据库相关的概念。多数关系型数据库都有相似的概念。

   包含内容如下:

    

            1、模式对象的相似性;

            2、模式对象的名称;

            3、表设计时的关注点;

            4、多数据库整合;

            5、MySQL模式整合的关注点。

 模式对象的相似性

就模式对象,Oracle和MySQL存储诸多的相似,但也有一些不同

Oracle
Mysql
AFTER tirgger tirgger
BEFORE tirgger tirgger before
Check constraint Check constraint
Column default Column default
Database Database
Foreign key Foreign key
index Index
Package N/A
PL/SQL function
rOUNATE
Primary key 
Primary key
Role
N/A
Schema  Schema
Sequence
AUTO_INCREMENT for a  column
Snapshot
N/A
Synonym N/A
Table Table
Temporary table Temporary table
Trigger for  each row 
Trigger for each row
Unique key
Unique key

模式对象的名称

Oracle是大小写不敏感的,并且模式对象是以在写时行存储。在Oracle的世界中,列、索引、存储过程、触发器以及列别名都是大小写不敏感,并且在所有平台都是如此。MySQL是大小写敏感的,如数据库相对的存储路径、表对应的文件都是如此


当把关键字用引号引起来时,Oracle和MySQL都允许把这些关键字用于模式对象。但MySQL对于一些关键字,不加引号也行。

表设计的关注点 

        1、字符数据的类型;

        2、列默认值。

        3.2.3.1 字符数据类型

(1) Oracle支持4种字体类型:CHAR、NCHAR、NVARCHAR2和VARCHAR2。CHAR和NCHAR的最大长度为2000字节,

NVARCHAR2和VARCHAR2最大长度为4000字节。

(2)MySQL和Oracle在字符型数据保存和读取上存在一些不同。MySQL的字符类型,如CHAR和VARCHAR的长度小于65535字节。Oracle支持4种字体类型:C    HAR、NCHAR、NVARCHAR2和VARCHAR2。CHAR和NCHAR的最大长度为2000字节,NVARCHAR2和VARCHAR2最大长度为4000字节。

 (3.2.3.2 列默认值

        MySQL会处理列默认值,不允许他为空,这点和Oracle不同。在Oracle中如果向表插入数据,需要对有所有不允许为NULL列的值。

 多数据库迁移

  如果多个MySQL数据库位于同一个数据库服务上,支持迁移。

数据存储概念

 MySQL的数据库对应于服务器上数据目录内的了目录,这一数据存储方式与多数据数据库不同,也包括Oracle。数据库中的表对应一个或者多个数据库目录下的文件,并取表存储时的存储引擎。

 一个Oracle数据库包含一个或者多个表空间。表空间对应数据在磁盘上的物理存储。表空间是从一个或者多个数据文件开始构建的。数据文件是文件系统中的文件或者原始存储的一块空间。

 语法上的区别:

主键:

      • mysql一般使用自动增长类型,在创建表的时候指定表的主键为auto increment,主键就会自动增长。

      • Oracle中没有自动增长,主键一般使用序列,插值时依次赋值即可

引号问题:   

      • Oracle不使用双引号,会报错

      • mysql则对引号没有限制

分页查询:

      • mysql分页查询使用关键字limit来实现

      • Oracle没有实现分页查询的关键字,实现起来较复杂,在每个结果集中只有一个rownum字段标明它的位置,并且只能用rownum<=某个数,不能用rownum>=某个数,因为ROWNUM是伪列,在使用时所以需要为ROWNUM取一个别名,变成逻辑列,然后来操作

数据类型:

      • mysql中的整型:int(),字符串类型:varchar()

      • Oracle中的整形:number(),字符串类型:varchar2()


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。