目录
一、数据库:
1、为什么要有数据库
2、数据库的工作模式:
3、数据库的存储介质:
二、MySQL基本使用:
1、MySQL服务端管理:
2、MySQL客户端的登录:
3、数据库基本使用:
三、MySQL补充知识:
数据库服务器,数据库,表关系:
MySQL语句:
MySQL架构:
存储引擎:
一、数据库:
1、为什么要有数据库
我们在以前存储数据的时候,是用文件进行存储的,那么为什么还要搞一个数据库来进行存储呢?
文件存储的缺点:
- 不安全:在进行数据被修改,当误操作的时候,不能够撤回
- 不利于数据的查询与管理:数据只是存储在文件中,并没有被联系起来
- 不利于存储海量数据:当数据达到很多的时候,用文件存储操控成本很高
- 控制数据不方便:当要在海量数据中进行查找的时候,需要用户自己写程序来进行查找
一般的文件给我们确实提供了数据的存储功能,但是数据并没有给我们提供非常好的数据管理能力
为了解决上述问题,有大佬就设计出了数据库用来管理数据
数据库具有简单,高效,管理数据的特性,能够很好地对数据进行操作
在我们的Linux云服务器中,服务端的mysql和客户端的mysql
如上,当安装完成MySQL之后,mysqld就是服务端的,mysql就是客户端的
如上,当我们安装好MySQL后,这个启动的mysqld就是MySQL的服务端
mysqld理解:最后的d代表的是daemon,是守护进程,这是一种特殊的进程,其父进程为1号进程,是不需要依赖于bash进程的,是在后台运行的,这样是为了能够不断在后台运行的
当我们进行登录MySQL的时候,就是登录客户端
数据库是按照数据结构来组织、存储和管理数据的仓库,是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合
数据库本质:对数据内容存储的一套解决方案,用户给数据库字段或者要求,数据库直接给用户结果
MySQL的本质:基于C(客户端mysql)S(服务端mysqld)模式的一种网络服务
2、数据库的工作模式:
3、数据库的存储介质:
数据库有两种存储介质,分别是存储在磁盘中和存储在内存中
我们所学的MySQL是的存储介质是将数据存储在磁盘中,所以MySQL也被叫做磁盘数据库
还有就是将数据存储在内存中,这种数据库的存储介质是内存,也叫作内存数据库(主存数据库),比如Redis
磁盘数据库:
优势:
- 持久化:数据直接写入磁盘,即使系统宕机也能保证数据不丢失,天然支持持久化存储
- 存储成本低:磁盘(HDD/SSD)价格远低于内存,适合存储海量数据(TB/PB级)
- 成熟度高传统数据库(如MySQL、Oracle)生态完善,工具链丰富
劣势:
- 读写速度慢:磁盘I/O延迟高(毫秒级),随机读写性能差,高并发场景容易成为瓶颈,需通过缓存、索引优化等手段缓解性能问题
- 实时性不足:不适合毫秒级响应的实时计算(如高频交易、实时推荐)
内存数据库:
优势:
- 极致性能:内存读写速度是磁盘的数千倍(纳秒级),适合高并发、低延迟场景(如每秒百万级请求)
- 高吞吐量:无磁盘I/O瓶颈,可轻松应对实时数据处理(如物联网传感器数据流、游戏会话管理)
劣势:
- 数据易失性风险:默认数据存储在内存,宕机可能导致数据丢失
- 存储成本高:内存价格昂贵,存储大规模数据成本极高
- 容量限制:单机内存容量有限(通常百GB级),需依赖分布式架构扩展,复杂度增加
- 功能简化:部分内存数据库牺牲复杂查询能力,事务支持较弱(如仅支持简单事务)
选磁盘数据库:需持久化存储、处理复杂查询、数据量极大、成本敏感
选内存数据库:需极低延迟、高吞吐量、实时计算,且能接受较高硬件成本
二、MySQL基本使用:
1、MySQL服务端管理:
关闭服务端
如上,当我们下载好MySQL了,此时服务器上的MySQL是正在启动的,
我们可以使用systemctl stop mysql.service来将服务关掉,此时我们查看就没有mysqld了
那么我们进行MySQL客户端的登录的话也肯定会出错:
开启服务端
我们可以使用systemctl start mysql.service将服务端启动,这样就能成功登录了
以上是一次将MySQL服务端重启操作,也可以直接使用systemctl restart mysql.service将MySQL服务端进行重启
2、MySQL客户端的登录:
注意:在连接数据库之前,要记得将MySQL服务端启动
mysql -u 用户 -p -h IP地址 -P 端口
解释:
-u:后面跟我们登录MySQL客户端的账号
-p:表示我们登录时是使用密码登录,在这行命令按下回车后,进行密码的输入
-h:后面跟MySQL服务器所对应的IP地址
-P:后面表示连接MySQL服务器所对应的端口号,默认是3066
如下是我们在云服务器上,进行登录成功后的界面
如果要退出输入quit即可
3、数据库基本使用:
查看当前数据库
在数据库的命令行中,输入show databases;可以查看当前数据库
这四个都是属于系统数据库,是不可删除的
创建数据库
在这里使用create database 数据库名称;进行创建
实际上,在创建后在Linux下的表现是在/var/lib/mysql路径下创建一个目录
原本没有test目录,在创建后就能够看到,并且其他系统数据库也有对应的目录
在数据库中创建表
创建表,实际上是在数据库中进行表的创建,所以在创建的时候要选择在哪一个数据库中进行创建,如上,使用use test就是进入到了test数据库,也就是在test数据库中创建表的
这就相当于是进入到了这个数据库中,能够在这里进行后续操作
如果我们在use了一个数据库后过了很久,如何判断我在使用哪一个数据库呢?
在命令行中可以使用select database();来进行查看当前的数据库是哪一个
在数据库中,表是很重要的,接下来看一看如何创建一个表
create table 表名
(属性名 属性类型,属性名 属性类型 //如果是最后一个的话,在后面不用加逗号
);
创建表在Linux中的体现就是在数据库对应的目录进行创建文件的
在MySQL中,想要查看当前数据库中有哪些表可以使用指令:show tables;
如下,这就是在创建两个表,然后再查看当前数据库中有哪些表
如果想要查看具体表的信息的话,用指令:desc 表名;
也可以通过show create table 表名 \G来查看创建表的结构,\G是将不用的符号都删掉,方便我们查看的
那么光有表的属性是不行的,还需要有表中的数据,使用指令insert into 表名 (属性名) values (属性名对应的数据,注意要对应哦)
然后通过select * from 表名,来查看
当成功创建表了之后,在对应的数据库的目录中就能够看到创建的相关文件
三、MySQL补充知识:
数据库服务器,数据库,表关系:
如上,客户端MySQL就是我们在云服务器中登录的那个MySQL,然后向服务端(也就是我们Linux中的mysqld)发送指令,创建并管理我们的数据库
如下,我们所看见的数据库就是上述的DB,在这个数据中创建表就是在对应的目录中创建文件
MySQL语句:
- DDL:数据定义语句:用来维护存储数据的结构,常用于对数据库、表进行操作,比如create、drop、alter
- DML:数据操纵语句:用来对数据进行操作,比如对表中的数据进行增删改查,比如insert、delete、update
- DCL:数据控制语句:主要负责权限和事务的管理,可以给用户赋予数据库的权限,比如grant、revoke、commit
MySQL架构:
MySQL是一个可移植的数据库,几乎能在当前所有的操作系统上运行,其得益于优秀的分层设计,MySQL能保证在各个平台运行时,物理体系结构的一致性
第一层也就是客户端连接池,用来解决安全,连接管理
第二层也就是服务层,用来将上层发来的SQL语句做词法语法分析和SQL语句的优化
第三层也就是引擎层,由多种可拔插的存储引擎组成,类似于插件,需要那个就用哪一个,作用是用来完成数据的存储或提取方案
最下面还有存储层,用来完成存储引擎的交互,依赖文件系统,帮我们把数据以二进制方式存在特定的目录下,构建特定的普通文件
存储引擎:
数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法
在MySQL中,我们可以使用show engines \G来观察MySQL支持的存储引擎
当创建成功表后,可以用指令show create table t1 \G来进行查看当前表的使用引擎
在配置文件中默认了存储引擎为innodb