目录
1. 数据库的介绍
1.1 什么是数据库
1.2 数据库和数据结构之间关系
2. 数据库分类
2.1 关系型数据库(RDBMS)
2.2 非关系型数据库
2.3 区别
一些行内名词简单解释:
3. 关于mysql 主要学什么
4. MySQL中重要的概念
4.1 概念
4.2 MySQL服务器/客户端介绍
4.3 客户端与服务器结构示意图
4.4 了解硬盘
4.5 数据库服务器如何管理数据
5. SQL分类
1. 数据库的介绍
1.1 什么是数据库
存储数据用文件就可以了,为什么还要弄个数据库?
文件保存数据有以下几个缺点:
- 文件的安全性问题
- 文件不利于数据查询和管理
- 文件不利于存储海量数据
- 文件在程序中控制不方便
数据库存储介质:
- 磁盘
- 内存
为了解决上述问题,专家们设计出更加利于管理数据的软件 ——— 数据库,它能更有效的管理数据。
数据库可以提供远程服务,即通过远程连接来使用数据库,因此也称为数据库服务器。
1.2 数据库和数据结构之间关系
数据库是一个“广义的概念”:
- 表示一门学科,研究的是如何设计实现一个数据库(数据库软件背后的思想方法,设计)
- 表示一类软件,管理数据的软件;
- 表示某一个具体的数据库软件;
- 表示部署了某个数据库软件的主机(电脑)
- 目前要学习的数据库,是某一个具体的数据库软件,这个软件就是用来组织/保存/管理/数据的,组织这些数据也是为了后续进行增删改查(CRUD)。具体的数据库被实现的过程中,也应用了很多的数据结构。
- 数据结构,是一门学科,研究数据如何组织的。对于少量的数据,不需要组织,如果是大量的数据,就要好好组织起来,以便于后续进行增删改查。抽象的学科。
2. 数据库分类
数据库大体可以分为 关系型数据库 和 非关系型数据库
2.1 关系型数据库(RDBMS)
是指采用了关系模型来组织数据的数据库。 简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。
基于标准的SQL实现的(SQL语句一种编程语言),只是内部一些实现有区别。常用的关系型数据库软件如:
- Oracle 数据库圈子里的带头大哥!!! 甲骨文公司产品,适合大型项目,适用于做复杂的业务逻辑,如ERP、OA等企业信息系统。也适用于对于数据安全要求极高,以及不在意成本的场景下,例如:银行 最好的——收费贵
- MySQL 当前使用最广泛的数据库。后期被甲骨文收购了。主流互联网公司都在用MySQL 用的最多——开源免费
- SQL Server 微软的产品,很好的数据库,安装部署在Windows server上,适用于中大型项目。很多学校数据库课就是用这个。 好用不火——早些年捆绑销售
- SQLite 轻量级数据库,整个程序就是一个exe 可执行文件,体积大概就是 1M 运行时吃的内存啥的也都不高。正是因为这个东西轻量,经常会放到一些"小的"嵌入式系统上使用,最典型的就是手机(安卓系统内置了sqlite)
这些数据库大同小异,90%以上都是共通的。
上面这些数据库的统称为关系型数据库,关系数据库对于数据库中的数据的格式,要求比较严格。
即关系型数据库,可以认为是比较传统的数据库,使用“表”这样的结构来组织数据的。与excel表相似,有很多行很多列,每条数据都是一个行(一个记录),一行里面有很多列(一个字段),每一行的列数与列的含义都得匹配。(下面有详细介绍)
2.2 非关系型数据库
不规定基于SQL实现。现在更多是指NoSQL数据库,如:
- 基于键值对(Key-Value):如 Memcached、redis
- 基于文档型:如 Mongodb
- 基于列族:如 Hbase
- 基于图型:如 Neo4j
非关系型数据库比较灵活,会使用“文档”/“键值对”这样的结构来组织数据。
代表的软件:redis,MongoDB,HBase,功能上相比于关系性数据库要少一些,但是性能更高,同时更适合当下大数据分布式这样的时代背景。
2.3 区别
关系型数据库 | 非关系型数据库 | |
使用SQL | 是 | 不强制要求,一般不基于SQL实现 |
事务支持 | 支持 | 不支持 |
复杂操作 | 支持 | 不支持 |
海量读写操作 | 效率低 | 效率高 |
基本结构 | 基于表和列,结构固定 | 灵活性比较高 |
使用场景 | 业务方面的OLTP系统 | 用于数据的缓存、或基于统计分析的OLAP系统 |
注:OLTP(On-Line Transaction Processing)是指联机事务处理,OLAP(On-Line AnalyticalProcessing)是指联机分析处理。
一些行内名词简单解释:
嵌入式:
- 生活中有很多设备也是计算机。例如冰箱,洗衣机,空调,投影仪,电视,这些设备上也搭载了计算机,
- 这样的计算机只需要完成一些特功能就行了,不需要啥太高的配置。所以这样的开发就是嵌入式开发,这样的设备就是嵌入式设备。
大数据:
- 没有规定数据多大的数据是大数据,如果数据一个机器装不下了,此时就需要使用多个机器来装,此时这样的数据就是“大数据”。
- 引入了多台机器,相互配合功能存储和管理这样的一份数据,此时就称为“分布式”系统。分布式系统中,机器之间需要通过网络进行通信的。
- 大数据与分布式是一体两面,描述的同一件事,只不过是不同角度,一个是从数据角度,一个是从机器角度。
云计算:
- 云?就是服务器!!! 买一个服务器,服务器的配置可能比你电脑配置高很多,可以借助服务器帮忙进行计算。
- 例如:像现在有的厂商"云游戏",但是最大的问题是网络延迟。
微服务:
- 在分布式的基础上(分布式就是使用多个机器共同管理一组数据),当我们在分布式背景下,引入的机器太多了,此时就需要对机器分分类,分类分的越多越细,整体的结构就更复杂了,单个机器干的事情就更少了,更单一了(称为叫做微服务)
- 相当于是 分布式系统 演化过程中的一个阶段。网络评价堆微服务褒贬不一
3. 关于mysql 主要学什么
1、SQL语句,是一种编程语言
- sql是编程语言,sql server,mysql,oracle 是软件
- sql这个语言是运行在这些数据库软件上的(就像java运行在jvm上)
- 通过SQL来完成对数据库的增删改查;在不同的数据库软件,可能对于sql的语法支持的略有差异,但整体都是一样的。
2、数据库背后的一些典型原理(面试题)
3、通过Java代码来操作数据库(MySQL) — 至关重要
- 在工作中,绝大多数针对数据库的操作,都是通过代码来自动完成的。
- 我们学习mysql主要是使用命令行界面来操作的,市面上也存在很多的图形化程序。本质上都是在操作SQL
- 因为公司中有些环境,只能用命令行操作。
4. MySQL中重要的概念
4.1 概念
MySQL 这个数据库软件,是一个“客户端 - 服务器”结构的程序。
- 客户端(Client):主动发起的
- 服务器(Server):被动接受的
- 客户端与服务器通过网络进行通信的。
例如:我去饭馆吃饭。
- 我,就是客户端;饭馆,就是服务器,我和饭馆之间发生了交互,
- 我是主动发起交互的这一方,因此我叫做客户端,餐馆是被动接受交互的这一方,因此餐馆就是服务器。
客户端/服务器的定义,只是根据主动被动来确定的,
- 例如某个程序,场景1中可能是主动的,在场景2中可能是被动的,此时这个程序既是客户端也是服务端
请求(Request) : 客户端给服务器发的数据,就是请求。
响应(Response):服务器返回给客户端的数据,就是响应
4.2 MySQL服务器/客户端介绍
在安装的mysql的时候,同时安装了 mysql 的服务器和 mysql 的客户端
mysql的客户端和服务器通过网络进行通信,客户端和服务器可以在同一个主机上(现在学习怎么使用mysql的情况)也可以在不同的主机上(以后工作中基本就是这个情况)
服务器:
- 由于服务器是被动的,服务器不知道什么时候客户端会发来请求,所以对于一般的服务器程序来说,是要持续运行的。7*24小时 一天工作24小时,一周工作7天, 007(全年无休)
- 停电断网,这些都有可能会对服务器的稳定性造成影响,从而造成崩溃。一般大的互联网公司都会从技术上来解决上述问题,保证服务的稳定性是非常高的,一年之内不可用的时间不会超过5min
- 一个服务器,同一时刻,可能要给多个客户提供服务。例如一个餐馆,不是专属给我开门的,而是给很多人提供“吃饭”服务的。当然也不绝对,有的服务器是专属服务器。例如:分布式系统中服务器是给少数一两个客户端提供服务的。餐馆也有专属餐馆。
客户端:
- 没有客户端也没关系,直接在cmd里输入mysql命令启动也行,客户端本体是这个mysql命令。开始菜单里只不过是这个一串命令的快捷方式。
- 当然我们也可以使用第三方软件提供的mysql客户端(不仅仅是可以搭配 mysql 也可以搭配别的数据库)
- 但要保证mysql服务器一定是安装的,服务器才是真正的本体,真正存储数据的部分。客户端这边用哪个都无所谓。
- 这里我们为什么要使用命令行客户端,为啥不使用图形化界面的客户端?
workbench, navicat, datagrip <=> 图形化客户端在工作中,不一定能用得了。- 而命令行客户端是100%能用的!!!
4.3 客户端与服务器结构示意图
mysql自带的客户端是一个命令行程序。用户在客户端中输入的任何命令最终都会换成网络上的数据传输给服务器。
数据是存储到客户端上还是服务器上的呢?
- 数据是存储在服务器上被保存和管理的。服务器是mysql的本体,重要性和复杂程度,远远超过客户端。
- 客户端是非常简单的,也有很多种形态;第三方的客户端,比如 navict,自己写代码也能实现客户端,都是通过网络交互。
mysql具体是使用啥样的硬件设备来保存的呢?
mysql以及其他的关系型数据库,都是使用 硬盘 来保存数据的
4.4 了解硬盘
计算机五大组成部分:控制器、运算器、存储器、输入设备、输出设备
![]()
祖师爷:冯诺·依曼 —— 计算机之父
祖师爷:图灵
内存与外存(硬盘)区别,对于程序设计,有深远影响的。都是相对而言的。
- 内存访问速度快,外存访问速度慢。 速度能差3~4个数量级 几千倍
- 内存的空间比较小,外存的空间更大。 例如我的电脑,内存16GB ,硬盘 1T
- 内存成本高,外存成本便宜。
- 内存的数据,断电后会丢失;外存的数据,断电后数据还在。
- 内存存储的数据,是“易失”的
- 外存存储的数据,是“持久”的
- “持久化”这个词,意思就是把数据写到硬盘上。
- 数据库存储的数据,希望存储的数据量比较大,持久化存储。
- 也有少数数据库是使用内存的,追求速度的最大化,例如:redis
我们常说手机上内存多少GB,例如256GB,实际上说的是硬盘,手机真正的内存,是"运存"
计算机单位:bit 一个二进制位
8bit = 1byte
1024byte = 1KB
1024KB => 1MB
1024MB => 1GB
1024GB => 1TB
1024TB => 1PB
4.5 数据库服务器如何管理数据
数据库服务器具体如何在硬盘上组织数据的呢?
![]()
- mysql服务器为了更好地组织数据,把上面要存的数据逻辑上划分出了多个数据集合,这些数据集合也称为“数据库”
- 每个数据库里,使用“表”这样的结构来组织数据。
- 每个表里有很多条记录(record),每个记录也就是一行(row).
- 每一行这里又得有很多列(colimn),每个列也成为一个字段(field)
关系型数据库都是这一套结构,关系型数据库对于数据的格式要求是比较严格的反观,非关系型数据库,数据存储往往是基于文档/键值对格式就比较松散,要求不严格。
“表”相当于excel表,有很多行很多列,每一条数据就是一个行(一个记录),一行有很多列(一个字段),每一行的列数与列的含义都得匹配,最上面一行是表头(描述每一个列是啥意思)
注意,数据库这个词,可能会表达多种含义,结合上下文来理解
- 表示研究数据库这个软件如何设计的学科
- 表示管理数据的这类软件
- 某个具体的管理数据的软件
- 安装了某个数据库软件的机器
- 数据库服务器软件里面管理的一个数据集合
- ......
5. SQL分类
DDL数据定义语言,用来维护存储数据的结构
- 代表指令: create, drop, alter
DML数据操纵语言,用来对数据进行操作
- 代表指令: insert,delete,update
- DML中又单独分了一个DQL,数据查询语言,代表指令: select
DCL数据控制语言,主要负责权限管理和事务
- 代表指令: grant,revoke,commit
以上SQL我们主要会在后面学习DDL和DML的操作。
好啦Y(^o^)Y,本节内容到此就结束了。下一篇内容一定会火速更新!!!
后续还会持续更新MySQL方面的内容,还请大家多多关注本博主,第一时间获取新鲜的知识。
如果觉得文章不错,别忘了一键三连哟!