经过上两节的洗礼,我们能够连接上服务器,并成功地进入与mysql交互的会话中了。那么现在就可以发起SQL语句,让服务器来执行它了!这听起来很酷吧?接下来,我们先从MySQL的体系以及组成方面谈起,在学习点语法方面的知识。

题外话:建议小伙伴们不要跳过这节。因为在学习语法前呢,明确MySQL的这些相关术语是大有裨益的,这将能起到自然过渡的作用(毕竟,从无到有总是一个循序渐进的过程)。

本文概览:

(一)MySQL的体系结构术语

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

(一)MySQL的体系结构术语


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

这是因为,MySQL采用的是“客户端/服务器”体系结构(这里隐式指出,从客户端连接到服务器的首要条件是网络)。还记得我们前面使用什么命令来安装mysql的吗?在那时就已经埋下伏笔了:

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

在这其中,有一个程序为MySQL服务器,另外一个程序为MySQL客户端。这里介绍一下它们的用途。

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

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

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

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

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

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

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

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


在创建数据库和表之前,先了解一下有关数据库的一些术语十分必要。提及数据库,我们就要来确定一下MySQL的立场了。当前的数据库有几大分类,主要分为关系型数据库(RDBMS)和非关系型数据库(NoSQL)。

① 定位

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

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

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

③ R(Relational):一字道出MySQL数据库的性质。什么是关系?关系是通过将两个以上的表中的共同元素,将这些表 的信息紧密联系起来,形成一个更大的整体(表)。这样子就将散落在各处的数据规整为一个更大的集合,有点解决了“信息孤岛”的意味。虽然说在设计数据库时,这些“信息孤岛”是我们有意为之的,其目的是为了方便日后提高的一些操作性能。

② 基础知识

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

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

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

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

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

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

从零开始学MySQL(三)的更多相关文章

  1. 从零开始学安全(三十五)●mysql 盲注手工自定义python脚本

    import requests import string #mysql 手动注入 通用脚本 适用盲注 可以跟具自己的需求更改 def home(): url="url" list ...

  2. 从零开始学MySQL(二)

    鉴于上节篇幅以安装为主,因此对于调用mysql所需要使用的“命令”只是略微提及.随之而来就会带给读者诸多不解了,因为你会思考,这串长长的字符到底有什么特殊的含义呢?聪明的你可能早就抱着好奇心去“摆渡” ...

  3. 从零开始学MySQL(四)

    上节连接:https://www.cnblogs.com/RajXie/p/10880809.html 上节说到,在创建表的同时,需要给出列的定义.列的定义可展开如下: 列名 列的数据类型 列的一些其 ...

  4. 从零开始学MySQL(一)

    如果您浏览过许多IT类的招聘职位,那么掌握数据库技能的重要性便不言自明了.因JAVA常常与MySQL所挂钩,因此兴起了写博客记载学习的念头,盼与君共勉.然,在进行MySQL语法的学习之前,我们无不面临 ...

  5. 从零开始学安全(三十三)●Ununtu16 LMAP 环境搭建

    sudo apt-get update # 获取最新资源包 sudo apt-get upgrade # 本机软件全部更新 sudo apt-get dist-upgrade # 本机系统软件更新 安 ...

  6. 从零开始学安全(三十一)●kali 输入 msfconsole 启动报错

    解决方法: 实际上是因为没安装就开启了msf,用下面三个命令就解决了 sudo apt-get updatesudo apt-get install metasploit-frameworkmsfco ...

  7. 从零开始学安全(三十)●使用sqlmap对网站一步步渗透

    常规注入步骤第一步注入点-u "url" 判断是否是注入点 有就判断用户的权限第二步获取数据库 所有的 -u "url" --dbs第三步 查看应用程序所有数据 ...

  8. 从零开始学安全(三)●黑客常用的windows端口

    端口可选1-65536 1-1024 预保留端口 留给windows系统服务的 下面是常见的端口对应的服务 1 TCP Port Service Multiplexer 传输控制协议端口服务多路开关选 ...

  9. 从零开始学JavaScript三(变量)

    一.变量 ECMAscript变量是松散型变量,所谓松散型变量,就是变量名称可以保存任何类型的数据,每个变量仅仅是一个用于保存值的占位符. 定义变量时要使用var操作符 如: var message; ...

随机推荐

  1. MacPorts镜像

    /opt/local/etc/macports/macports.conf: rsync_server pek.cn.rsync.macports.org rsync_dir macports/rel ...

  2. xgboost原理与实战

    目录 xgboost原理 xgboost和gbdt的区别 xgboost安装 实战 xgboost原理 xgboost是一个提升模型,即训练多个分类器,然后将这些分类器串联起来,达到最终的预测效果.每 ...

  3. your current language level is ecmascript 5

    https://stackoverflow.com/questions/32995066/how-can-i-configure-resharpers-language-level-for-ecmas ...

  4. 通过daemon.json配置docker 2375 API端口,配置私有http仓库

    编辑daemon.json vi /etc/docker/daemon.json 配置如下内容即可 { "hosts":[ "tcp://0.0.0.0:2375&quo ...

  5. mesh之孔洞检测

    mesh之孔洞检测 图1 检测孔洞点 图2 检测孔洞点 图3 检测孔洞点 图4 细节

  6. leetcode241 为运算表达式设计优先级

    class Solution(object): def diffWaysToCompute(self, input): """ :type input: str :rty ...

  7. mxml 嵌入as代码出错,缺少 CDATA

    如果<mx:Script> 中有大于小于符号,代码必须包含在<![CDATA[ 之中,否则会报错

  8. svn版本合并

    假如你的项目(这里指的是手机客户端项目)的某个版本(例如1.0版本)已经完成开发.测试并已经上线了,接下来接到新的需求,新需求的开发需要修改多个文件中的代码,当需求已经开始开发一段时间的时候,突然接到 ...

  9. eetCode刷题-递归篇

    递归是算法学习中很基本也很常用的一种方法,但是对于初学者来说比较难以理解(PS:难点在于不断调用自身,产生多个返回值,理不清其返回值的具体顺序,以及最终的返回值到底是哪一个?).因此,本文将选择Lee ...

  10. Linux系统基本操作

      学习目标: 通过本实验掌握Linux的系统安装.磁盘分区.文件管理.IP地址配置.SSH远程管理.WinSCP文件传输.chmod文件权限管理.tar及gzip/bzip2压缩工具的使用,以及关机 ...