【半夜学习MySQL】数据库概念详解探索数据库到底是如何存储的?

在这里插入图片描述

🏠关于专栏:半夜学习MySQL专栏用于记录MySQL数据相关内容。
🎯每天努力一点点,技术变化看得见

文章目录

  • 什么是数据库
  • 主流数据库与数据库分类
  • 数据库的基本使用
    • 数据库的启动及关闭
    • 查看配置文件与数据库存储位置
    • 连接数据库服务器
    • 服务器&数据库&表之前的关系
    • 使用案例
    • 数据逻辑存储
  • MySQL架构
  • SQL分类
  • 存储引擎


什么是数据库

在计算机中,文件就足以存储数据了,为什么还要使用文件呢?

由于文件有如下缺点,故需要使用数据库存储数据:
●文件没有提供安全机制,数据安全没有保障;
●文件查找数据时需要逐一遍历,效率过低,不利于数据的查询;且文件需要用户自定义数据存储格式等,不利于数据管理;
●文件存在数据上限,不利于存储海量数据;
●文件在程序中控制不方便;例如:C语言中需要打开关闭文件,移动文件读写指针等,操作十分繁琐。

为了解决上述问题,用于管理数据的数据库就应运而生了,它能更有效地管理数据。

而数据库本质也需要像文件一样,能够持久化存储,故数据库存储介质为:磁盘内存

主流数据库与数据库分类

主流数据库如下表所示↓↓↓

数据库名称介绍
SQL Sever微软的产品,.Net程序员的最爱,中大型项目。
Oracle甲骨文产品,适合大型项目,复杂的业务逻辑,并发一般来说不如MySQL
MySQL世界上最受欢迎的数据库,属于甲骨文,并发性好,不适合做复杂的业务。主要用在电商,SNS,论坛。对简单的SQL处理效果好。
PostgreSQL加州大学伯克利分校计算机系开发的关系型数据库,不管是私用,商用,还是学术研究使用,可以免费使用,修改和分发。
SQLite是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。
H2是一个用Java开发的嵌入式数据库,它本身只是一个类库,可以直接嵌入到应用项目中。

数据库大体可以分为关系型数据库非关系型数据库
●关系型数据库:是指采用了关系模型来组织数据的数据库。简单来说,关系模型指的就是二维表格模型,也就是由二维表格及其之前的联系所组成的一个数据组织。
关系型数据库基于标准的SQL,但内部的一些实现有所区别,常用的关系型数据库有:Oracle、MySQL、SQL Server、MariaDB。
●非关系型数据库:不规定基于SQL实现,现在更多是指NoSQL(Not Only SQL)数据库,例如↓↓↓

  1. 基于键值对(Key-Value):如memcached、redis
  2. 基于文档型:如mongodb
  3. 基于列族:如hbase
  4. 基于图型:如neo4j

关系型数据库与非关系型数据库的区别如下标所示↓↓↓

关系型数据库非关系型数据库
使用SQL不强制要求,一般不基于SQL实现
事务支持支持不支持
复杂操作支持不支持
海量读写操作效率低效率高
基于结构基于表和列,结构固定灵活性比较高
使用场景业务方面的OLTP系统用于数据的缓存、或基于统计分析的OLAP系统

★ps:OLTP(On-Line Transaction Processing)是指联机事务处理,OLAP(On-Line Analytical Processing)是指联机分析处理

数据库的基本使用

专栏所有操作均在CentOS7的云服务器上,安装操作各个系统存在差异,这里不再介绍安装操作

数据库的启动及关闭

mysql分为客户端和服务端,为方便用户使用,这两者均可像使用命令一样使用,其中mysql客户端为/usr/bin/mysql可执行文件,mysqld服务端为/usr/sbin/mysqld可执行文件。
在这里插入图片描述
数据库启动操作
但在执行mysql的各项操作前,我们需要先启动数据库服务,即执行下述操作(启动mysql服务端mysqld)↓↓↓

sudo systemctl start mysqld

下图执行启动mysql服务指令后,使用ps -axj | grep mysqld即可查看对应进程已经启动↓↓↓
在这里插入图片描述
数据库设置为开机自启动
执行下方两个命令,实现数据库服务端开机自启动并守护进程化

systemctl enable mysqld	#开机自启动
systemctl daemon-reload	#进程守护进程化

如果要取消开机自启动,可以执行如下指令↓↓↓

systemctl disable mysqld

★ps:常规情况下,服务器并不会关机,这个操作设不设置都可以。
关闭数据库服务

systemctl stop mysqld

