
目录
[三. 数据库服务器、数据库与表之间的关系](#三. 数据库服务器、数据库与表之间的关系)
[五. SQL介绍](#五. SQL介绍)
[七. 库的基本操作](#七. 库的基本操作)
[3. 修改数据库](#3. 修改数据库)
一.什么是数据库
数据库其实就是数据结构来组织,存储和管理数据的仓库,数据库可以将数据按照一定的规则进行存储,以便于用户进行增删改查等操作。
数据库的特点:
- 数据持久化:将数据保存在存储介质中,即使计算机断电关机后,数据也不会丢失
- 数据结构化:数据库中的数据是按照一定的结构进行组织的,使得数据便于管理和查询
- 数据共享性高:多个用户可以同时访问和使用数据库中的资源,提高数据的利用率
- 安全性:数据库提供多种安全机制,保护数据不被未授权访问
- 查询优化:数据库系统提供了高效的查询优化器,可以快速执行复杂的查询操作
二.数据库和数据结构的关系
- 数据结构是组织数据的一种方式,数据库使用了合适的数据结构来组织数据,方便用户写入 (数据写入最终会写入到一种存储介质中(磁盘等)和查询数据(存储就是为了方便读取)
- 数据为什么要用存储介质存储起来呢?如果保存在内存中,电脑重启数据就没有了(数据丢失),我们就访问不到数据了
三. 数据库服务器、数据库与表之间的关系

数据库服务器是指在机器上安装了一个数据库管理系统程序(数据库服务器上运行着数据库软件),这个程序可以管理多个数据库,数据库中包含多张数据表,数据表中包含很多数据行,从上图看:从上到下依次是包含关系
四.关系型数据库
关系型数据库是指采用了关系模型来组织数据的数据库,以表格的形式存储数据,由行和列组成,关系模型可以理解为一个二维表格模型,通过SQL语言进行数据操作和管理
正常的单张表:

- 单张表的情况下:如果我现在需要修改班级信息,那么我需要对每个同学的班级信息一个一个的进行修改(效率就非常的低)
- 存在两个表之间通过编号建立连接的情况下:此刻只需要对班级表中的班级这一列及进行修改即可,此刻查询数据,学生表中的学生班级信息就会根据班级编号找到对应的班级(如果有多个学生的班级存在重复,那么就大大提高了我们的效率
五. SQL介绍
SQL(Structured Query Language)是结构化查询语言的简称,是一种数据库查询和程序设计语言,用于存储数据以及查询、更新和管理关系数据库
SQL分类
那么SQL语言我们可以分为三类:DDL、DML、DCL
- DDL:数据定义语言,用来维护存储数据的结构,代表指令有 create(增)、drop(删)、alter(改),这些命令都是对数据库进行操作的
- DML:数据操作语言,用来对数据进行操作,代表指令有:insert(添加)、delete(删除)、update(修改)、select(查询),这些命令都是对数据进行操作的
- DCL:数据控制语言,主要负责权限管理和事物,代表指令有:grant(赋予权限)、revoke(撤销权限)、commit(提交事物)
六.MySQL架构(面试重点)
下图是整体架构图:接下来我来解析一下这张图每层的作用
- 外部程序:客户端、应用程序,在这里充当的就是使用数据库的角色
- MySQL服务器:
- 连接层:鉴权作用(当客户端连接到数据库之后,验证用户信息正确性,并且管理客户端的连接)
- 服务层:解析和优化SQL语句后发送到存储引擎层
- 存储引擎层:不同的存储引擎使用不同的数据结构来存储我们的数据(处理数据,这一层也是MySQL的核心)
- 文件系统层:保存数据
举个例子:
1.下图就是客户端连接到数据库,连接层验证用户信息正确,连接成功的结果2.发送SQL语句,通过服务层解析SQL语句,再到存储引擎层处理数据,最后到文件系统层保存数据,返回结果
七. 库的基本操作
通过上述信息我们了解了数据库是做什么的,那么接下来我们就要学习一下如何对数据库进行操作。
1.查看数据库
那么在创建一个新的数据库之前,我们应该查看一下当前电脑中我们已经存在了哪些库,避免创建时出现错误,那么就引出了查看数据库的命令:
show databases;
- show:是SQL语言中的关键字,表示显示的意思
- databases:database指的就是数据库的意思,加上s就表示的是所有数据库的意思
注意:在MySQL中的每条SQL语句都要以分号结束,并且SQL中的字符是不区分大小写的

2.创建数据库
当我们查询完当前电脑中所有的数据库时,就可以创建自己想要的数据库了,语法如下:
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [create_option] ...
create_option: [DEFAULT] {
CHARACTER SET [=] charset_name
| COLLATE [=] collation_name
| ENCRYPTION [=] {'Y' | 'N'}
}
- 大写部分表示关键字
- db_name:表⽰⾃定义的数据库名
- {}⼤插号表⽰必须选
- | 表⽰任选其中⼀个
\]中括号表⽰是可选项(可写可不写)
- COLLATE:指定数据库字符集的校验规则
- ENCRYPTION:表示是否要加密
那么我们接下来就创建一个库看看:

那么大家有没有一个疑问呢?如果当前创建一个已经存在的库会发生什么呢?

此时就会发生报错,重复创建库这种现象在未来创建库的过程中是经常发生的,那么有没有办法能够及时防治这种情况的发生呢?其实是有的:

此时显示的也是成功的信息,但是我们真的会重复创建一个test1这个库嘛,实际上是不会的,if not exists 就是用来判断当前电脑中是否已经存在这个库了,如果不存在那么就创建,如果存在就会弹出一个warning的警告,我们来查看一下这个警告信息:
上述圈起来的部分的意思就是:"不能创建test1 这个库,这个库已经存在了"
字符集编码和校验(排序)规则
字符集编码可以理解为:假设有两个人进行交流,一个人说的是中文,一个人说的是英文,那么这就意味着双方都听不懂对方在说什么,那么对于我们的数据库来说,在写入数据和读取数据的时候应该使用相同的编码集,否则读取数据的时候可能就会出现乱码,我们查看一下有哪些编码集:


MySQL8.0默认的字符集编码是 utf8mb4 MySQL5.7默认的字符集是 latin1
在上图中的Default collation 那一栏就是我们的排序规则
那么接下来我们来创建一个指定字符集编码和排序规则的库:

- utf8mb4_0900_ai_ci 是MySQL8.0引⼊的新规则,在⽼版本中不能识别;
- utf8mb4 编码是对 Unicode 字符集的⼀种实现,⽤1到4个字节表⽰⼀个字符,可以表⽰世界上⼏乎所有的字符,⽽且更节少空间
- 0900 是基于 UCA 9.0.0算法,UCA是Unicode Collation Algorithm的缩写
- ai是Accent-insensitive的缩写,表⽰⼝声不敏感
- ci是Case-insensitive的缩写表⽰⼤⼩写不敏感
- as是Accent-sensitive的缩写,表⽰⼝声敏感
- cs是Case-sensitive的缩写,表⽰⼤⼩写敏感
- bin表⽰⼆进制
3. 修改数据库
当创建好数据库后,我们难免会对数据库进行修改库中的一些信息,那么我们一起来看看该如何修改:

对于数据库的修改主要是修改数据库的字符集,校验规则
4.删除数据库
当我们不想要之前创建的数据库时,则需要删除之前创建的数据库,那么接下来就是看看如何删除数据库:
DROP {DATABASE | SCHEMA} [IF EXISTS] db_name

当前电脑中总共拥有这些数据库,那么我现在删除刚才创建的test1这个库:

此时test1 这个库就被删除了
结语
以上就是本章的全部内容了,希望大家看完本章后对数据库能够有一个初步的了解,并且能够学习到数据库增删改查操作,在此感谢大家的观看!!!
