当前位置: 首页 > news >正文

【MySQL】数据库的基础概念

在这里插入图片描述

👦个人主页:@Weraphael
✍🏻作者简介:目前学习计网、mysql和算法
✈️专栏:MySQL学习
🐋 希望大家多多支持,咱一起进步!😁
如果文章对你有帮助的话
欢迎 评论💬 点赞👍🏻 收藏 📂 加关注✨


目录

  • 一、数据库的基本概念
      • 1.1 区分mysql和mysqld
      • 1.2 数据库存储介质
  • 二、见见猪跑
      • 2.1 连接数据库
      • 2.2 使用案例
  • 三、服务器、数据库、表关系
  • 四、MySQL架构
  • 五、Mysql语句分类
  • 六、 存储引擎

一、数据库的基本概念

1.1 区分mysql和mysqld

我们在连接MySQL服务器的时候使用mysql命令;而启动MySQL服务时又使用mysqld,它们的区别是什么呢?

  • mysql数据库服务的客户端

  • mysqld数据库服务的服务端(服务器)。负责接收客户端请求,然后处理数据库操作、维护数据等核心功能。当启动MySQL服务器时,实际上就是在运行mysqld进程。

因此,数据库其实是一种 基于 CS 模式的网络服务,是一套提供数据存储服务的网络程序。用户只需要通过客户端服务器发出 SQL 语句,然后等待服务器将数据返回即可。

CS:首先它是客户端 Client和服务器 Server 开头首字母的缩写。因此,客户端C代表mysql,服务器S代表mysqld

在这里插入图片描述

1.2 数据库存储介质

那么数据库中的数据是以什么样的形式存储的呢?

实际上,MySQL中的数据就是以文件的形式存储在磁盘上的。这些文件可不是一般的文件,它包括数据库文件、表文件等。当在MySQL中创建新的数据库、表,或者进行数据操作时,数据会被写入这些文件中。这样的设计可以确保数据持久化,即使服务器重新启动或断电,数据仍然可以被恢复。

那么为什么不能简单地把数据以普通文件的形式存储,而使用专门的数据库管理系统?

普通文件确实提供了数据存储功能,但并没有提供很好的数据管理能力(只提供读写),比如对一个10亿行的文档的内容要求快速增删查改某个字段,那么要遍历文件信息,效率是非常低的(文件对内容管理效率低下)

数据库是在磁盘上对数据内容存储了一套解决方案,用户只需给数据库字段或要求,然后等待数据库直接给用户返回结果就行。具备简单、高效、可靠管理数据的特性,可以轻而易举的对数据进行操作。

在这里插入图片描述

二、见见猪跑

2.1 连接数据库

  1. 连接数据库前需要确保 MySQL 服务已启动
systemctl start musqld
  1. 连接数据库
mysql -h IP地址 -P 端口号 -u 用户 -p

选项说明:

  • -h 指定要连接的MySQL服务器的IP地址。默认情况下,127.0.0.1是本地IP

  • -P 指定要连接的MySQL服务器的端口号。默认情况下,MySQL使用3306端口号;当然了,也可以自己在my.cnf配置文件中修改端口号。 vim /etc/my.cnf 修改完后需要手动重启MySQL服务,以便配置文件生效 systemctl restart mysqld

  • -u :指定登录用户。

  • -p:登录MySQL需要输入密码。后面也能跟密码,如-p密码

指令也可以简写成如下

mysql -u root -p

2.2 使用案例

  • 查看当前服务器上的数据库
show databases;
# 分号不能省略

在这里插入图片描述

我们在配置数据库文件时说过,mysql数据存放的路径在/var/lib/mysql

在这里插入图片描述

  • 创建数据库
create database [名称];

在这里插入图片描述

我们可以对比没建立此数据库之前,确实/var/lib/mysql路径下增加了[Test]目录。因此,建立数据库本质就是在Linux中新建一个目录

在这里插入图片描述

  • 创建数据库表

