【MySQL】初识数据库

目录

一.什么是数据库

二.数据库和数据结构的关系

[三. 数据库服务器、数据库与表之间的关系](#三. 数据库服务器、数据库与表之间的关系)

四.关系型数据库

[五. SQL介绍](#五. SQL介绍)

SQL分类

六.MySQL架构(面试重点)

[七. 库的基本操作](#七. 库的基本操作)

1.查看数据库

2.创建数据库

字符集编码和校验(排序)规则

[3. 修改数据库](#3. 修改数据库)

4.删除数据库

结语


一.什么是数据库

数据库其实就是数据结构来组织,存储和管理数据的仓库,数据库可以将数据按照一定的规则进行存储,以便于用户进行增删改查等操作。

数据库的特点:

  • 数据持久化:将数据保存在存储介质中,即使计算机断电关机后,数据也不会丢失
  • 数据结构化:数据库中的数据是按照一定的结构进行组织的,使得数据便于管理和查询
  • 数据共享性高:多个用户可以同时访问和使用数据库中的资源,提高数据的利用率
  • 安全性:数据库提供多种安全机制,保护数据不被未授权访问
  • 查询优化:数据库系统提供了高效的查询优化器,可以快速执行复杂的查询操作

二.数据库和数据结构的关系

  • 数据结构是组织数据的一种方式,数据库使用了合适的数据结构来组织数据,方便用户写入 (数据写入最终会写入到一种存储介质中(磁盘等)和查询数据(存储就是为了方便读取)
  • 数据为什么要用存储介质存储起来呢?如果保存在内存中,电脑重启数据就没有了(数据丢失),我们就访问不到数据了

三. 数据库服务器、数据库与表之间的关系

数据库服务器是指在机器上安装了一个数据库管理系统程序(数据库服务器上运行着数据库软件),这个程序可以管理多个数据库,数据库中包含多张数据表,数据表中包含很多数据行,从上图看:从上到下依次是包含关系

四.关系型数据库

关系型数据库是指采用了关系模型来组织数据的数据库,以表格的形式存储数据,由行和列组成,关系模型可以理解为一个二维表格模型,通过SQL语言进行数据操作和管理

正常的单张表:

  • 单张表的情况下:如果我现在需要修改班级信息,那么我需要对每个同学的班级信息一个一个的进行修改(效率就非常的低)
  • 存在两个表之间通过编号建立连接的情况下:此刻只需要对班级表中的班级这一列及进行修改即可,此刻查询数据,学生表中的学生班级信息就会根据班级编号找到对应的班级(如果有多个学生的班级存在重复,那么就大大提高了我们的效率

五. SQL介绍

SQL(Structured Query Language)是结构化查询语言的简称,是一种数据库查询和程序设计语言,用于存储数据以及查询、更新和管理关系数据库

SQL分类

那么SQL语言我们可以分为三类:DDL、DML、DCL

  1. DDL:数据定义语言,用来维护存储数据的结构,代表指令有 create(增)、drop(删)、alter(改),这些命令都是对数据库进行操作的
  2. DML:数据操作语言,用来对数据进行操作,代表指令有:insert(添加)、delete(删除)、update(修改)、select(查询),这些命令都是对数据进行操作的
  3. DCL:数据控制语言,主要负责权限管理和事物,代表指令有:grant(赋予权限)、revoke(撤销权限)、commit(提交事物)

六.MySQL架构(面试重点)

下图是整体架构图:接下来我来解析一下这张图每层的作用

  • 外部程序:客户端、应用程序,在这里充当的就是使用数据库的角色
  • MySQL服务器:
  1. 连接层:鉴权作用(当客户端连接到数据库之后,验证用户信息正确性,并且管理客户端的连接)
  2. 服务层:解析和优化SQL语句后发送到存储引擎层
  3. 存储引擎层:不同的存储引擎使用不同的数据结构来存储我们的数据(处理数据,这一层也是MySQL的核心)
  4. 文件系统层:保存数据

举个例子:

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 这个库就被删除了

结语

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

相关推荐
ssauuuuuu36 分钟前
Oracle高级语法篇 - 用户与角色关系
数据库·sql·oracle·plsql
杰克逊的日记4 小时前
Trino分布式 SQL 查询引擎
数据库·hadoop·分布式·sql·spark
007php0075 小时前
使用 Docker 安装 Elastic Stack 并重置本地密码
大数据·运维·后端·mysql·docker·eureka·jenkins
veminhe5 小时前
MySQL性能调优(三):MySQL中的系统库(简介、performance_schema)
数据库·mysql
may_一一5 小时前
Linux安装mysql_exporter
linux·运维·mysql
Narutolxy5 小时前
MySQL+Redis实战教程:从Docker安装部署到自动化备份与数据恢复20250418
redis·mysql·docker
降世神童6 小时前
【KWDB创作者计划】_针对KWDB时序数据库(多副本集群环境)进行压力测试
数据库·压力测试·时序数据库
0509156 小时前
测试基础笔记第九天
数据库·笔记·oracle
二年级程序员6 小时前
多表查询之嵌套查询
数据库·sql·mysql