★ps:mysql是一套给我们提供数据存取的服务的网络程序。mysql它是数据库服务的客户端,mysqld它是数据库服务的服务端。mysql本质:基于CS模式的一种网络服务。我们可以使用netstat -nltp查看对应端口是否有数据库服务端程序在运行↓↓↓
在这里插入图片描述

查看配置文件与数据库存储位置

查看配置文件
mysql服务端在启动时,会读取配置文件,对某些属性信息做配置。mysql的配置文件为/etc/my.cnf,如下图所示(可修改这个文件的配置信息,对mysql做配置)↓↓↓
在这里插入图片描述
查看数据库的存储位置
数据库中的数据需要持久化存储,就需要采用文件方式存储数据,再将数据存储到磁盘中。而不同的数据库,其实就是一个又一个的目录,每个数据库中存储的不同数据表,就是一个又一个的数据文件。我们可以进入/var/lib/mysql目录下,但要查看该目录下的信息,我们需要使用root用户身份进入↓↓↓
在这里插入图片描述
★ps:关于上述目录和部分文件的含义将在下文介绍

连接数据库服务器

mysql -h 127.0.0.1 -p 3306 -u root -p

★ps:-h后面跟服务器ip地址,-o后面跟端口号,-u后面跟登录用户用户名,-p后面跟登录用户密码。上述操作回车换行后,会要求用户输入密码,密码输入过程是不回显的。

★ps:如果没有写-h 127.0.0.1默认是连接本地,如果没有写-P 3306默认是连接3306端口

下图演示了,如何登陆mysql客户端↓↓↓
在这里插入图片描述
★ps:如何给mysql配置免密码操作呢?如何修改mysql服务端的端口号呢?在/etc/my.cnf配置文件中,可以配置mysql属性信息。其中,添加skip-grant-tables即可实现免密码登陆,修改配置文件中的port=3306(修改成其他端口号),即可实现mysql服务端端口号的修改。在修改完上述操作后,需要保存配置文件,并重启mysql服务端程序才能生效。
在这里插入图片描述

服务器&数据库&表之前的关系

所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。

为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。

数据库服务器,数据库和表的关系如下↓↓↓
在这里插入图片描述
数据库本质:对数据内存存储的一套解决方案,用户给数据库字段或者要求,数据库直接给用户结果就行,数据库是一套存储解决方案。

使用案例

下述操作仅所演示,后序文章中将挨个介绍。下文中,使用操作后,会介绍该操作后,对应/var/lib/mysql目录下的变化。
●创建数据库

create database jammingpro;

在这里插入图片描述
创建jammingpro数据库后,/var/lib/mysql目录下,多了一个名为jammingpro的文件夹↓↓↓
在这里插入图片描述

●使用数据库

use jammingpro;

●创建数据库表

create table personInfo(
	id varchar(4),
	name varchar(32),
	gender varchar(2)
);

在这里插入图片描述
完成表的创建后,jammingpro目录下,多出了两个名与表personInfo同名的文件↓↓↓
在这里插入图片描述

●表中插入数据

insert into personInfo values('0001','小明','男');
insert into personInfo values('0002','小菜','男');
insert into personInfo values('0003','小阿','女');

在这里插入图片描述

●查询表中的数据

select * from personInfo;

在这里插入图片描述
★ps:综上可知,创建数据库就是在/var/lib/mysql目录下创建响应的目录,在该目录中创建表,就是在该目录中创建对应的存储文件。对表的增删改查,其实是对存储文件的增删改查。由于数据库管理系统的存在,用户不再需要对存储文件执行操作,而是执行数据库管理系统提供的简便指令即可。

★ps:数据库本质其实也是文件!只不过这些文件并不由程序员直接操作,而是由数据库mysqld服务帮我们进行操作。

数据逻辑存储

在这里插入图片描述
在MySQL中数据的存储是按二维表格的逻辑进行存储的。

MySQL架构

MySQL是一种可移植的数据库,几乎能在当前所有的操作系统上运行,如Unit/Linux、Windows、Max和Solaris。各种操作系统在底层实现方面各有不同,但是MySQL基本上能保证在各个平台上的物理体系结构的一致性。
在这里插入图片描述

由于MySQL会接收大量的查询、增加、删除、修改操作,需要使用Connection Pool管理各个数据库请求。而再往下的SQL Interface、Parser、Optimizer、Caches完成对SQL执行语句的解析操作,再将解析后的指令操作交由下层的各个数据库引擎执行(数据库引擎是可选的,用户选择哪个存储引擎,就由该存储引擎执行对应的操作,该操作称为存储引擎是支持热插拔的),存储引擎类似于操作系统中的驱动程序,可对磁盘等存储设备做出操作。

