数据库介绍

数据库定义和分类

1
2
3
4
5
6
7
数据库定义:
数据库数据库是结构化信息或数据(一般以电子形式存储在计算机系统中)的有组织的集合,通常由数据库管理系统 (DBMS) 来控制。

数据库管理系统定义:
充当数据库与其用户或程序之间的接口,允许用户检索、更新和管理信息的组织和优化方式。
还有助于监督和控制数据库,提供各种管理操作,例如性能监视、调优、备份和恢复。
常见的数据库软件或 DBMS 有 MySQL、Microsoft SQL Server、Oracle Database等。
1
2
3
4
数据库分类:
- 关系型数据库:关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式)。常用关系型数据库: oracle、 MySQL、 MariaDB、SQL Server

- 非关系型数据库:非关系型数据库也被称为NoSQL数据库,NoSQL的本意是“Not Only SQL”,指的是非关系型数据库。NoSQL的产生并不是要彻底否定关系型数据库,而是作为传统数据库的一个有效补充。NoSQL数据存储不需要固定的表结构,通常也不存在连续操作。常用非关系型数据库:redis、MongoDB、Memcached

数据库发展历程

自 20 世纪 60 年代初诞生至今,数据库已经发生了翻天覆地的变化。最初,人们使用分层数据库(树形模型,仅支持一对多关系)和网络数据库(更加灵活,支持多种关系)这样的导航数据库来存储和操作数据。这些早期系统虽然简单,但缺乏灵活性。20 世纪 80 年代,关系数据库开始兴起;20 世纪 90 年代,面向对象的数据库开始成为主流。最近,随着互联网的快速发展,为了更快速地处理非结构化数据,NoSQL 数据库应运而生。现在,云数据库自治驾驶数据库在数据收集、存储、管理和利用方面正不断取得新的突破。

数据库和电子表格的区别

主要体现在三个方面:存储和操作数据的方式、谁可以访问数据、可以存储多少数据

从一开始,电子表格就是专门针对单一用户而设计的,其特性也反映了这一点。电子表格非常适合不需要执行太多高度复杂的数据操作的单一用户或少数用户。另一方面,数据库的设计是为了保存大量有组织的信息,有时是海量的。数据库允许多个用户同时使用高度复杂的逻辑和语言,快速、安全地访问和查询数据。

MySQL介绍

1
2
3
4
5
什么是MySQL:MySQL是一种开源的基于SQL的关系型数据库管理系统,关于SQL我们会在后续课程中进行讲解,简单来讲MySQL就是一个关系型的数据库

为什么使用MySQL:使用MySQL的比较主要的原因就是MySQL是开源的免费的,并且是轻量级的一款数据库,包括Facebook、Twitter、Booking.com 和 Verizon 在内的许多公司和组织都在使用MySQL

版本选择:MySQL8.0.27是目前MySQL官方发行的最新版本(课程准备阶段8.0.27是最新版本,目前MySQL最新版本是8.0.28),由于MySQL已经呗Oracle收购,对每个版本的MySQLOracle会提供5年的基本维护期限,对5.7版本的维护期限已经到期,在我要自学网中也已经有了MySQL5.7.20版本的教程,并且相对5.7版本的MySQL,8.0版本有了一些新的功能和特性,因此本课程选择MySQL官方发布最新版本进行讲解,有兴趣的同学可以去MySQL的官网上查看MySQL8.0最新特性。

MySQL安装

1
2
3
4
5
6
7
8
9
10
11
安装环境: windows10
1 - 下载MySQL8.0.27安装包,下载地址:https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.27-winx64.zip
2 - 解压zip压缩包至想要安装的目录,比如E:\software\mysql\mysql-8.0.27-winx64
3 - 在解压目录E:\software\mysql\mysql-8.0.27-winx64中创建MySQL配置文件my.ini(my.ini文件在课程资源中可以下载)
4 - 以管理员身份打开命令行,切换到安装MySQL的目录下,再切换到bin目录下
5 - 执行MySQL初始化命令 mysqld --initialize --console
6 - 记录初始化完成后生成的用户名和密码,即root用户和生成的密码(如果万一手抖关了命令行没记住密码也没关系,就删掉我们MySQL安装根目录下的data目录然后再执行一遍初始化命令会重新生成的。)
7 - 安装MySQL的服务mysqld,同样在bin目录下,执行MySQL服务安装命令 mysqld --install 服务名(不写的话默认服务名是mysql)
8 - 启动MySQL服务,net start mysql(停止服务:net stop mysql 卸载服务:sc delete 服务名)
9 - 将mysql.exe和mysqld.exe所在的路径添加到环境变量中,然后重启MySQL服务
10 - 使用root用户和密码通过命令行(无需管理员身份)登录MySQL验证是否安装成功

MySQL C/S架构模型

1
MySQL是C/S架构模型,即client(客户端)和sever(服务端)架构模型。

MySQL体系结构(工作原理)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
mysqld分为server层(连接层+SQL层)和存储引擎层
SQL执行顺序:
1.连接层:客户端输入mysql -u root -p xxx -h 127.0.0.0 -P 3306,连接到server端的连接层,连接层共有三个作用:
- 提供连接协议:tcp/ip socket
- 提供验证:验证用户名密码 IP 端口
- 提供专用连接线程,接受用户的SQL语句,以及返回结果
(可以通过show processlist产看连接线程的基本情况)
2.SQL层:连接成功后,客户端会输入SQL语句后回车发送给服务端,由SQL层执行SQL语句,SQL层主要负责:
- 接收上层传送的SQL语句
- 通过语法验证模块验证SQL语句是否符合语法规则
- 进行语义检查,判断SQL语句的类型(DDL DCL DML DQL)
- 进行权限检查,判断当前登录用户对当前表有没有权限进行操作
- 通过解析器,对语句执行前进行预处理,生成多种执行计划
- 优化器会根据解析器得到的多种执行计划进行评估,选择最优的执行计划
- 执行器会根据优化器选择的执行计划执行SQL语句,产生执行结果:在磁盘的某个位置(xxx段xxx区xxx页)
- 提供查询缓存(query cache,比较鸡肋...),默认是没有开启的,会使用redis替代查询缓存功能
- 提供日志记录,binlog(二进制日志),默认是没开启的
3.存储引擎层(和磁盘进行交互的模块):根据SQL层执行的记过从磁盘上获取数据,交由SQL结构化变成表,再通过连接层返回给客户端。