MySql数据库(概念篇)

数据库概念

什么是数据库

数据库见名之意,就是用来存储数据的仓库,是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。
没接触数据库之前,一般都是将数据存储在文件中。比如execl文件,word文件中。但是用文件保存数据对比数据库保存数据,文件保存数据存在以下几个缺点:

  • 文件的安全问题
  • 文件不利于数据查询和管理
  • 文件不利于处理海量数据
  • 文件在程序中控制不方便

总的来说数据库相比文件更适合于处理复杂的、多用户访问的数据,并且能够提供更高的安全性、性能和灵活性。
为了解决这个问题,大佬们就设计出了一种更加利于管理数据的东西->数据库。它能更能高效的管理数据。

主流的数据库

  • MySQL: MySQL 是一个流行的开源关系型数据库管理系统,广泛应用于 Web 应用程序和企业级解决方案中。
  • Oracle Database: Oracle Database 是一个功能强大的商业关系型数据库管理系统,适用于大型企业级应用。
  • Microsoft SQL Server: Microsoft SQL Server 是由微软开发的关系型数据库管理系统,适用于 Windows 平台,广泛用于企业级解决方案。
  • PostgreSQL: PostgreSQL 是一个强大的开源关系型数据库管理系统,具有高度可定制性和扩展性。
  • MongoDB: MongoDB 是一个流行的开源非关系型数据库管理系统,采用文档存储模型,适用于大规模的数据存储和处理。
  • SQLite: SQLite 是一个轻量级的嵌入式关系型数据库管理系统,适用于移动应用程序和小型设备。
  • IBM Db2: IBM Db2 是一个功能丰富的商业关系型数据库管理系统,适用于企业级应用和大型数据处理。
  • Amazon Aurora: Amazon Aurora 是亚马逊提供的关系型数据库服务,兼具高性能、可扩展性和可用性。

这些数据库各自有其特点和适用场景,选择合适的数据库取决于项目需求、性能要求、数据量、可扩展性和预算等因素。

数据库可以通过网络提供服务。数据库通常作为一个独立的软件运行在服务器上,并通过网络接口来提供对数据的访问和管理。这意味着客户端应用程序可以通过网络连接到数据库服务器,并发送查询、更新和其他操作请求,以访问或修改数据库中的数据。

数据库分为客户端和服务器两种。在本地连接数据库时,一般会使用下面的命令:mysql -uroot -p

image.png
输入密码后,就可以连接到本地数据库了。这种没有指定远程ip地址和端口号,默认就是连接本地回环地址127.0.0.1和默认端口3306的。

如果要连接远程数据库,则需要指定ip地址和端口号mysql -h 127.0.0.1 -P 3306 -u root -p

  • h: 表示你要连接的MySQL服务器所在的主机,127.0.0.1表示本主机。
  • P: 表示你要连接的MySQL服务器所对应的端口号,一般默认是3306。
  • u: 表示用哪一个用户连接MySQL服务器,root表示超级用户。
  • p: 表示该用户对应的密码,密码可以直接跟在-p后面,也可以回车后输入。

注意,要连接远程MySql服务,本地MySql客户端和服务器MySql版本要一致。

在服务器上使用ps命令就能查看到mysqld进程信息。mysqld就是服务器上为mysql提供服务的进程。

image.png

使用netstat也能查看到mysqld进程处于LISTEN状态进行监听。底层使用的协议是TCP6协议(TCP6 是指在 IPv6 网络上运行的 TCP 协议)。默认的端口是3306。

image.png

MySQL服务器本质是一个网络服务器,我们使用mysql命令连接MySQL服务器时,本质就是MySQL客户端在向服务器mysqld进程发起连接请求,连接建立成功后MySQL客户端就会将用户输入的SQL语句发送给服务器mysql进程,之后服务器mysql进程就会根据SQL语句对数据进行对应的操作并把结果返回给客户端。

image.png

数据库存储介质

