1、数据库的介绍
1.1 数据库学啥?
- 数据库的基本操作(以SQL语句为核心),SQL是一门编程语言,使用比较简单
- 数据库的底层原理(主要针对常见面试题)
- 数据库编程(使用Java语言操作数据库)
1.2 数据库到底是啥?
数据库是一个软件(一类软件),这一类软件功能就是”管理数据”,也就是组织并存储数据的软件
1.3 与数据结构的关系
数据库:软件
数据结构:学科
数据库软件在实现过程中,是非常依赖数据结构的,实现数据库软件的内部,会广泛的使用到各种数据结构~
数据结构这门学科就是在讨论具体如何组织和管理数据~ 管理的目的就是为了进行”增删改查”
1.4 分类
1.4.1 关系型数据库
- 定义:数据的组织形式使用“表”作为结构,类似于excel。首先得有⼀个表头,表头中约定了有很多列,以及每⼀列的类型,插入的数据就是表中的一行。这一行里的每⼀列都需要和表头结构对应。
- 对于数据的“约束”(对于数据合法性的校验)比较强
- 适用于大部分场景 MySQL,Oracle,SQL Server,SQLite
1.4.2 非关系型数据库
- 非关系型数据库(也叫NoSQL):数据的组织形式使用“键值对”作为结构。类似于Map
- 存储的时候都是需要制定key和value,每组数据的value中都需要包含哪些字段,没有明确要求,对于数据的约束更低
- 相比于关系数据库,牺牲了⼀部分的功能,但是换来了更高的效率以及更强的水平扩展能力 更适用于分布式系统中
1.5 一个电脑的基本组成(题外话)
- 外存:分为软盘、硬盘、光盘、硬盘、U盘(flash),其中现在最常用的就是硬盘以及U盘
- 内存和外存的区别: 内存的存储空间较小(8G,16G),外存的存储空间较大(512G,1T) 内存的访问速度快,外存的访问速度慢(大概要差3-4个数量级) 这里的外存特指机械硬盘,硬盘也有机械硬盘和SSD,机械硬盘它受限于机械硬盘的物理结构,导致他的存储速度,已经快十年没有发展了。但是SSD固态硬盘访问速度很快,比机械硬盘快很多,最好的固态硬盘,快赶上最垃圾的内存了~不过一般的SSD还是会比内存慢上许多的 内存成本高,外存成本低 内存中的数据断电后消失,外存中的数据断电后还在 也不是绝对的.只不过一般机械硬盘存储数据的保存时间是几年~十几年之间
- 当前世界上的绝大部分计算机(99%以上)都是按照上述结构来进行构建的~
1.6 祖师爷:冯诺依曼以及图灵(题外话)
给大家讲讲两位祖师爷的光辉历史
Part I:冯诺依曼
冯诺依曼体系结构,叫做“冯诺依曼”大佬提出来的,可以说是20世纪最NB的全才,它是一个数学家,还是物理学家,还是化学家,计算机之父,在二战中,还参与了曼哈顿计划,他们一起来研究原子弹。 那年,有一天,冯诺依曼大佬,去坐火车~(绿皮车),对面有个小伙是 “普林斯顿大学的研究员”,研究一个用来”计算的机器“,但是遇到一些瓶颈,搞不下来了~~~冯诺依曼大佬去溜达溜达,研究了一段时间,就牵头把第一代计算机给研究出来了! 计算机使用二进制,也是冯大佬提出来的~
Part II:图灵
图灵奠定了计算机的理论基础 图灵也参与了二战~最大的贡献,破解了德军的电报加密系统,这直接促进了诺曼底登陆 但是遗憾的是英年早逝~据说是收到了英国皇室的迫害~
1.7 存储位置
一般情况下,MySQL的数据是保存在硬盘上的~ (”持久化存储的“方式),但是也有少数数据库,是把数据存在内存上的(比如:Redis,Tair…)
所以在实际的大型开发中,最容易出现问题的,就是数据库.
相比之下,咱们之前学习的数据结构~尤其是之前写的代码,数据基本都是在内存中保存的~(代码中创建的变量,就保存到对应内存空间)
1.8 常用数据库软件介绍
- Oracle:最好的数据库,毋庸置疑 最好的数据库 就是 Oracle,不⽤他的理由:贵!普通学生用不起,⼀些中小型公司也用不起,甚至一些大厂也不太用得起,真正用得起的都是财大气粗的金主,比如银行。 银行的特点: 数据特别重要 不差钱 贵主要不是贵在软件使用上,而是花钱买的是⼀份平安,放心,更是⼀个背锅侠(出问题了有人赖),出了问题Oracle的技 支持会上门服务,所以花钱买的是服务。 相比之下MySQL 比较适合咱们使用,开源免费,白嫖⼀时爽,一直白嫖⼀直爽~ 而且,Oracle基本都需要在配置超高的计算机上运行!(夸张的说,国家级的计算机才适合用)
- MySQL:开源免费,使用体验感也十分不错 国内,最开始的时候,MySQL的市场份额很低,还是以Oracle为主 阿里牵头,掀起⼀场“去Oracle”的革命。当时MySQL是⼀个备选,阿里那时候也在自研数据库 最开始替换的时候,问题很多,好在无数大佬们前仆后继,去踩坑去填坑,MySQL也经历了⼀段快速发展过程。最终 MySQL也就相对稳定搞笑了,就称为了当前非常主流的数据库。 但是MySQL的高速发展,也抢占了不少Oracle的市场份额。 Oracle为了遏制MySQL的发展,釜底抽薪,给MySQL买下了,买完之后立刻MySQL就不开源了(虽然暂时还是免费) 同时Oracle也是Java的爸爸 Oracle 这个公司特别爱搞事情~ Google当年整Android,本来是想用Python。正好那个时候Python之父从谷歌离职了,谷歌就把语言切换到了Java。 随着Android风生水起,大家都眼红的不要不要的了,Oracle这时候灵机一动,就把Java给买下来了,然后Oracle就把谷歌 上了法庭,你要想用Java开发安卓,你得给钱(讹人!)谷歌败诉,只能赔钱 于是谷歌一气之下准备发展下⼀代移动端系统,搭载的开发语⾔Dart(谷歌自研的语⾔),搭载的框架Flutter等。 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,各个数据库之间,差别也不大,“一通百通”
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/290137.html