在这么多数据库列表中,首先要确定使用哪个数据库

use [数据库名称];

然后再创建数据库表

create table [表名](id int,name varchar(32),gender varchar(32)
);

在这里插入图片描述

我们可以再次看看Test目录下有什么变化

在这里插入图片描述

从以上图片可以看到目录下确实多了一个名为 [Test] 的相关文件。因此,创建数据库表的本质是在Linux下创建文件

结合以上操作,我们得出:数据库本质也是文件!只不过这些文件不需要程序员直接操作,而是由数据库服务mysqld在帮我们操作

  • 向表中插入数据
insert into student (id, name, gender) values (1, '张三', '男');
insert into student (id, name, gender) values (2, '李四', '女');
insert into student (id, name, gender) values (3, '王五', '男');
  • 查询表中的数据
select * from [表名];

在这里插入图片描述

  • 清屏操作
system clear;
  • 退出
quit;
# exit;

三、服务器、数据库、表关系

从以上案例可以得出:数据库呈现结果通常以表格的形式展示,这是因为关系型数据库使用了关系型数据模型,而表格是关系型数据模型中最基本的数据组织形式。

而表格形式符合人们对数据的直观认知,便于我们快速查看数据信息

  • 行:代表一个记录或实体

  • 列:代表一个字段或属性

在这里插入图片描述

在关系型数据库中,服务器承担着提供数据存储和处理能力的角色,数据库负责组织和存储数据,而表则是数据的具体载体,用于存储和管理实际的数据记录。这三者之间的关系可以理解为:服务器上托管了一个或多个数据库,每个数据库中包含了多个表,而表则包含了实际的数据记录。

四、MySQL架构

MySQL是一个可移植的数据库,几乎能在当前所有的操作系统上运行,如Unix/LinuxWindowsMac等。各种系统在底层实现方面各有不同,但是 MySQL 基本上能保证在各个平台上的物理体系结构的一致性。

在这里插入图片描述

  • 连接池: 用于管理客户端与服务器之间的连接。连接池负责处理客户端请求的连接管理,包括连接的建立、维护和释放,以提高数据库访问的效率和性能。

  • 管理服务和工具: 包括各种管理和监控工具,用于配置、监视和管理MySQL服务器实例的运行状态和参数设置。

  • 解析器: 负责解析和分析客户端提交的SQL查询语句。

  • 查询优化器: 用于对查询执行计划进行优化,选择最佳的查询执行策略,以提高查询性能和效率。

  • 缓存: 包括查询缓存和数据缓冲池,用于缓存查询结果和数据页,减少磁盘 I/O操作,提高数据访问速度。

  • 存储引擎: 如何存储数据、管理索引、处理事务等功能。

  • 日志组件: 记录数据库操作日志,包括事务日志、错误日志、慢查询日志等,用于数据恢复、故障排查和性能优化。

五、Mysql语句分类

MySQL语句可以根据其功能和用途分为多个主要分类,常见的分类包括:

  1. 数据操作语句(Data Manipulation Language,DML):用来维护存储数据的结构,常用于对数据库、表进行操作
select # 用于从数据库中检索数据。
insert # 用于向数据库表中插入新记录。
update # 用于更新数据库表中的记录。
delete # 用于从数据库表中删除记录。
  1. 数据定义语句(Data Definition Language,DDL):用来对数据进行操作,比如对表中的数据进行增删改查
create # 用于创建数据库对象,如表、索引等。
alter # 用于修改数据库对象的结构。
drop # 用于删除数据库对象。
  1. 数据控制语句(Data Control Language,DCL):主要负责权限和事务的管理,可以给用户赋予数据库的权限
grant # 用于赋予用户权限。
revoke # 用于撤销用户权限。

六、 存储引擎

  • 存储引擎:数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法
  • MySQL的核心就是插件式存储引擎,支持多种存储引擎。

MySQL中可以选择使用不同的存储引擎,不同的存储引擎所带来的效果不同

