经过上两节的洗礼,我们能够连接上服务器,并成功地进入与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. Watir单元库

    http://www.cnblogs.com/Javame/p/4045229.html test: #require 'net/http' #require 'uri' #url = URI.par ...

  2. forms authentication原理

    细说ASP.NET Forms身份认证 asp.net 登陆验证 Form表单验证的3种方式 Understanding and Implementing ASP.NET Custom Forms A ...

  3. Oracle Rac 测试

      #还是使用之前的脚步来进行测试 #Author : Kconnie Pong Oracle@PONGDB:~> more load_balance.sh #!/bin/bash ..} do ...

  4. c# 单元测试 ,对静态方法(static)和私有方法(private) 进行单元测试

    利用反射: /// <summary> /// 调用静态方法 /// </summary>akf /// <param name="t">类全名 ...

  5. LeetCode 516——最长回文子序列

    1. 题目 2. 解答 与最长回文子串类似,我们可以用动态规划来求解这个问题,只不过这里的子序列可以不连续.我们定义状态 state[i][j] 表示子串 s[i, j] 的最长回文子序列长度,那么状 ...

  6. BeanDefinition 实例

    BeanDefinition BeanDefinition /** * BeanDefinition 用于描述一个 bean 实例,包括属性值.构造参数和补充信息. */ public interfa ...

  7. python接口测试之mock(一)

    在现在的软件开发过程中,特别是app的部分,需要的很多数据以及内容,都是来自server端的API,但是不能保证在客户端开发的时候,api在 server端已经开发完成,专门等着前端来调用,理想的情况 ...

  8. 阶段3 2.Spring_03.Spring的 IOC 和 DI_3 spring基于XML的IOC环境搭建和入门

    创建新项目 修改为jar包的方式 把上一个工程内的代码 java下的com复制过来 由于配置文件没有,所以一运行就会报错 factory文件夹整个删除 dao的实现类 这里删除 测试类保留这两行代码 ...

  9. jquery的then方法

    绿地项目中的代码: $.ajax({ url: `https://openapi.italent.cn/OAuth/Token`, type: 'post', data: `tenant_id=${t ...

  10. Python日期存入elasticsearch的坑

    今天在消费kafka数据到elasticsearch(以下简称es)中的时候遇到一个问题,也是一个坑,折腾了半天,后来发现得来全不费工夫,全是白忙活啊!!! 问题如下: kafka数据中有一个字段是时 ...