数据库存储介质通常可以分为两类:磁盘存储和内存存储。

  • 磁盘存储

    • 比如MySQL就是一种磁盘数据库。
  • 内存存储

    • 比如redis就是一种内存数据库。
  • 数据库按照数据存储介质分为两类,磁盘数据库和内存数据库,其中内存数据库又称为主存数据库(Main Memory Database)。

  • 磁盘数据库的数据主要存储在磁盘上,因此磁盘数据库在数据的持久化保存上有明显优势。但磁盘数据库为了提高数据的存储效率,也有自己对应的缓存机制,因此在某一个时刻之内,不一定所有数据都会被刷新到磁盘上。

  • 内存数据库的数据主要存储在内存中,与磁盘数据库相比,内存数据库可以大大提高读取速度,减少数据库的访问时间。但内存数据库并非完全不使用磁盘,数据库的启动信息、初始数据等还是需要存储在磁盘上的,只是数据主要在内存中进行存储和运算。

  • 由于内存数据库的数据存储在内存中,数据库主机掉电后数据就会丢失,因此在数据库服务关闭前通常需要把内存中的数据转储到磁盘上,甚至在内存数据库运行期间,一些数据也会持久化到磁盘存储。

服务器,数据库,表的关系

  • 所谓的安装数据库服务器就是在服务器上安装了一个数据库管理程序,这个程序可以管理多个数据库。一般的开发会针对每个要开发的程序创建一个数据库。
  • 保存应用中的实体数据,一般会在数据库中创建多个表,用来保存程序中的数据。
  • 而所谓的建库,就是服务器上mysqld进程在其目录下创建一个目录,建表就是在目录下创建一个文件。

在mysql 中使用show global variables like "%datadir%";命令查看存储路径(这里是Linux系统,window下也是一样的)。

image.png

使用create database创建数据库,就会在存储路径/var/lib/mysql/下新建一个目录

image.png
新建好的库中,默认有一个db.opt文件。该文件中指明了当前数据库的默认字符编码和字符校验规则

image.png
这里的字符编码和校验规则都是UTF-8。一般情况下,如果没有特殊的需求,这个文件不需要手动编辑或创建。
image.png
在库中创建表就是在对应的目录下创建文件

image.png
.frm是表结构文件。 .ibd是表数据和索引的文件。

SQL分类

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

  • DDL(Data Definition Language)数据定义语言,用来维护存储数据的结构。比如create语句、drop语句、alter语句等。
  • DML(Data Manipulation Language)数据操作语言,用来对数据进行操作。比如insert语句、delete语句、update语句等。
    • DML中又单独分了一个DQL(Data Query Language)数据查询语言,比如select语句、from语句、where语句等。
  • DCL(Data Control Language)数据控制语言,主要负责权限管理和事务。比如grant语句、revoke语句、commit语句。

MySql架构

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

MySql架构图如下:

image.png

  • 客户端连接器:它负责与服务器建立连接、发送查询请求、接收查询结果和处理与服务器的通信。MySQL 支持多种客户端连接器,其中最常见的是标准 MySQL 客户端连接器(mysql)以及各种编程语言提供的 MySQL 客户端。
  • 连接池和线程管理器: MySQL 使用连接池和线程管理器来管理客户端连接。连接池负责管理和维护数据库连接,而线程管理器负责管理处理客户端请求的线程。
  • SQL 接口: SQL 接口允许客户端通过 SQL 语句与 MySQL 服务器进行通信。客户端可以使用多种编程语言(如 PHP、Python、Java 等)提供的 API 来与 MySQL 服务器进行交互。
  • 解析器和优化器: MySQL 使用解析器解析客户端发送的 SQL 语句,并将其转换为内部数据结构。优化器负责分析 SQL 查询,并生成执行计划以提高查询性能。
  • 缓存管理器: MySQL 使用缓存管理器来管理查询缓存。查询缓存存储先前执行过的查询结果,以提高查询性能。
  • 存储引擎: MySQL 支持多种存储引擎,包括 InnoDB、MyISAM、MEMORY、CSV 等。存储引擎负责管理数据的存储和检索,并提供不同的特性和性能优势。由多种可拔插的存储引擎共同组成,真正负责MySQL中数据的存储和提取,每个存储引擎都有自己的优点和缺陷,服务层是通过存储引擎API来与它们交互的。

MySql存储引擎

