关于 MySQL 数据库~~
数据库和数据结构的关系
数据结构,是一个学科,研究数据如何组织,
对于少量的数据,不需要组织…如果是大量的数据,就得好好组织起来,以便于后续进行增删查改!!!~~
数据库,是一类软件,这个软件就是用来组织/保存/管理数据的.
组织这些数据也是为了后续进行增删改查~~
数据库被实现的过程中,也应用到了很多的数据结构!!!
常见的数据库软件:
- Oracle [数据库圈子里的带头大哥!!!] (最好的)
Oracle (甲骨文)~~现在负责维护Java的公司 ~~互联网行业的巨头
适用于对数据安全极高,以及不在意成本的场景下,如银行
谈论公司大不大,主要是用“公司的市值”来衡量,字节由于没上市….市值缺少准确数字~~
华为也是同理
~~公司没上市,是因为太有钱了,不需要通过市场来融资
同理,valve~~
-
MySQL 当前使用最广泛的(用的最多的)
mysql作为一个开源免费的数据库~~就是比收费的香
一时白嫖一时爽,一直白嫖一直爽
尤其是中小公司,更青睐mysql
mysql其实也是近几年左右发展起来的,以前的时候,mysql还不行
阿里巴巴~~在200x年左右的时候,(淘宝,支付宝)数据库主要是用Oracle,但是Oracle太贵了!!
成本太高了~~要想用Oracle,不是光花钱买软件,还得搭配IBM的小型机才行
计算机发展的阶段:
巨型机(超算,全世界只有联合国五常才有,数量稀少)—>大型机—>中型机—>小型机—>微机 (如电脑,笔记本,以前还有微机课)
大型机,中型机,小型机也被统称为“小型机”
阿里巴巴就推动了去oracle化这样的行动~~使用mysql来代替Oracle
相当于阿里带头,把mysql里的坑给趟了一遍~~ 其他人一看,纷纷跟进 ~~mysql火了
Oracle这是就着急了!!!~~釜底抽薪 ,打不过就把mysql买了,ε=(´ο`*)))唉真是贫穷限制了我的想象力!! ~~Oracle它给的钱太多了 ~~ 卖完之后,mysql的作者就后悔了 ~~ 作者搞了一手操作,把mysql的源码,另起了分支,重新发布,起了个名字叫做mariadb
主流互联网公司都在用mysql
3.SQL Server 微软搞的数据库 ~~ 很多学校数据库就是用的这个~~ 从技术角度来看,这是一个很好的数据, ~~ 但是它好用不火 ~~ 主要原因是早些年微软的营销策略出了点问题,把SQL Server 等核心产品都和 Windows Server 捆绑销售 ~~ 把路走窄了,因为当时互联网服务器领域,Linux是最大的操作系统,当时公司的产品都是围绕Linux这个系统打造的生态 ~~ 嘿嘿,微软把自己给坑了 ~~ 点评:酒香也怕巷子深
4.SQLite 轻量级数据库
整个程序就是一个exe可执行文件,体积大概就是1M运行时吃的内存啥的也都不高 ~~
正因为这个东西轻量,经常会放到一些“小的”嵌入式系统上使用
最典型的就是手机,(安卓系统内置了sqlite)
也是个使用广泛的数据库
嵌入式:
生活中有很多设备,也是计算机 ~~ 如:冰箱,洗衣机,空调,投影仪,电视………这些设备上只需要
完成一些特定功能就行了 ~~ 不需要啥太高的配置,但可以做到联网 ~~ 万物互联
这些数据库大同小异 ~~ 90%以上都是共通的
以上数据库,都是关系型数据库,对于数据库中的数据的格式,要求比较严格
非关系数据库,代表的软件: redis,MongoDB,HBase….(功能相比于关系性数据库要少一些,但是性能更高,同时更适合当下大数据分布式这样的时代背景)
大数据:
如果数据一个机器装不下,此时需要使用多个机器来装 ~~ 此时这样的数据就是“大数据”
分布式:
引入多台机器,相互配合功能存储和管理这样的一份数据 ~~ 此时就称为“分布式”的系统
云 => 就是服务器
向现在有的厂商“云游戏”,但网络延时大
微服务(嘿嘿,骗人的):
在分布式的基础上(分布式就是使用多个机器共同管理一组数据),当我们在分布式背景下,引入的机器太多了,此时就需要对机器分分类 ~~分类分的越多越细,整体的结构就更复杂,单个机器干的事情就越少 ,更单一了 ~~称为叫做微服务 ~~ 相当于是分布式系统演化过程中的一个阶段 ~~ 解决原有的问题下,又引入新的问题,是好是坏,褒贬不一啊!
咱们日常见到的这些“高大上”的术语,本身都不神秘,~~ (甚至于说都是很简单的东西) ~~ 为啥要造出这些高端的词呢?这些词造出来是为了忽悠资本家的,为了拉投资 ~~作为从业者的我们,内行,可不要被这些词给忽悠了
谈谈mysql
关于mysql主要学啥?
1.SQL编程语言
~~sql是编程语言,sql server, mysql,oracle是软件 ,sql这个语言是运行在这些数据库软件上的……(就像java运行在jvm上)
~~ 通过SQL来完成对数据库的增删查改
~~不同的数据库软件,可能对于sql的语法支持略有差异,但是整体都是一样的
2.数据库背后的一些典型原理(面试题)
3.通过java代码来操作数据库[至关重要]
~~在工作中,绝大多数针对数据库的操作,都是通过代码来自动完成……
课堂上学习mysql主要是使用命令行界面来操作的,市面上也存在很多的图形化的程序 ~~ 本质上都是操作SQL ~~ 因为公司中有些环境,只能用命令行操作……命令行操作学习的核心
MySQL 这个数据库软件,是一个“客服端服务器”结构的程序
重要概念:
客户端(Client)
服务器(Server)
举个例子,有一天我去楼下吃饭,楼下有小饭馆,去小饭馆吃饭,到了小饭馆,进门说:”老板,来份蛋炒饭”,老板说:“好嘞,您稍等”.不一会,老板就把蛋炒饭端到你面前.
~~在这个交互过程中,我就是“”客户端“”,饭馆就是“服务器”
~~我和饭馆之间发生了交互
~~我是主动发起交互的这一方,因此我叫做“客服端”
~~餐馆是被动接受交互的这一方,因此餐馆就是“服务器”
客户端/服务器的定义,只是根据主动被动来确定的.
换句话说,某个程序,在场景1中可能是主动的,在场景2中可能就是被动的了,
此时,这个程序即是客户端,也是服务器 ~~
请求(Request): 客户端给服务器发的数据,就是请求.”老板,来份蛋炒饭”,就是请求.
响应(Response): 服务器返回给客户端的数据,就是响应.不一会,老板就把蛋炒饭端到你面前,就叫响应.
由于服务器是被动的 ~~ 所以餐馆(服务器)无法确定我(客户端)今天来不来吃饭,更会知道我啥时候来吃饭,同样也不知道我来了要吃啥子…… ~~所以这个餐馆,一大早就得开张,一直开到很晚才能关门 ~~就得时刻准备着!!!
对于一般的服务器程序来说,也是要持续运行的~~ 7*24小时运行(一天工作24小时,一周工作7天) ~~007
~~ 程序猿996,在其他行业里横向对比,已经是算比较轻松的了 ~~
销售 ~~ 地球不爆炸,我们不放假;宇宙不重启,我们不休息
医生 ~~ 要么在上班,要么在上班的路上…(疫情期间,更是辛苦)
停电,断网……这些都可能对服务器的稳定性造成影响.~~ 想象一下,微信服务器挂了,这会引起社会恐慌的 ~~ 非常了不得的事情!!!
大的互联网公司都会从技术手段来解决上述问题 ~~ 来保证服务的稳定性是非常高的…….一年之内不可用的时间不会超过5min~~
一个服务器,同一时刻,可能需要给多个客户端提供服务. ~~ 一个餐馆,不是专属给我开的,而是给很多人提供“吃饭”服务的~~当然,也不绝对,有的服务器是专属服务器,专门给某个固定的客户端提供服务的,也比较常见 ~~ 包括餐馆也有专属餐馆
在我们安装mysql的时候,我们同时安装了mysql的服务器和mysql的客户端!!!(这两程序都是在你的电脑上的)
服务器:
客户端:
mysql的客户端和服务器通过网络进行通信!! ~~客户端和服务器可以在同一个主机上(也就是现在我的情况) ~~也可以在不同的主机上(主机A装了客户端,主机B装了服务器),以后工作中基本是这个情况
mysql具体是使用啥样的硬件设备来保存的呢?
mysql以及其他的关系型数据库,都是使用硬盘来保存数据的!!!
计算基本结构
以上结构称为“冯洛伊曼体系”
谁提出来的?
~~冯洛伊曼,咱们的祖师爷, ~~咱们现在能够学计算机,能够去学编程,能够端上这碗饭,
能够成家立业,全靠祖师爷赏饭
咱们的祖师爷,事迹有很多 ~~
最初是一个数学家 ~~ 然后又是一个物理学家,还是一个化学家,还是博弈论之父,还参与过曼哈顿计划
,是奥本海默的技术顾问…….这些头衔,随便挑出一个,都可以名存青史…….
20世纪,最伟大的全才!!!
图灵(也是咱的祖师爷)排名不分先后
重要的知识点
内存和外存(硬盘)区别(对于程序设计,有深远的影响):
1.内存访问速度快,外存访问速度慢~~速度能差3-4个数量级(即几千倍)
2.内存的空间小,外存的空间大.(比如我的电脑,外存16GB,硬盘512GB)
3.内存成本贵,外存成本便宜!!! ~~ 一个好一点的16GB的内存条,可能就得几百上千,而同样几百上千能买到一个很好的1T甚至2T的固态硬盘(SSD,电子结构)或者4T的机械硬盘(靠机械结构存储数据,存储速度比较慢)能买2个
4.内存的数据(易失),断电后会丢失,外存的数据(持久),断电后,数据还在,但过个几年,就不知道在不在了!,”持久化”=>就是把数据写到硬盘上
计算机的基本单位~~
bit 一个二进制位
8 bit => 1 byte
1024 byte => 1 MB
1024 MB => 1 GB
1024 GB => 1 TB
1024 TB => 1 PB
数据库 ~~
数据库本体是服务器,服务器使用硬盘来存储数据 ~~ 上述硬盘的特点在我们数据库这也是成立的!!!
数据库服务器具体是如何在硬盘上组织数据的呢?
1.mysql服务器为了更好的组织数据,把上面要存的数据逻辑上划分出了多个数据集合.这些数据集合也称为叫做"数据库"
2.每个数据库里,使用“表”这样的结构来组织数据
“表”=>相当于excel表格,有很多行,每一行有很多列,最上面的一行是表头(描述每一列啥意思)
3.每个表里有很多条记录(record),每个记录也就是一行(row)
4.每一个行这里又有很多列(column).每一列也称为一个字段(field)
关系型数据库都是这一套结构=>(关系型数据库对于数据的格式要求是比较严格的) ~~反观 非关系数据库,数据存储往往是基于文档/键值对,格式就比较松散,要求不严格…….
“表”=>相当于excel表格,有很多行,每一行有很多列,最上面的一行是表头(描述每一列啥意思)
3.每个表里有很多条记录(record),每个记录也就是一行(row)
4.每一个行这里又有很多列(column).每一列也称为一个字段(field)
关系型数据库都是这一套结构=>(关系型数据库对于数据的格式要求是比较严格的) ~~反观 非关系数据库,数据存储往往是基于文档/键值对,格式就比较松散,要求不严格…….
[外链图片转存中…(img-kEqyNHD0-1693482219888)]