Skip to content

MySQL 介绍和安装

为什么需要数据库?

任何的软件系统都需要存放大量的数据,这些数据通常是非常复杂和庞大的:

  • 比如用户信息包括姓名、年龄、性别、地址、身份证号、出生日期等等;
  • 比如商品信息包括商品的名称、描述、价格(原价)、分类标签、商品图片等等;
  • 比如歌曲信息包括歌曲的名称、歌手、专辑、歌曲时长、歌词信息、封面图片等等;

那么这些信息不能直接存储到文件中吗?可以,但是文件系统有很多的缺点:

  • 很难以合适的方式组织数据(多张表之前的关系合理组织);
  • 并且对数据进行增删改查中的复杂操作(虽然一些简单确实可以),并且保证单操作的原子性;
  • 很难进行数据共享,比如一个数据库需要为多个程序服务,如何进行很好的数据共享;
  • 需要考虑如何进行数据的高效备份、迁移、恢复;
  • 等等...

数据库通俗来讲就是一个存储数据的仓库,数据库本质上就是一个软件、一个程序

常见的数据库有哪些?

通常我们将数据划分成两类:关系型数据库非关系型数据库

关系型数据库:MySQL、Oracle、DB2、SQL Server、Postgre SQL 等;

  • 关系型数据库通常我们会创建很多个二维数据表
  • 数据表之间相互关联起来,形成一对一、一对多、多对多等关系;
  • 之后可以利用 SQL 语句多张表中查询我们所需的数据;

非关系型数据库:MongoDB、Redis、Memcached、HBse 等;

  • 非关系型数据库的英文其实是 Not only SQL,也简称为 NoSQL
  • 相当而言非关系型数据库比较简单一些,存储数据也会更加自由(甚至我们可以直接将一个复杂的 json 对象直接塞入到数据 库中);
  • NoSQL 是基于 Key-Value 的对应关系,并且查询的过程中不需要经过 SQL 解析

如何在开发中选择他们呢?具体的选择会根据不同的项目进行综合的分析,我这里给一点点建议:

  • 目前在公司进行后端开发(Node、Java、Go 等),还是以关系型数据库为主;
  • 比较常用的用到非关系型数据库的,在爬取大量的数据进行存储时,会比较常见;

认识 MySQL

我们的课程是开发自己的后端项目,所以我们以关系型数据库 MySQL 作为主要内容。

MySQL 的介绍:

  • MySQL 原本是一个开源的数据库,原开发者为瑞典的 MySQL AB 公司;
  • 在 2008 年被 Sun 公司收购;在 2009 年,Sun 被 Oracle 收购;
  • 所以目前 MySQL 归属于 Oracle;

MySQL 是一个关系型数据库,其实本质上就是一款软件、一个程序:

  • 这个程序中管理着多个数据库;
  • 每个数据库中可以有多张表;
  • 每个表中可以有多条数据;

数据组织方式

下载 MySQL 软件

下载地址:https://dev.mysql.com/downloads/mysql/

根据自己的操作系统下载即可;

推荐大家直接下载安装版本,在安装过程中会配置一些环境变量;

  • Windows 推荐下载 MSI 的版本;
  • Mac 推荐下载 DMG 的版本;

这里我安装的是 MySQL 最新的版本:8.0.31(不再使用旧的 MySQL5.x 的版本)

Windows 安装过程

MySQL 的连接操作

sh
# 打开终端,查看MySQL的安装:
mysql --version

sh
# Mac添加环境变量
export PATH=$PATH:/usr/local/mysql/bin

终端连接数据库

我们如果想要操作数据,需要先和数据建立一个连接,最直接的方式就是通过终端来连接;

有两种方式来连接:

  • 两种方式的区别在于输入密码是直接输入,还是另起一行以密文的形式输入;
sh
# 方式一:
mysql -uroot -pCoderwhy888.
sh
# 方式二:
mysql -uroot -p
Enter password: your password

终端操作数据库 – 显示数据库

我们说过,一个数据库软件中,可以包含很多个数据库,如何查看数据库?

MySQL 默认的数据库:

  • infomation_schema:信息数据库,其中包括 MySQL 在维护的其他数据库、表、列、访问 权限等信息;
  • performance_schema:性能数据库,记录着 MySQL Server 数据库引擎在运行过程中的一 些资源消耗相关的信息;
  • mysql:用于存储数据库管理者的用户信息、权限信息以及一些日志信息等;
  • sys:相当于是一个简易版的 performance_schema,将性能数据库中的数据汇总成更容易 理解的形式;

终端操作数据库 – 创建数据库-表

在终端直接创建一个属于自己的新的数据库 coderhub(一般情况下一个新的项目会对应一个新的数据库)。

sh
create database coderhub;

使用我们创建的数据库 coderhub:

sh
use coderhub;

在数据中,创建一张表:

sh
create table user(
  name varchar(20),
  age int,
  height double
);
sh
# 插入数据
insert into user (name, age, height) values ('why', 18, 1.88);
insert into user (name, age, height) values ('kobe', 40, 1.98);

GUI 工具的介绍

我们会发现在终端操作数据库有很多不方便的地方:

  • 语句写出来没有高亮,并且不会有任何的提示;
  • 复杂的语句分成多行,格式看起来并不美观,很容易出现错误;
  • 终端中查看所有的数据库或者表非常的不直观和不方便;
  • 等等...

所以在开发中,我们可以借助于一些 GUI 工具来帮助我们连接上数据库,之后直接在 GUI 工具中操作就会非常方便。

常见的 MySQL 的 GUI 工具有很多,这里推荐几款:

  • Navicat:个人最喜欢的一款工作,但是是收费的(有免费的试用时间);
  • SQLYog:一款免费的 SQL 工具;
  • TablePlus:常用功能都可以使用,但是会多一些限制(比如只能开两个标签页);