[MySQL光速入门]001 让MySQL跑起来

1,623 阅读5分钟

数据库简介

什么是数据库

官方定义:

数据库是将数据按照一定的数据模型组织, 描述和存储, 具有较小的冗余, 较高数据独立性和易扩展性, 并作为各种用户共享的数据集合

不过, 我更喜欢我自己的理解:

数据库, 顾名思义, 就是数据的仓库

其实相关概念还有很多, 举个栗子吧...

假设你有一个工厂, 用来生产电视机, 那么肯定也需要一个仓库来存储电视, 还需要招聘一个管理仓储的王大爷...

那么问题来了, 你为什么需要一个仓库?

  1. 存放电视机, 方便统计和管理(数据管理)
  2. 找个王大爷, 防止电视失窃(数据持久化)

这里的电视机就是DATA(数据)

存放电视机的仓库就是DB(数据库)

这里的王大爷就是DBA(数据库管理员)

你问:"老王, 咱们今天有多少电视机入库?"

王大爷说: "稍等, 老总, 我用管理软件查一下..."

这里的管理软件就是DBMS(数据库管理系统), 常见DMS: MySQL, Oracle, SQL server

有下面一个公式:

DBS = DBA 使用 DBMS 管理 DB

数据库系统 就是 数据库管理员 使用数据库管理系统 来管理 数据库

什么是数据持久化

简单来说, 就是想办法不让数据丢失.

可能你会好奇, 什么数据存在计算机里, 还会丢失?

答案是: 可能会, 也可能不会...主要看你把它存到了哪里

这里需要引出两个概念内存,硬盘

内存的特点, 速度快, 非常之快, 断电数据丢失

硬盘的特点, 容量大, 非常之大, 断电数据不丢失

简单的说, 内存小而快, 硬盘慢而大, 4000G(4T)硬盘的价格约等于16G内存的价格, 4000:16

所以, 要想数据持久化, 就必须把数据存到硬盘里

如果你是用数据库管理系统的话, 它会自动完成数据持久化

什么是mysql

最著名的数据库管理系统DBMS, 就是前面老王使用的管理软件

当然DBMS不止MySQL一个, MySQL为什么能在众多DBMS中脱颖而出呢?

  1. 体积小, 运行快
  2. 性价比高, 因为不要钱...
  3. 方便各个操作系统移植
  4. 对SQL语句支持的很好
  5. 运行速度很快

安装mysql

这里只讲windows系统的压缩包安装方式, 因为这种方式最简单,最流行

MySQL5.7官网下载地址

cdn.mysql.com//Downloads/…

安装MySQL

1. 解压

把压缩包解压到D:\test_mysql_57 (路径随意)

1553160580095.png

2. 添加环境变量

把bin目录的路径()添加到环境变量, 因为该文件夹下有msyql.exe(命令行工具-客户端)msyqld.exe(服务端)

1553160705494.png

1553160735339.png

1553160754567.png

1553160777651.png

1553160827790.png

1553160841667.png

1553160891223.png

一路点击确定, 关闭刚才所有的弹窗

3. 配置文件

创建配置文件: D:\test_mysql_57\my.ini

创建数据存储文件夹: D:\test_mysql_57\data

1553220877136.png

1553221359136.png

内容如下

[client]
port=3306 # 默认端口号
[mysql]
default-character-set=utf8 # 默认字符集

[mysqld]
port=3306
basedir="D:/test_mysql_57/" # mysql路径
datadir="D:/test_mysql_57/data/" # mysql数据路径
character-set-server=utf8 # 默认字符集
default-storage-engine=innodb # 默认数据库引擎
4. 使用命令行, 安装mysql服务

windows+X 打开命令行(管理员身份),

1553419812727.png

输入命令: mysqld install 连接名 --defaults-file="配置文件路径"

mysqld install mysql3306 --defaults-file="D:\test_mysql_57\my.ini" 

1553419000337.png

5. 初始化mysql

输入如下命令

mysqld  --initialize

1553419036688.png

6. 启动mysql

输入如下命令

net start mysql3306
7. 重置密码

再从文件中找到默认密码

D:\test_mysql_57\data\USER-20170622RQ.err

1553420031031.png

使用默认密码登录mysql, 重置密码

mysql -h localhost -u root -p

1553420266402.png

SET PASSWORD = PASSWORD('你的新密码');
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
flush privileges;

1553420361028.png

8. 使用新密码, 重新登录, 开心的输命令吧

1553420485513.png

启动/关闭/重启mysql

启动mysql:输入 net start mysql;

停止mysql:输入 net stop mysql;

windows下不能直接重启(restart),只能先停止,再启动。

数据库基本概念

数据库

存放数据的仓库, 所以本质上是一个容器

1553422577898.png

数据表

通过组成二维表, 来存储数据

1553422751547.png

字段

一列称为一个字段

记录

一行称为一个记录

数据

每一个格子存一个数据

总结

数据库里有数据表, 数据表里有, 行来存储数据, 列来描述数据

1553422937926.png

1553423003480.png

1553422898622.png

表关系

一对一(1:1)

用户表和用户详情表

「用户详情表表」,其字段包含:姓名、性别、年龄、身高、体重、籍贯和居住地等

一对多/多对一(1:N/N:1)

国家表,城市表

多对多(N:N)

学生表, 课程表

需要中间表建立联系

范式

简介

什么是范式

设计数据表遵守的规范

意义何在?

是为了解决数据的存储和优化问题

特点

  • 非必须
  • 越来越严格
  • 向下兼容

内容

  • 数据表中的每一列(每个字段)必须是不可拆分的最小单元,也就是确保每一列的原子性
  • 满足 1NF 后,要求表中的所有列,都必须依赖于主键,而不能有任何一列与主键没有关系
  • 必须先满足第二范式(2NF),要求:表中的每一列只与主键直接相关而不是间接相关

说人话

  • 一个字段只存一个数据
  • 一张表只干一件事
  • 不属于这个表的字段, 不要加到这个表里来

1118686-20170616134418946-1189742758.png

1118686-20170616134438775-1068700526.png

1118686-20170616134457821-1631705781.png

逆规范化

冗余和效率

符合范式, 数据不容易重复, 但是查询起来比较费事

为了速度, 可以多买点硬盘...

快速跳转