存储引擎是数据库系统中负责管理数据存储和检索的组件,它定义了数据在磁盘上的存储格式、索引方式、事务支持等特性。不同的存储引擎可以提供不同的性能、功能和特性,以满足不同的应用需求。

在 MySQL 中,常见的存储引擎包括但不限于:

  1. InnoDB: InnoDB 是 MySQL 默认的存储引擎,它提供了事务支持、行级锁、外键约束、崩溃恢复等功能,适合于需要高并发和事务支持的应用场景。
  2. MyISAM: MyISAM 是 MySQL 中另一个常见的存储引擎,它不支持事务和行级锁,但提供了全文索引、压缩表格等特性,适合于读操作较多的应用场景。
  3. MEMORY: MEMORY 存储引擎将数据存储在内存中,速度非常快,但数据在 MySQL 服务器关闭时会丢失,适合于临时数据存储和高速缓存。
  4. CSV: CSV 存储引擎将数据以 CSV 格式存储在文件中,适合于导入和导出数据。
  5. Archive: Archive 存储引擎提供了高度压缩的存储格式,适合于存储大量历史数据。
  6. NDB Cluster: NDB Cluster 存储引擎用于 MySQL Cluster,提供了分布式存储和高可用性特性,适合于大规模、高可用的分布式应用

使用show engines可以查看MySql支持的存储引擎。

image.png
MySql默认使用的是InnoDB存储引擎。该存储引擎支持事务、行级锁、外键等。

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Django之单文件上传(以图片为例)

一,创建项目 初始化,数据迁移,创建superuser,创建app等 二,配置settings.py 1,配置数据库(本作者使用的mysql),以前文章有提到 2,配置静态文件存放路径 STAT…

计算机毕业设计 | springboot+vue小米商城 购物网站管理系统(源码+论文+讲解视频)

1,项目背景 国家大力推进信息化建设的大背景下,城市网络基础设施和信息化应用水平得到了极大的提高和提高。特别是在经济发达的沿海地区,商业和服务业也比较发达,公众接受新事物的能力和消费水平也比较高。开展商贸流通产业的信息…

纯血鸿蒙APP实战开发——Canvas实现模拟时钟案例

介绍 本示例介绍利用Canvas 和定时器实现模拟时钟场景,该案例多用于用户需要显示自定义模拟时钟的场景。 效果图预览 使用说明 无需任何操作,进入本案例页面后,所见即模拟时钟的展示。 实现思路 本例的的主要实现思路如下: …

最新版Ceph( Reef版本)块存储简单对接k8s

当前ceph 你的ceph集群上执行 1.创建名为k8s-rbd 的存储池 ceph osd pool create k8s-rbd 64 642.初始化 rbd pool init k8s-rbd3 创建k8s访问块设备的认证用户 ceph auth get-or-create client.kubernetes mon profile rbd osd profile rbd poolk8s-rbd部署 ceph-rbd-csi c…

Origin拟合EIS(电化学阻抗谱),怎么出来圆圈

1.先导入数据,以点图的形式画出来 2.重要的一步Fitting,按照我这个一步一步来就行 3.将其中的Function选择为Elipse,然后点拟合至最佳条件 4.第三步做完就会发现圆圈已经出来了,然后点OK就行 5.搞定

数仓开发中期:理论巩固

一、数仓以及商业智能(Data Warehousing and Business Intelligence, DW/BI)系统 1.1数据操作和数据获取的区别 对所有组织来说,信息都是其最重要的财富之一。信息几乎总是用作两个目的:操作型记录的保存和分析型决策的制定。简单来说&…

pytest教程-38-钩子函数-pytest_runtest_protocol

领取资料,咨询答疑,请➕wei: June__Go 上一小节我们学习了pytest_collection_finish钩子函数的使用方法,本小节我们讲解一下pytest_runtest_protocol钩子函数的使用方法。 pytest_runtest_protocol 钩子函数在 pytest 运行单个测试用例之前…

内容安全(IPS入侵检测)

入侵检测系统( IDS )---- 网络摄像头,侧重于风险管理,存在于滞后性,只能够进行风险发现,不能及时制止。而且早期的IDS误报率较高。优点则是可以多点进行部署,比较灵活,在网络中可以进…

STM32F4xx开发学习_SysTick

