数据库相关基础概论
大家好,这次给大家带来的是我的新的专栏:数据库,数据库相对来说难度不是那么高,大家只要勤加练习、熟记语法,我相信学好数据库不是什么问题,博主会从0剖析,逐步讲解数据库的知识点,并且会举很多实例。最重要的是,博主不会采用软件,使用最原始的方式 -> 命令行来讲解,这样讲解的好处是逐个语句进行书写,不会造成读者思路跟不上的问题!
QQ:162196770
微信:PRIDE_Xu_
Gitee:https://gitee.com/jialebihaitao
下一篇博客传送门:
文章专栏:
SQL
语句为核心),SQL
是一门编程语言,使用比较简单数据库是一个软件(一类软件),这一类软件功能就是”管理数据”,也就是组织并存储数据的软件
数据库:软件
数据结构:学科
数据库软件在实现过程中,是非常依赖数据结构的,实现数据库软件的内部,会广泛的使用到各种数据结构~
数据结构这门学科就是在讨论具体如何组织和管理数据~ 管理的目的就是为了进行”增删改查”
定义:数据的组织形式使用“表”作为结构,类似于excel
。首先得有⼀个表头,表头中约定了有很多列,以及每⼀列的类型,插入的数据就是表中的一行。这一行里的每⼀列都需要和表头结构对应。
对于数据的“约束”(对于数据合法性的校验)比较强
适用于大部分场景 MySQL
,Oracle
,SQL Server
,SQLite
NoSQL
):数据的组织形式使用“键值对”作为结构。类似于Map
key
和value
,每组数据的value
中都需要包含哪些字段,没有明确要求,对于数据的约束更低外存:分为软盘、硬盘、光盘、硬盘、U盘(flash),其中现在最常用的就是硬盘以及U盘
内存和外存的区别:
内存的存储空间较小(8G,16G),外存的存储空间较大(512G,1T)
内存的访问速度快,外存的访问速度慢(大概要差3-4个数量级)
这里的外存特指机械硬盘,硬盘也有机械硬盘和
SSD
,机械硬盘它受限于机械硬盘的物理结构,导致他的存储速度,已经快十年没有发展了。但是SSD固态硬盘访问速度很快,比机械硬盘快很多,最好的固态硬盘,快赶上最垃圾的内存了~不过一般的SSD
还是会比内存慢上许多的
内存成本高,外存成本低
内存中的数据断电后消失,外存中的数据断电后还在
也不是绝对的.只不过一般机械硬盘存储数据的保存时间是几年~十几年之间
当前世界上的绝大部分计算机(99%以上)都是按照上述结构来进行构建的~
给大家讲讲两位祖师爷的光辉历史
Part I:冯诺依曼
冯诺依曼体系结构,叫做“冯诺依曼”大佬提出来的,可以说是20世纪最
NB
的全才,它是一个数学家,还是物理学家,还是化学家,计算机之父,在二战中,还参与了曼哈顿计划,他们一起来研究原子弹。那年,有一天,冯诺依曼大佬,去坐火车~(绿皮车),对面有个小伙是 “普林斯顿大学的研究员”,研究一个用来”计算的机器“,但是遇到一些瓶颈,搞不下来了~~~冯诺依曼大佬去溜达溜达,研究了一段时间,就牵头把第一代计算机给研究出来了!
计算机使用二进制,也是冯大佬提出来的~
Part II:图灵
图灵奠定了计算机的理论基础
图灵也参与了二战~最大的贡献,破解了德军的电报加密系统,这直接促进了诺曼底登陆
但是遗憾的是英年早逝~据说是收到了英国皇室的迫害~
一般情况下,MySQL
的数据是保存在硬盘上的~ (”持久化存储的“方式),但是也有少数数据库,是把数据存在内存上的(比如:Redis
,Tair
…)
所以在实际的大型开发中,最容易出现问题的,就是数据库.
相比之下,咱们之前学习的数据结构~尤其是之前写的代码,数据基本都是在内存中保存的~(代码中创建的变量,就保存到对应内存空间)
Oracle
:最好的数据库,毋庸置疑
最好的数据库 就是
Oracle
,不⽤他的理由:贵!普通学生用不起,⼀些中小型公司也用不起,甚至一些大厂也不太用得起,真正用得起的都是财大气粗的金主,比如银行。银行的特点:
- 数据特别重要
- 不差钱
贵主要不是贵在软件使用上,而是花钱买的是⼀份平安,放心,更是⼀个背锅侠(出问题了有人赖),出了问题
Oracle
的技支持会上门服务,所以花钱买的是服务。
相比之下
MySQL
比较适合咱们使用,开源免费,白嫖⼀时爽,一直白嫖⼀直爽~而且,
Oracle
基本都需要在配置超高的计算机上运行!(夸张的说,国家级的计算机才适合用)
MySQL
:开源免费,使用体验感也十分不错
国内,最开始的时候,
MySQL
的市场份额很低,还是以Oracle
为主阿里牵头,掀起⼀场“去Oracle”的革命。当时
MySQL
是⼀个备选,阿里那时候也在自研数据库最开始替换的时候,问题很多,好在无数大佬们前仆后继,去踩坑去填坑,
MySQL
也经历了⼀段快速发展过程。最终
MySQL
也就相对稳定搞笑了,就称为了当前非常主流的数据库。但是
MySQL
的高速发展,也抢占了不少Oracle
的市场份额。
Oracle
为了遏制MySQL
的发展,釜底抽薪,给MySQL
买下了,买完之后立刻MySQL
就不开源了(虽然暂时还是免费)同时
Oracle
也是Java
的爸爸
Oracle
这个公司特别爱搞事情~
Android
,本来是想用Python
。正好那个时候Python
之父从谷歌离职了,谷歌就把语言切换到了Java
。随着
Android
风生水起,大家都眼红的不要不要的了,Oracle
这时候灵机一动,就把Java
给买下来了,然后Oracle
就把谷歌上了法庭,你要想用
Java
开发安卓,你得给钱(讹人!)谷歌败诉,只能赔钱于是谷歌一气之下准备发展下⼀代移动端系统,搭载的开发语⾔
Dart
(谷歌自研的语⾔),搭载的框架Flutter
等。此时
MySQL
作者也生气了,Oracle
公司抠抠搜搜,落井下石。所以他在原来MySQL
的开源版本基础上又搞了⼀条分支,叫
Mariadb
,仍然是开源免费的。Mariadb
和原来的MySQL
之间都是兼容的,当前学习的时候用哪个都行
SQL Server
:也不错,营销策略害了他
SQL Server
微软出品的数据库
其实是⼀个很好的很强大的数据库,然而没人用
最主要的原因:
- 收费的,而且也不太便宜
- 早期的
SQL Server
和Windows
平台是捆绑的,但是那时候主流服务器系统都是Linux
正因为这样的营销错略,导致错失市场份额
SQL Server
的市场份额被MySQL
抢占了
C#
的市场份额也被Java
抢占了
后来微软反应过来了,也做出了调整,让SQL Server
和C#
都能⽀持跨平台,但是为时已晚
SQLite
:世界上装机量最大的数据库
安卓手机自带的数据库,小巧轻量
还有其他数据库,比如SQLite
,HBase
,MongoDB
,Redis
等等
以后在实际工作中,数据库用得最多的,还是MySQL
,各个数据库之间,差别也不大,“一通百通”