SQL分类

下方对各个SQL操作语句做出了分类,关于各个操作语句如何使用,将于后序文章介绍。

●DDL(data definition language)数据定义语言,用来维护存储数据的结构。代表指令有:create、drop、alter。
●DML(data manipulation language)数据操纵语言,用来对数据进行操作。代表指令有:insert、delete、update。
●DCL(data control language)数据控制语言,主要负责权限管理和事务。代表指令有:grant、revoke、commit

存储引擎

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

我们可以使用如下语句,查看MySQL中支持的所有存储引擎↓↓↓

show engines;

在这里插入图片描述
下表列出各存储引擎的特性,专栏中介绍InnoDB和MyISAM,余下存储引擎不做介绍。关于InnoDB和MyISAM的特点,将于后序文章中介绍。
在这里插入图片描述

🎈欢迎进入半夜学习MySQL专栏,查看更多文章。
如果上述内容有任何问题,欢迎在下方留言区指正b( ̄▽ ̄)d

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/607554.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

微型显示器可以实时监测大脑活动

美国团队开发基于LED的设备,以可视化大脑活动,在脑外科手术中指导神经外科医生 来自加州大学圣地亚哥分校和马萨诸塞州总医院的工程师和医生开发了一种薄膜显示设备,该设备结合了电极网格和特殊的GaN LED,可以在手术过程中实时跟…

5月9日作业

1&#xff0c;创建一对父子进程&#xff1a;父进程负责向文件中写入 长方形的长和宽子进程负责读取文件中的长宽信息后&#xff0c;计算长方形的面积。 1 #include <stdio.h> 2 #include <string.h> 3 #include <unistd.h> 4 #include <stdlib.h> 5 #…

中国4月进口以美元计同比增长8.4%,出口同比增长1.5%

中国按美元计4月进出口同比增速均转负为正&#xff0c;双双超预期。 5月9日周四&#xff0c;海关总署公布数据显示&#xff0c;以美元计价&#xff0c;中国2024年4月进口同比增长8.4%至2201亿美元&#xff0c;前值同比下降1.9%&#xff0c;出口同比增长1.5%至2924.5亿美元&…

基于Spring Boot的公司OA系统设计与实现

基于Spring Boot的银行OA系统设计与实现 开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea 系统部分展示 用户登录界面&#xff0c;在银行OA系统运行后&#x…

ThingsBoard如何接受设备通过TCP发送的报文

1、概述 2、案例 2.1、阐述 2.2、导入依赖 2.3、构建Netty服务链接&#xff0c;接受的端口为8092 2.4、对数据进行相应的处理发送到ThingsBoard客户端 2.5、通过TCP链接工具 ​2.6、查看遥测数据 1、概述 TCP&#xff08;Transmission Control Protocol&#xff0c;传输…

【备战软考(嵌入式系统设计师)】11 - 硬件电路基础

逻辑门电路 首先我们需要先了解三个最基础的门电路&#xff0c;可以说我们一切的电子产品的基石就是这哥仨&#xff0c;它们就与&#xff0c;或&#xff0c;非。 与门和或门有两个输入端&#xff0c;一个输出端&#xff1b;非门有一个输入端一个输出端。 在我们数字电路中&a…

IOS Xcode证书配置和ipa打包流程(附详细图文教程)

IOS Xcode证书配置和ipa打包流程&#xff08;附图文教程&#xff09; 前言ipa文件简介证书文件简介Provisioning Profile描述文件简介当前环境版本Xcode证书配置和ipa打包流程生成Apple Distribution Certificates证书创建描述文件&#xff08;Provisioning Profiles&#xff0…

车载测试系列:车载以太网测试(一)

汽车行业对可靠性和安全性要求越来越高&#xff0c;车载以太网在应用过程中&#xff0c;为了保证其可靠性与安全性&#xff0c;需要对其开展测试工作。 传统的以太网测试和车载以太网测试存在一定差异&#xff0c;传统以太网测试方法并不适用汽车以太网测试。 汽车行业对测试…

代码随想录第四十三天|最后一块石头的重量 II 、目标和

题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 代码如下&#xff1a; 题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 代码如下&#xff1a;

986: 哈夫曼译码

解法&#xff1a;先把代码粘贴到编译器&#xff08;vs&#xff09;上&#xff0c;分享一个一键去除空白行的操作&#xff0c;ctrlf调出查找窗口&#xff0c;输入查找(?<\r\n)\r\n&#xff0c;选择正则表达式&#xff0c;替换就可以发现会去掉一百多行空白行。 本题只需要利…