SysTick系统定时器 SysTick属于CM4内核外设,有关寄存器的定义和部分库函数都在core_cm4.h这个头文件中实现,可用于操作系统,提供必要的时钟节拍 SysTick简介 SysTick是一个 24 位向下定时器,属于CM4内核中的一个外设,…

漏洞是如何产生的,该怎么提前预防处理

一、漏洞产生原因 漏洞通常指的是在硬件、软件、协议的具体实现或系统安全策略中隐藏的缺陷,这些缺陷可能被攻击者利用,以未经授权的方式访问或损害系统。它们并非源于安装过程或长期运行后的磨损,而是源于编程过程中的人为因素。 在程序开…

【R语言从0到精通】-4-回归建模

通过之前的文章,我们已经基本掌握了R语言的基本使用方法,那从本次教程开始,我们开始聚焦如何使用R语言进行回归建模。 4.1 回归简介 回归分析是一种统计学方法,用于研究两个或多个变量之间的相互关系和依赖程度。它可以帮助我们了…

QT7_视频知识点笔记_2_对话框,布局,按钮,控件(查看帮助文档找功能函数)

第二天: 对话框,布局,按钮 QMainWindow:菜单下拉框添加之后可通过ui->actionXXX(自定义的选项名)访问,用信号triggered发出信号,槽函数可以使用lambda表达式进行 //菜单栏&am…

文字转语音粤语怎么转换?6个软件教你快速进行文字转换语音

文字转语音粤语怎么转换?6个软件教你快速进行文字转换语音 当需要将文字转换为粤语语音时,可以使用多种工具和服务,这些工具可以帮助您快速而准确地实现这一目标。以下是六个非国内的语音转换软件,它们可以帮助您将文字转换为粤语…

web前端学习笔记7-iconfont使用

7. iconfont的使用流程 字体图标使用较多的是阿里巴巴iconfont图标库,它是阿里巴巴体验团队推出的图标库和图标管理平台,提供了大量免费和可定制的矢量图标,以满足网页设计、平面设计、UI设计、应用程序开发和其他创意项目的需求。 官方网站:https://www.iconfont.cn/ 使用…

大数据毕业设计Python+Django旅游景点评论数据采集分析可视化系统 NLP情感分析 LDA主题分析 bayes分类 旅游爬虫 旅游景点评论爬虫 机器学习 深度学习 人工智能 计算机毕业设计

毕业论文(设计)开题报告 学生姓名 学 号 所在学院 信息工程学院 专 业 指导教师姓名 指导教师职称 工程师 助教 指导教师单位 论文(设计)题目 基于朴素贝叶斯算法旅游景点线上评价情感分析 开 题 报 告…

Nginx从入门到精通速成

文章目录 一. **Nginx** **的简介**1.1 什么是 **nginx**1.2 正向代理1.3 反向代理1.4 **负载均衡**1.5 动静分离 二. **Nginx** **的安装**三. **Nginx** **的常用的命令**四. **Nginx** **的配置文件**五. **Nginx** **配置实例**反向代理实例**1**5.1 实现效果5.2 准备工作5…

计算机视觉——OpenCV Otsu阈值法原理及实现

算法简介 Otsu阈值法,也被称为大津算法,是一种在图像处理中广泛使用的自动阈值分割技术。这种方法由日本学者大津展之于1979年提出,旨在根据图像的灰度直方图来自动选择最佳全局阈值。Otsu阈值法的核心思想是最小化类内方差或最大化类间方差…

数据结构 第七章 图(一)

🚀 【考纲要求】图的基本概念 一、图的基本概念 1.1 图的定义 图由顶点和边组成,所以我们在表示一个图的时候,使用 G ( V , E ) G(V,E) G(V,E),来表示一个G图,其中的V表示G图中的顶点,E表示G图中的边&am…

【SAP ME 35】SAP ME DEBUG模式开启

1、Debug基础参数配置 2、NWDS Debug模式开启 3、Debug模式下删除锁(如果以上尝试无效,就执行删除锁) 找到对应的锁任务进行删除! -------------------------------------------------------------- SAP ME涉及问题较多&#…

(MATLAB)安装指南

参考链接:MATLAB2019a安装教程(避坑版)