关系型数据库介绍和初识Oracle

2020-06-09  本文已影响0人  firefly_

Q:什么是关系型数据库?
【拓展】简述关系型数据库和非关系型数据库
关系型数据库(Relational DataBase Management System),简称 RDBMS。说起关系型数据库,我们脑海中会立即浮现出 Oracle、MySQL、SQLServer 等数据库,这些都是我们常用的关系型数据库。

关系型数据库,是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,以便于用户理解,关系型数据库这一系列的行和列被称为表,一组表组成了数据库。用户通过查询来检索数据库中的数据,而查询是一个用于限定数据库中某些区域的执行代码。关系模型可以简单理解为二维表格模型,而一个关系型数据库就是由二维表及其之间的关系组成的一个数据组织。

关系型数据库最大的特点就是在其关系这个词,它可以保存数据库中的各种关系。那么这个关系如何理解呢?我们就拿公司这个组织来讲吧。

在公司里,我们有部门、小组、员工这几个实体,而这几个实体之间都是有一定关系的。例如:一个部门能有多个小组,一个小组有多个员工,所以部门和小组之间的关系是N:N的关系。于此类似,小组与员工也是N:N的关系。

关系型数据库的发展历程
在1979年,Larry Ellison 使用汇编和C语言主导开发了第一个商用关系型数据库 Oracle。在此之后的接近16年内的时间,Oracle 数据库一路奔跑,成为了世界上最流行的关系型数据库。

在1989年,微软(Microsoft)也发布了一个关系型数据库 SQL Server,但其同样也是一个收费的商业型数据库。

直到1995年,瑞典公司MySQL AB发布了 MySQL 数据库的第一个版本,从此终结了关系型数据库只能用 Oracle、SQL Server 这些收费软件的神话。

在 MySQL 诞生后,因为其开源、免费的特性,所以其得到了众多中小使用者的拥护,其用户量增长迅猛。而在这期间,MySQL的主人也几易其手。

在2008年,Sun 公司收购了 MySQL AB 公司,同时也获得了 MySQL 数据库的管理权。在 2010 年的时候,Oracle 公司收购了 Sun 公司,获得了 MySQL 的管理权。

而就在 Oracle 收购 Sun 公司的当天,因为担心被 Oracle 收购后MySQL的前景会受到限制,被称为 MySQL 之父的 Michael Widenius fork 了 MySQL 的一个分支,启动了 MariaDB 项目。

果不其然,在被收购不久后,MySQL随即推出了相关的收费版本。虽然原来的免费版本仍然可以使用,但在可预见的未来,Oracle 投入到 MySQL 中的精力可能很有限。毕竟Oracle是一个商业公司,也是要养家糊口的。

现在我们可以了解到现在主流关系型数据库的诞生和发展概况,主要可以分为下面几个阶段:


Q:你认为的关系型数据库的市场份额排名?
https://db-engines.com/en/ranking

DB-Engines上数据库排名

Q:为什么使用Oracle?
MySQL这么好,为什么还有人用Oracle?
为什么大部分公司的数据库系统仍然要用Oracle?我认为Oracle之所以能占有这么大的市场份额,是因为其在海量数据的处理上更具有优势,并且能提供一整套的数据存储解决方案。

在一些非常大的企业里,这些企业通常拥有庞大的资金能力,所以它们会选择用钱购买解决方案,而不是自己雇佣人员使用 MySQL 去维护(当然现在也有很多大厂倾向去Oracle而使用MySQL)。
总的来说,Oracle比起MySQL具有下面的优点:

因为Oracle有上面这些特性,所以Oracle更加适合那些大型企业。因为这些企业资金充足,能承担得起Oracle的昂贵费用。另一方面,这些企业的数据量也是非常庞大,它们更注重数据的安全性和高效存储,并且关心的出现问题的时候能快速解决,Oracle提供的一系列服务正好符合它们的需求。在国内,金融机构、政府部门、银行、医院等机构常选择使用Oracle。

而对于一些中小型企业或者个人使用者来说,一方面Oracle软件非常笨重,另一方面Oracle授权费用昂贵,对于它们来说无法承受。而它们的数据库又恰好不是特别大,所以对于这些使用者来说,使用MySQL已经能够解决它们的需求了。那么也就无需去付费使用Oracle的数据库了。如果单纯从(关系型)数据库性能来进行比较的话,Oracle无疑是最牛逼的,毕竟Oracle比MySQL诞生早了10多年,历史地位在这里摆着呢,所以学习掌握Oracle是很有必要的。


Oracle常用的数据库字段类型如下:

字段类型 中文说明 限制条件 其他说明
CHAR 固定长度字符串 最大长度2000 bytes
VARCHAR2 可变长度的字符串 最大长度4000 bytes 可做索引的最大长度749
NCHAR 根据字符集而定的固定长度字符串 最大长度2000 bytes
NVARCHAR2 根据字符集而定的可变长度字符串 最大长度4000 bytes
DATE 日期(日-月-年) DD-MM-YY(HH-MM-SS) 无千虫问题
TIMESTAMP 时间戳 可存储时区和秒的小数位 0-9位小数,默认是6位
LONG 超长字符串 最大长度2G(231-1)
RAW 固定长度的二进制数据 最大长度2000 bytes 可存放多媒体图象声音等
LONG RAW 可变长度的二进制数据 最大长度2G 同上
BLOB 二进制数据 最大长度4G
CLOB 字符数据 最大长度4G
NCLOB 根据字符集而定的字符数据 最大长度4G
BFILE 存放在数据库外的二进制数据 最大长度4G
ROWID 数据表中记录的唯一行号 10 bytes ********.****.****格式,*为0或1
NROWID 二进制数据表中记录的唯一行号 最大长度4000 bytes
NUMBER(P,S) 数字类型 P为总位数,S为小数位数
DECIMAL(P,S) 数字类型 P为总位数,S为小数位数
INTEGER 整数类型 小的整数
FLOAT 浮点数类型 NUMBER(38),双精度
REAL 实数类型 NUMBER(63),精度更高

补充:varchar和varchar2区别


Oracle和MySQL区别

其他资料:
Oracle和MySQL的函数对比和常用区别
Oracle 高效分页查询SQL
Oracle数据库查询高效分页


TODO 处理海量数据Oracle和MySQL的性能比较?

上一篇下一篇

猜你喜欢

热点阅读