通用型产品发布解决方案(基础环境搭建)

文章目录 1.项目技术栈和前置技术2.创建Linux平台1.需求分析2.安装Virtual Box1.BIOS里修改设置开启虚拟化设备支持&#xff08;f2 或f10&#xff09;2.任务管理器 -> cpu 查看虚拟化是否开启3.卸载方式4.安装6.1.265.管理员身份运行&#xff0c;选择安装位置6.一直下一步&a…

我的Transformer专栏来啦

五一节前吹的牛&#xff0c;五一期间没完成&#xff0c;今天忙里偷闲&#xff0c;给完成了。 那就是初步拟定了一个《Transformer最后一公里》的写作大纲。 之前一直想写一系列Transformer架构的算法解析文章&#xff0c;但因为一直在忙&#xff08;虽然不知道在忙啥&#xf…

银行职员向媒体投稿发文章我找到了好方法

作为一名基层银行的媒体联络专员,我的日常工作中有一项至关重要的任务,那就是代表我所在的支行向各大媒体投稿,传播我们的金融服务、产品动态以及社会责任实践。起初,这项看似简单的工作却成了我职业生涯中的一大挑战。传统的邮件投稿方式,不仅耗时费力,而且审核流程严格,稿件从…

【DSIN】深度 Session 兴趣网络

一、提出动机 这个模型依然是研究如何更好地从用户的历史行为中捕捉到用户的动态兴趣演化规律。 1.1、序列本身的特点&#xff1a; 其实用户点击序列有他自己本身的特点&#xff1a;用户过去可能有很多历史点击行为&#xff0c;按照用户的点击时间排好序&#xff0c;比如[it…

【Linux】yum与vim

文章目录 软件包管理器&#xff1a;yumLinux安装和卸载软件包Linux中的编辑器&#xff1a;vimvim下的底行模式vim下的正常模式vim下的替换模式vim下的视图模式vim下的多线程 软件包管理器&#xff1a;yum yum其实就是一个软件,也可以叫商店 和你手机上的应用商店或app store一…

【FreeRTOS 快速入门】-- 1、STM32工程移植FreeRTOS

目录 一、新建STM32工程 为了示范完整的移植过程&#xff0c;我们从0开始&#xff0c;新建一个标准的STM32点灯工程。 &#xff08;本篇以CubeMX作示范&#xff0c;CubeIDE操作近同&#xff0c;可作对比参考&#xff09; 1、新建工程 选择 芯片型号 新建工程 2、搜索芯片型号…

计算方法实验9:Romberg积分求解速度、位移

任务 输出质点的轨迹 ( x ( t ) , y ( t ) ) , t ∈ { 0.1 , 0.2 , 0.3 , . . . , 10 } (x(t), y(t)), t\in \{0.1, 0.2, 0.3, ..., 10\} (x(t),y(t)),t∈{0.1,0.2,0.3,...,10}&#xff0c;并在二维平面中画出该轨迹.请比较M分别取4, 8, 12, 16, 20 时&#xff0c;Romberg积分达…

MTK平台ATE tool

一、校准测试环境搭建 ① 仪器端一个端口直接连接功分器。 ② 功分器输出端外接3dbm的衰减器。 ③功分器空出来的端口需要外接50 Ω的负载。 ④功分器与手机端口的连接没有顺序之分。 二、ATE设置介绍 ATE所支持的无线通信系统 — GSM — WCDMA — TDSCDMA — LTE — WI…

Redis持久化策略——Java全栈知识(17)

Redis持久化 1、Redis 持久化的三种方式 1、RDB&#xff1a; 以快照的方式将此刻 Redis 中的数据以二进制的文件形式保存在磁盘中。 RDB 的优点是&#xff1a;快照文件小、恢复速度快&#xff0c;适合做备份和灾难恢复。 RDB 的缺点是&#xff1a;定期更新可能会丢数据&#…

2024年软件测试最全Jmeter--【作为测试你必须要知道的】基础名词与环境搭建,2024年最新年末阿里百度等大厂技术面试题汇总

网上学习资料一大堆&#xff0c;但如果学到的知识不成体系&#xff0c;遇到问题时只是浅尝辄止&#xff0c;不再深入研究&#xff0c;那么很难做到真正的技术提升。 需要这份系统化的资料的朋友&#xff0c;可以戳这里获取 一个人可以走的很快&#xff0c;但一群人才能走的更…
最新文章