如何查看当前支持哪些存储引擎?

show engines;

在这里插入图片描述

存储引擎有很多,主要记住两个就行了:InnoDBMyISAM,至于它们的区别:

  • InnoDB 适合需要事务支持、数据完整性和高并发性能的应用
  • MyISAM 可能适用于只读数据、全文搜索或特定用途的应用

相关文章:

【MySQL】数据库的基础概念

👦个人主页:Weraphael ✍🏻作者简介:目前学习计网、mysql和算法 ✈️专栏:MySQL学习 🐋 希望大家多多支持,咱一起进步!😁 如果文章对你有帮助的话 欢迎 评论&#x1f4ac…...

Linux:离线安装 jdk-8(配置Java环境)

Linux:离线安装 jdk-8(配置Java环境) 1、jdk简介2、检查已安装的Java版本,并卸载3、准备安装包4、解压安装包、进行安装5、设置环境变量(全局/个人) 💖The Begin💖点点关注,收藏不迷路&#x1f…...

【DP】第十三届蓝桥杯省赛C++ B组《李白打酒加强版》(C++)

【题目描述】 话说大诗人李白,一生好饮。 幸好他从不开车。 一天,他提着酒壶,从家里出来,酒壶中有酒 2 斗。 他边走边唱: 无事街上走,提壶去打酒。 逢店加一倍,遇花喝一斗。 这一路上&am…...

数据结构试卷第九套

1.时间复杂度 2.树,森林,二叉树的转换 2.1树转二叉树 给所有的兄弟节点之间加一条连线;去线,只保留当前根节点与第一个叶子节点的连线,删除它与其他节点之间的连线;然后根据左孩子右兄弟进行调整&#xf…...

【Linux第三课-基础开发工具的使用】yum、vim、gcc/g++编译器、gdb、Make/Makefile编写、进度条程序、git命令行简单操作

目录 yum - 软件包管理器快速认识yum快速使用yumyum搜索yum安装yum卸载 yum的周边 - yum的整个生态问题 vim快速介绍vimvim的模式命令模式插入模式低行模式 常见模式 -- 命令、低行命令模式 -- 光标的移动命令模式 -- 复制粘贴、剪贴、删除命令模式 -- 小写/大写替换模式命令模…...

Redis:ClassCastException【bug】

Redis:ClassCastException【bug】 前言版权Redis:ClassCastException【bug】错误产生相关资源控制器:UserController("/user")配置:RedisConfiguration实体类:User数据表:User 解决 最后 前言 2…...

JSON 配置文件

JSON 配置文件的作用 JSON 是一种数据格式,在实际开发中, JSON 总是以配置文件的形式出现。小程序项目中也不例外:通过不同的 .json 配置文件,可以对小程序项目进行不同级别的配置。 小程序项目中有 4 种 json 配置文件&#xff0…...

由浅到深认识Java语言(6):控制流程语句

该文章Github地址:https://github.com/AntonyCheng/java-notes 在此介绍一下作者开源的SpringBoot项目初始化模板(Github仓库地址:https://github.com/AntonyCheng/spring-boot-init-template & CSDN文章地址:https://blog.c…...

lv17 安防监控项目实战 3

代码目录 框架 our_storage 编译最终生成的目标文件obj 编译生成中间的.o文件 data_global.c 公共资源定义(使用在外extern即可)定义了锁定义了条件变量消息队列id、共享内存id、信号量id及key值发送短信、接收短信的号码向消息队列发送消息的函数&am…...

文本处理基本方法

目录 分词 jieba 词性标注 😆😆😆感谢大家观看😆😆😆 分词 在中文文本中,由于词与词之间没有明显的界限符,如英文中的空格,因此分词是中文自然语言处理的一个基础且…...

Java面试题(Spring篇)

