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 软件
根据自己的操作系统下载即可;
推荐大家直接下载安装版本,在安装过程中会配置一些环境变量;
- 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:常用功能都可以使用,但是会多一些限制(比如只能开两个标签页);