从零开始学MySQL(二) 了解MySQL的体系、定位以及数据库基础知识


经过上节的洗礼,我们成功安装了mysql,且通过它连接上服务器并进入交互会话。但在学习语法之前,了解MySQL的体系及其定位、或是一些有关数据库的术语十分必要,这有助于我们打好学习基础。

本文概览:

(一)MySQL的体系结构术语

(二)MySQL数据库的定位和基础知识

(一)MySQL的体系结构术语


 当我们在使用MySQL时,会用到“至少”两个程序

为什么在前面,我们要使用如下命令来安装mysql呢?

sudo apt-get install -y mysql-server mysql-client

这是因为MySQL采用的是“客户端/服务器”体系结构(这里隐式指出,从客户端连接到服务器的首要条件是网络)。

 

其中,一个程序为MySQL服务器,另一个程序为MySQL客户端。下面给将粗略介绍一下它们的用途。

① MySQL服务器(mysql-server):我们通常称它为mysqld。mysqld运行在存放数据库文件的那台machine上;它主要负责监听网络上的客户端请求,根据这些请求去访问数据库文件里面的内容,然后再将获取的内容提供给客户端。

② MySQL客户端(mysql-client):我们通常称它为mysql。mysql可以运行在服务器上,也可以是任意一台将连接参数设为该服务器IP的machine;它主要负责连接到服务器,并向服务器发起查询,以获取查询结果。

在这里需要明确一点,即mysql想要从数据库中拿到什么信息,需要让mysqld去和数据库沟通,而不是越俎代庖。从本质上讲,数据库其实是本地文件,mysqld是负责从本地文件中读取或存入数据的程序而已。

② 别有用途的其他客户端程序

犀利的小伙伴大都应该注意到了,前面用了“至少”一词。下面就简述两个主要用于管理的客户端程序。

① mysqldump:主要用来把表的内容导出到文件里。为什么要导出?备份需要或有意将查询结果另存于他处。

② mysqladmin:主要用来检查数据库服务器的工作状态,以及执行一些数据库管理相关的任务,如通知服务器管关闭。

(二)MySQL数据库定位和基础知识


一旦提及数据库,我们就必须先确定一下MySQL的立场——这是因为当前的数据库有几大分类,主要分为关系型数据库(RDBMS)和非关系型数据库(NoSQL)。

① MySQL数据库的定位

MySQL被划分为RDBMS,字面中的含义即代表了它的用途。这里将它拆分为三部分,即RDBMS → R、DB、MS来解读一下

① DB(DataBase):说白了,“数据库”等同于我们现实中的“仓库”,但它不是用来囤货的,而是用来 “屯数据屯信息” 的。

② MS(Management System):什么是管理?无非就是对记录进行“检索、插入、修改、删除”。因此,管理系统是建立在mysql的一个上层应用。通过它,我们可以对多个数据库做到心中有数。

③ R(Relational):一字道出MySQL数据库的“特长”。什么是关系?所谓的关系指的是表与表之间以“共同元素”形成的联系,而MySQL恰好能利用这种关系,将小表拓展成大表。形同通过关系,将散落在各处的数据加以梳理、规整为一个更大的集合。虽然说在设计数据库时,将“数据散落在各处”实则是我们有意为之,目的是提升日后一些操作性能/效率。

② 基础知识

有人的地方就有江湖,有“库”的地方就有“表”。这里有一条潜在的关系链:数据库(database)>表(table)>列(column)。其中 > 符号表示包含之意。

① 数据库:存储分类数据的仓库。为什么说分类呢?因为数据库中的表都是基于某一个应用的。

② 表:数据库里的数据集。什么是数据集,基于某个特定目的而搜寻的数据集合。

③ 列:数据集中某方面单一信息。数据集(表)是先由一个或多个列构成的,只有存储了数据的时候才有行这一说法。每个行均包含了表中所有列的信息,因此又可称为一个“记录”。

从上面可了解到,数据库和表属于容器层面的,列属于细节层面的。但在使用MySQL的时候,我们更多的则是对记录进行处理,比如检索、修改等等。

 到此,这一节就结束了。下节我们开始学习语法相关知识!再会。