欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > 【MySQL】数据库基础

【MySQL】数据库基础

2025/4/22 11:29:15 来源:https://blog.csdn.net/2303_80828380/article/details/147165557  浏览:    关键词:【MySQL】数据库基础

目录

一、数据库:

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词