数据库介绍
什么是数据库
存储数据用文件就可以了,为什么还要数据库?
文件保存数据有以下几个缺点:
- 文件的安全性问题
- 文件不利于数据查询和管理
- 文件不利于存储海量数据
- 文件在程序中控制不方便
内存与外存
外存是一个统称,包括硬盘、U盘、光盘…
CPU(中央处理器),进行各种逻辑判断和算术运算,是通用的,也可以计算图形图像
GPU(显卡),专用计算芯片,专门用来计算图形图像,所以在某些方面速度比GPU快很多
平时的内存都是给CPU使用的,为了不冲突,一般会在显卡上单独焊上一些内存单元,专门给显卡使用,这就是显存。有的显卡自己不带显存,就需要从CPU这里分一些内存过来使用,就需要占据更多的主板的总线通信带宽,性能会低一点
内存(RAM) | 硬盘 |
---|---|
成本更高(贵) | 成本更低(便宜) |
易失 | 相对持久 |
访问速度较快 | 访问速度较慢 |
存储空间较小 | 存储空间较大 |
手机也是计算机,也有内存和硬盘,商家宣传的"128 G""256 G"内存其实指的是硬盘,而运存指的是内存
MySQL使用硬盘存储数据
1)空间大
2)持久化存储
为了解决一开始的问题, 设计出了更加利于管理数据的软件——数据库,它能更有效地管理数据。数据库可以提供远程服务,即通过远程连接来使用数据库,因此也称为数据库服务器。
数据库分类
数据库大体可以分为 关系型数据库 和 非关系型数据库
关系型数据库(RDBMS):
是指采用了关系模型来组织数据的数据库。关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。基于标准的SQL,不同关系型数据库只是内部一些实现有区别。
常用的关系型数据库如:
- Oracle:甲骨文产品,适合大型项目,适用于做复杂的业务逻辑,如ERP、OA等企业信息系
统。收费。 - MySQL:属于甲骨文,不适合做复杂的业务。开源免费。
- SQL Server:微软的产品,安装部署在windows server上,适用于中大型项目。收费。
- SQLite: 非常轻量级的数据库,适合配置比较低的设备使用,尤其是移动设备(手机)
非关系型数据库:
不规定基于SQL实现。现在更多是指NoSQL数据库,如:
5. 基于键值对(Key-Value):如 memcached、redis
6. 基于文档型:如 mongodb
7. 基于列族:如 hbase
8. 基于图型:如 neo4j
关系型数据库与非关系型数据库的区别:
关系型数据库 | 非关系型数据库 | |
---|---|---|
使用SQL | 是 | 不强制要求,一般不基于SQL实现 |
事务支持 | 支持 | 不支持 |
复杂操作 | 支持 | 不支持 |
海量读写操作 | 效率低 | 效率高 |
基本结构 | 基于表和列,结构固定 | 灵活性比较高 |
对于数据格式要求 | 比较严格 | 比较松散 |
使用场景 | 业务方面的OLTP系统 | 用于数据的缓存、或基于统计分析的OLAP系统 |
注:OLTP(On-Line Transaction Processing)是指联机事务处理,OLAP(On-Line Analytical
Processing)是指联机分析处理
客户端连接MySQL服务器
MySQL是一个"客户端-服务器"结构的程序
- 客户端(client) 主动发起请求的一方,是和用户交互的界面
- 服务器(server) 被动接受请求的一方,存储和管理涉及到的各种数据
- 请求(request) 客户端主动给服务器发的数据
- 响应(response) 服务器给客户端返回的数据
客户端 和 服务器 是两个程序
这两个程序可以安装在一个机器上,也可以安装在不同机器上,他们之间通过网络进行通信
在应用中找,这三个是MySQL客户端
可以在服务里找到MySQL服务器
用户想要在MySQL增删查改数据,此时客户端就会发起一个网络请求到服务器上,MySQL服务器就会解析这个请求,获取用户的意图,执行对应的逻辑,完成实际的增删查改,并且把结果通过网络反馈给客户端,最终客户端再显示到界面上
服务器无法知道客户端什么时候给他发请求,所以一个专业的服务器,往往要一直运行,但是有时会出现异常情况,导致服务中断,或者更新服务器版本,被迫停机重启.就可以用分布式解决,也就是多搞几个机器,某个服务器挂了,其他服务器仍然能继续工作
大部分服务器都是可以给多个客户端提供服务的
MySQL组织数据的形式:
服务器->数据库->数据表->行->列
谈到"数据库"这个词
有时指的是"学科",有时指的是"软件",这里指的是"数据集合"
MySQL默认只允许在服务器本机 使用 root 用户登录,要开启 root 用户的远程登录,在MySQL服务器本机执行:mysql -u root -p
要求输入密码,没有设置密码则直接回车
进入MySQL命令行以后,可以看到 mysql>