目录
💡推荐
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击跳转到网站】
数据库介绍
什么是数据库
数据库,其实是一类软件 ,要做的事情,也是对数据进行高效的组织而且实现数据库软件的过程中,内部就会用到很多的数据结构的东西
数据库分类
数据库大体可以分为 关系型数据库 和 非关系型数据库
**1.**关系型数据库(RDBMS):
是指采用了关系模型来组织数据的数据库。 简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织,每一行都是一条数据,每一行都包含很多列,每个列还会有不同的类型
数据库中的所有数据,列数/类型/含义都要能够匹配
基于标准的SQL,只是内部一些实现有区别。常用的关系型数据库如:
(1)Oracle:甲骨文产品,适合大型项目,适用于做复杂的业务逻辑,如ERP、OA等企业信息系统。收费
(2) MySQL:属于甲骨文,不适合做复杂的业务。开源免费
(3)SQL Server:微软的产品,安装部署在windows server上,适用于中大型项目。收费
(4)SQLite:非常轻量级的数据库,整个只有1M左右大小的可执行程序,这个程序特别适合于一些配置比较低的设备进行使用,尤其是移动设备(手机)
2.非关系型数据库:
对于数据的格式上的要求比较松散 ,往往都是按照键值对/文档的形式来进行组织的,性能较关系型数据库更高,而且更适合在分布式的场景中使用
(了解)不规定基于SQL实现。现在更多是指NoSQL数据库,如:
(1)基于键值对 (Key-Value):如 memcached、redis
(2)基于文档 型:如 mongodb
(3)基于列族:如 Hbase
(4)基于图型:如 neo4j
关系型数据库与非关系型数据库的 区别:
|--------|---------------------|--------------------------------|
| | 关系型数据库 | 非关系型数据库 |
| 使用SQL | 是 | 不强制要求,一般不基于SQL实现 |
| 事务支持 | 支持 | 不支持 |
| 复杂操作 | 支持 | 不支持 |
| 海量读写操作 | 效率低 | 效率高 |
| 基本结构 | 基于表和列,结构固定 | 灵活性比较高 |
| 使用场景 | 业务方面的OLTP系统(联机事务处理) | 用于数据的缓存、或基于统计分析的OLAP系统(联机分析处理) |
MySQL要学啥
1.SQL 语句的使用(编程语言)
SQL本质上是一个"编程语言",专门用来操作数据库的编程语言(和 Java,C++之类的画风上差别非常大)
SQL是各个数据库之间通用的,各种数据库使用的语言都是 SQL(结构化的查询语言)
熟悉了 SOL 各种数据库都可以很容易上手了
2.MySQL 内部的一些基础原理(常见面试题)
只是根据面试题,见招拆招的介绍一些原理,应付面试有余,但是不够系统
💡 3.针对数据库进行编程
通过 Java 来操作数据库(这个过程中也是会用到 SQL)
MySQL初步认识
MySQL 是一个"客户端-服务器"结构的程序
(1)客户端(client)主动发起请求的一方
(2)服务器(server)被动接受请求的一方(本质上就是一台电脑,只是配置更高,性能更强)
(3)请求(request)客户端主动给服务器发的数据
(4)响应(response)服务器给客户端返回的数据
几个问题:
1.数据是在客户端这边存储的,还是服务器储的?
答:服务器.客户端仅仅是和用户之间交互的界面;服务器涉及到的各种数据都是在服务器这边存储的;用户想要增删改查某个数据,此时就会从客户端发起一个网络请求到服务器上,MySQL服务器就会解析这个请求,获取到用户的意图,执行对于的逻辑,完成实际的增删改查,并且把结果通过网络反馈给客户端,最值客户端再显示到界面上
2.服务器能否知道客户端啥时候给他发请求?(服务器的特点1:7*24h运行)
**答:**不能! 服务器是被动的一方
所以, 一个专业的服务器,往往要7*24 小时运行,来随时应付可能到达的客户端请求,但是实际上服务器并不能真的做到007这么稳定的,可能会出现异常情况导致服务中断,或者更新服务器版本,被迫停机重启. 这样就需要分布式 来做高可用的支持 从而解决上述问题(也就是多搞几个机器),也叫做冗余:复制关键的组件和数据,以确保在出现故障时系统仍然可用
3.服务器是只给一个客户端提供服务嘛? 还是要给多个客户端提供服务?(服务器的特点2)
**答:**多个客户端,一般情况下都是一个服务器对应多个客户端,实际上也是有服务器给某个客户端提供专属服务的
SQL分类
1.DDL 数据定义语言,用来维护存储数据的结构
代表指令: create, drop, alter
2.DML 数据操纵语言,用来对数据进行操作代表指令: insert,delete,update
DML中又单独分了一个DQL,数据查询语言,代表指令: select
3.DCL数据控制语言,主要负责权限管理和事务
代表指令: grant,revoke,commit
以上SQL我们主要会在后面学习DDL和DML的操作
拓展:计算机的组成部分
CPU(中央处理器),主板(一块大的电路板,cpu 要装在上面),内存,硬盘(存储数据的),电源,散热器,机箱,显卡(GPU 专门负责图形渲染相关的计算的(最贵的)),显示器,键盘 /鼠标
内存 和 硬盘的概念辨析
简单理解:
内存就是电脑上的16GB/32G(其中部分空间系统无法使用,实际能用的是 15.4)
硬盘就是电脑上的C盘,D盘,E盘,硬盘有机械硬盘,固态硬盘,固态硬盘的速度比机械硬盘能快10倍,即使如此也远远比不上内存的速度
|---------|---------|---------------------|----------|-----------------|
| 内存(RAM) | 存储空间比较小 | 访问速度比较快 | 成本更高(贵) | 易失的(断点上面的数据会丢失) |
| 硬盘(外存) | 存储空间比较大 | 访问速度比较慢(速度能差出好几个量级) | 成本更低(便宜) | 持久的(相对于内存而言) |
硬盘(外存)
外存是一个"统称",硬盘是其中的典型代表,U盘,软盘,光盘...都属于外存,U盘非常类似于固态硬盘, 但是内部工艺是不同的, 存储空间/读写速度 远远低于 固态硬盘
显存、CPU 和GPU(显卡)
(1)CPU 和中央处理器:进行各种逻辑判断和算术运算,用的是:通用的运算芯片
(2)显卡 (GPU):专用计算芯片,专门用来计算图形图像
(3)显存:就可以理解成专门给显卡使用的内存,平时的内存都是给 CPU 使用的.为了不冲突一般会在显卡上单独焊上一些内存单元,专门给显卡使用;也有的显卡自己不带显存的,就需要从 cpu 这里分一些内存过来用了,这种通信方式,需要占据更多的主板的总线通信带宽,性能会更低一些
问:MySQL 数据库, 服务器这边要存储数据,存储在哪里?内存?硬盘?
答: MySQL 使用硬盘存储数据(1)空间大(2)持久化存储
万一当前要管理的数据特别多,硬盘都装不下了~~那就可以引入更多的机器每个机器存储整个数据集合中的一部分(分布式),在分布式系统中,为了能够更方便的提作数据,也延伸出了一系列的技术体系 =>大数据
Redis 则是把数据存储在内存中~~(特殊),其他数据库基本都是存储在硬盘