💟💟前言 ​ 友友们大家好,我是你们的小王同学😗😗 今天给大家打来的是 Java面试题(Spring篇) 希望能给大家带来有用的知识 觉得小王写的不错的话麻烦动动小手 点赞👍 收藏⭐ 评论📄 小王的主页…...

操作系统:malloc与堆区内存管理

malloc是函数而不是系统调用,他的底层是同调调用brk和mmap这两个系统调用实现功能的,具体选择brk还是mmap要看申请的空间大小以及malloc中的阈值(一般是128kb) 注意申请的空间只有使用才会触发缺页中断映射到物理内存 不理解的话先…...

javaSwing推箱子游戏

一、简介 策略性游戏可以锻炼人的思维能力还能缓解人的压力,使人们暂时忘却生活当中的烦恼,增强人们的逻辑思维能力,游戏的艺术美也吸引着越来越多的玩家和厂商,寓教于乐,在放松人们心情的同时还可以活跃双手。在人类…...

JAVA多线程之JMM

文章目录 1. Java内存模型2. 内存交互3. 三大特性3.1 可见性3.1.1 可见性问题3.1.2 原因3.1.3 解决方法 3.2 原子性3.3 有序性 4. 指令重排5. JMM 与 happens-before5.1 happens-before关系定义5.2 happens-before 关系 在继续学习JUC之前,我们现在这里介绍一下Java…...

Windows10 专业版 系统激活

Windows10 专业版 系统激活 参考: Windows10系统激活技巧 第一步:在电脑桌面,新建一个文本文档 第二步:打开文本文档,输入以下代码后,直接保存关闭文档 slmgr/skms kms.03k.org slmgr/ato 第三步&#xff1…...

C#使用LINQ和EF Core

在实际应用中,您可以使用 LINQ 查询 EF Core 来执行各种数据库操作。通过 LINQ,您可以轻松地过滤、排序、分组和连接数据。 要使用LINQ查询EF Core中的数据,您可以按照以下步骤进行操作: 首先,确保您已经安装了 Entit…...

数字人解决方案— SadTalker语音驱动图像生成视频原理与源码部署

简介 随着数字人物概念的兴起和生成技术的不断发展,将照片中的人物与音频输入进行同步变得越来越容易。然而,目前仍存在一些问题,比如头部运动不自然、面部表情扭曲以及图片和视频中人物面部的差异等。为了解决这些问题,来自西安…...

HTML5语法总结

文章目录 一.HTML基本框架二.标题标签三.段落标签四.换行与水平线标签五.文本格式化标签(加粗、倾斜、下划线、删除线)六.图像标签扩展:相对路径,绝对路径与在线网址 七.超链接标签八.音频标签九.视频标签十.列表标签十一.表格标签扩展:表格结构标签合并…...

在github下载的神经网络项目,如何运行?

github网页上可获取的信息 在github上面,有一个requirements.txt文件,该文件说明了项目要求的python解释器的模块。 - 此外,还有一个README.md文件,用来说明项目的运行环境以及其他的信息。例如python解释器的版本是3.7、PyTorc…...

spring boot学习第十四篇:使用AOP编程

一、基本介绍 1,什么是 AOP (1)AOP 为 Aspect Oriented Programming 的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。 (2)利用 AOP…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作

一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

【Oracle】分区表

个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题

分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...

iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈

在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...

代码规范和架构【立芯理论一】(2025.06.08)

1、代码规范的目标 代码简洁精炼、美观,可持续性好高效率高复用,可移植性好高内聚,低耦合没有冗余规范性,代码有规可循,可以看出自己当时的思考过程特殊排版,特殊语法,特殊指令,必须…...

c++第七天 继承与派生2

这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分:派生类构造函数与析构函数 当创建一个派生类对象时,基类成员是如何初始化的? 1.当派生类对象创建的时候,基类成员的初始化顺序 …...

Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成

一个面向 Java 开发者的 Sring-Ai 示例工程项目,该项目是一个 Spring AI 快速入门的样例工程项目,旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计,每个模块都专注于特定的功能领域,便于学习和…...