初识mysql数据库之数据库介绍

news2025/1/16 5:57:53

目录

一、什么是数据库

1. 数据库的概念

2. 为什么要有数据库

3. 数据库样例

二、 主流数据库

三、服务器、数据库和表之间的关系

四、mysql存储架构

五、sql语句分类


一、什么是数据库

1. 数据库的概念

如果大家现在已经安装好了mysql,想必大家应该也都知道,在mysql按照好后就会多出两个东西,分别是mysqlmysqld

在这里面,mysql是数据库服务的客户端mysqld则是数据库服务的服务端。如果大家已经启动了mysqld后,大家应该就会发现,mysqld在启动后并不会影响linux的其他操作。而大家知道,在linux中一个窗口中只能有一个前台进程,但可以有多个后台进程。因此,mysqld在启动后其实就是守护进程,在后台运行。一般来讲,在可执行程序的名字中带d就是指该程序启动后是一个守护进程

mysql数据库,其实就是一套给我们提供数据存取服务的网络程序。这里大家要区分两个概念,mysql既可以指大家的linux中的mysql客户端也可以指mysql这个数据库。要将这两个东西区分开。这就好比大家平常手机上的微信,一般来讲大家说的微信其实就是说手机上的微信app,但是微信这个程序其实还应该包括它的服务端等各种内容的集合。一个是客户端,一个整体程序。

数据库,一般指的是在磁盘或内存中存储的特定结构组织的数据,即在磁盘或内存中存储的一套数据库方案

数据库服务,则一般指的是mysqld

2. 为什么要有数据库

大家应该知道,数据在磁盘中一般都是以文件的形式存储的,而linux中也是有对应的文件系统的。那问题就来了,既然我们有文件可以用来存储数据,那为什么还需要数据库呢?

这其实是因为,文件虽然提供了数据的存储功能,但是并没有提供非常好的数据管理能力。例如现在有一份文件,这份文件中有10万个ip地址,现在要求你从这10万个ip地址中找到开头为127的所有ip地址。如果你想完成这份工作,那么就需要你自己实现相关的逻辑,对程序员来说很不方便。

此时有人就可能又会说了,OS不是可以管理文件么,为什么不利用OS呢?OS确实需要对文件进行管理,但它仅仅是对文件整体做管理,管理的是文件的属性,如何保存等等内容,并不干涉文件的具体数据。因此,便有了数据库来帮助程序员完成对数据内容的具体管理工作。

总的来看,文件保存数据有以下几个缺点:

1. 文件的安全性问题;

2. 文件不利于数据查询和管理;

3. 文件不利于存储海量数据

4. 文件在程序中控制不方便;

数据库的本质,其实就是对数据内容存储的一套解决方案。即实现用户给数据库一个字段,数据库根据这个字段执行对应的操作并返回结果。而数据库的存储介质,则是磁盘和内存。

上图就可以看成是一个简单的数据库运行逻辑。用户在mysql端给服务器上的mysqld发命令,mysqld收到命令后就去操作磁盘上的数据库文件,然后再将对应数据返回给客户端。注意,这里的数据库文件并不是以前大家看到的普通文件

3. 数据库样例

为了让大家更好理解数据库,在这里就简单的操作一下,生成一个数据库。

首先输入“mysql -u root -p”登录mysql数据库,然后输入“show databases;”命令显示当前mysql中存在的数据库

那这些数据库到底存放在哪里呢?输入“vim /etc/my.cnf”打开配置文件,里面就配置好了数据库的数据存放位置:

然后再执行“cd /var/lib/mysql”命令进入该目录

此时再在mysql中执行“create database helloword;”命令,创建一个helloworld数据库,然后再执行“show databases”命令查看数据库

此时就可以看到,已经成功创建出一个新的数据库了。然后再在linux查看数据库的存储路径下的内容:

可以看到,在数据库的存储路径下就多了一个helloworld。看到这个蓝色字体,大家应该想到,在一个目录中用蓝色标出来的东西,其实就是一个目录。因此,所谓的创建数据库,就是在数据库存储路径下创建一个目录

进入该目录,里面只有一些配置文件,其他什么都没有:

既然是数据库,里面肯定需要有数据,因此在这里我们再创建一个表。

上文中说了,数据库其实就是linux下的一个目录。因此在mysql中要使用数据库,首先就要进入数据库。输入“use 数据库名称;”进入指定数据库。

然后执行下图命令,创建一个学生信息表:

在linux中的指定数据库目录下查看文件:

此时就多了两个数据库文件了。由此可以知道,在数据库中建表,本质就是在linux下创建对应的文件即可。

为了方便看到表里的内容,执行“insert into student (name, age, varchar) values ('张三', 20, '男');”命令,向表中添加内容。

 插入完后,再执行“select * from student;”命令查看表内容:

可以看到,数据正常插入到表结构中了。

在上面的这些操作中,无论是创建数据库,还是创建表结构生成数据库文件,这些工作都不是由程序员完成的, 而是由mysqld帮我们完成的。由此,就大大减轻了程序员的负担。

通过这个样例,我们就可以得出三个结论:

1. 建立数据库,本质就是在linux下创建一个目录;

2. 在数据库中建表,本质就是在linux下的对应数据库目录下创建对应的数据库文件;

3. 数据库本质也是文件,只不过这些文件并不由程序员直接操作,而是依靠数据库服务帮我们完成。

二、 主流数据库

虽然在这里我们只学习mysql数据库,但同时也可以了解一下其他的主流数据库。

1. SQL  Server:微软的产品,.Net程序员的最爱,一般适用于中大型项目;

2. Oracle:甲骨文产品,一般适合用于大型项目和处理一些复杂的业务逻辑,并发一般来说不如MySQL;

3. 世界上最受欢迎的数据库,并发性好,但是不适合做复杂的业务。主要用于电商、SNS、论坛。对简单的SQL处理效果好。

4. PostgreSQL:加州大学伯克利分销计算机系开发的关系型数据库,不管是使用、商用还是学医研究上都比较好。可以免费使用、修改和分发。

5. SQLite:是一款轻型的数据库,遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它的设计目标是用于嵌入式,并且目前的很多嵌入式产品都使用了它。该数据库的占用资源很低,在嵌入式设备中,可能只需要几百K的内存就够了。

6. H2:是j一个用于ava开发的嵌入式数据库,本身只是一个类库,可以直接嵌入到应用项目中

三、服务器、数据库和表之间的关系

 所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。例如你手机上的淘宝app,它在服务端上就可能有一个单独的数据库来保存该应用的数据。

为了保存应用中的实体数据,一般会在数据库中创建多个表,以保存程序中市实体的数据。例如我们在使用淘宝时,有各自的账户信息,浏览记录,商品列表等等,这些数据可能就是分门别类的用不同的表保存的。

总来来看,服务器、数据库和表之间的关系可以看成下图所示:

四、mysql存储架构

mysql是一个可移植的数据库,几乎能在当前所有的OS上运行,如Unix/Linux、windows、Mac和Solaris。不过他最主流的场景还是在linux上运行。各种系统在底层实现方面各有不同,但是mysql基本上能保证在各个平台上的物理结构的一致性。

上图就是一张mysql存储架构的图。在这张图中,最外层的Connectors是客户端,也就是用户通过它来使用mysql

在下面的内容中就是mysql服务器的一个整体结构了。其中第一层“connection pool”连接池。当我们要使用mysql时,第一件事就是需要登录mysql,对于登录账户的认证、安全保护等内容就是在这一层实现的。

在第二层中包含几个组件,这些东西大家不用特别关心。只需要知道这一层基本就是用于指令分析的。当我们在客户端中输入了指令后,这些指令就需要在第二层进行语法分析、语句优化等等工作,然后再将这些指令下达给下一层。

第三层中就是一个个具体的存储引擎真正执行任务的就是这一层的存储引擎。这些存储引擎接收到指令后,就帮我们去做创建数据库、创建表结构或增删查改等等内容。至于这一层为什么会有这么多存储引擎,其实是因为在数据库中存储的数据可能是不同的,有时存储文本数据,有时又可能存储二进制数据等等。而这些存储引擎,针对不同的数据所展现出来的存储效率就有所差别。例如MyISAM就有较高的并发度,能更好的支持大文本的读取。InnoDB中则提供了丰富的索引支持,能方便我们快速的进行查找。

注意,这些存储引擎是支持“热拔插”的。也就是说,这些存储引擎你想用哪一个就启用哪一个,不想用的就可以直接关掉。这就好比我们在写代码时准备好一个个的类,当需要用哪个类是就用new创建一个对象,不需要的类则不用管。

最后,这些存储引擎会将需要存储的数据放到第四层中的磁盘或内存中。

总的来讲,在上图中的mysql中的前三层都是用户层,最后一层则属于内核层。

五、sql语句分类

要使用mysql,就需要使用各种sql语句。虽然sql语句很多,但总的来讲分为以下三个大类。

1. DDL(data definition language)

DDL,即数据定义语言,用来维护存储数据的结构。代表指令有create、drop、alter

2. DML(data manipulation language)

DML,即数据操作语言,用于对数据进行操作。代表指令有insert、delete、update

3. DCL(data control language)

DCL,即数据控制语言,主要负责权限管理和事务。代表指令有grant、revoke、commit

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

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

相关文章

数字逻辑与模拟电子技术-部分知识点(1)——模电部分-半导体二极管,半导体的基础知识、本征半导体、杂质半导体、PN结的形成、PN结的特性、二极管的伏安特性

目录 半导体二极管 半导体的基础知识 本征半导体(经过加工处理) 杂质半导体 PN结的形成 PN结的特性 二极管的伏安特性 半导体二极管 半导体的基础知识 半导体器件的材料主要是硅(Si)、锗(Ge)和砷化镓(GaAs&…

Airtest框架和Poco框架常见问题

Airtest 报告可以导出发给别人看吗 Airtest的报告是可以打包发给别人看的。 ① 想要导出报告发给别人观看,我们需要生成报告的命令中传入 --export 参数,这样就可以将 包含静态资源文件和图片文件的报告 导出到一个指定的文件夹内,之后直接…

Qt绘图(线条、椭圆、矩形、图片滚动)

widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);~Widget();//绘图事件void paintEvent(QPaintE…

XML系列篇之dtd约束

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于xml的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一.XML 是什么 &#x1f4a1;辉辉小贴士&a…

STM32时钟系统

时钟 时钟是具有周期性的脉冲信号&#xff0c;最常用的是占空比50%的方波。 时钟是单片机的脉搏。 时钟树 HSE&#xff1a;高速外部振荡器&#xff0c;4~16MHz&#xff0c;&#xff08;晶体&#xff0c;陶瓷&#xff09;LSE&#xff1a;低速外部振荡器&#xff0c;32.768KHz…

ADC0808/ADC0809引脚图及功能和工作原理介绍

ADC0808芯片有28条引脚&#xff0c;采用双列直插式封装。如图所示&#xff1a; . . . 各引脚功能如下&#xff1a; 1-5和26-28&#xff08;IN0-IN7&#xff09;&#xff1a;8路模拟量输入端。 8、14、15和17-21&#xff1a;8位数字量输出端。 22&#xff08;ALE&#xff09…

深度学习代码环境配置(编译器, git, anaconda)

内容 编译器 gcc&#xff1a;GNU编译器套装C builderMicrosoft Visual C&#xff08;MSVC&#xff09;&#xff1a;微软的VC编译器MinGW&#xff08;Minimalist GNU on Windows&#xff09;&#xff1a;可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合&…

【设计模式】面向对象的设计原则

(一) UML 和面向对象设计原则 1. 一种某唱片播放器不仅可以播放唱片&#xff0c;而且可以连接计算机并把计算机中的歌曲刻录到 唱片上&#xff08;同步歌曲&#xff09;。连接计算机的过程中还可自动完成充电。 关于唱片&#xff0c;还有如下描述信息&#xff1a; &#xf…

ChatGPT底层架构Transformer技术及源码实现(一)

ChatGPT底层架构Transformer技术及源码实现 Language Model底层的数学原理之最大似然估计MLE及最大后验概率MAP内部机制详解 Gavin大咖微信:NLP_Matrix_Space 传统人工智能算法的真相(The Truth Under Traditional AI Algorithms),传统人工智能算法是相对于贝叶斯(Bayesia…

【软件设计师暴击考点】程序设计语言-高频考点暴击系列

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;软件…

碳中和城市建筑能源系统(4):储能篇(龙惟定)2022

碳中和城市建筑能源系统(4):储能篇 摘要 本文是碳中和城市建筑能源系统系列文章的第四篇。在碳中和语境下&#xff0c;无论是增加可再生能源应用的渗透率&#xff0c;还是平抑负荷、提高电网的灵活性&#xff0c;都离不开储能。本文介绍了当今储能技术的主要类型&#xff0c;…

【新星计划·2023】Centos 7安装教程(一步一图)

作者&#xff1a;Insist-- 个人主页&#xff1a;insist--个人主页 作者会持续更新网络知识和python基础知识&#xff0c;期待你的关注 目录 一、下载VMware 二、下载镜像的方式 三、安装Linux ’前言 本文将讲解下载VMware和下载镜像的方式&#xff0c;以及安装centos 7的教…

webpack编译打包从入门到放弃

写在前面的话&#xff1a;推荐学习vite。当然&#xff0c;我更推荐你直接上手体验webpack_demo与vite_demo 看看他们的编译、打包、热更新速度等差距。你也可以直接通过vite开发lib库&#xff0c;一句话就是比webpack快&#xff0c;它有的vite都有&#xff0c;并且更好&#x…

NCI-NFCEE

10.5 NFCEE 状态 NFCC 使用此控制消息向 DH 通知启用的 NFCEE 状态的变化。 NFCC 发送 NFCEE_STATUS_NTF 来报告启用的 NFCEE 状态的变化。 对于任何禁用或无响应的 NFCEE&#xff0c;NFCC 不应发送 NFCEE_STATUS_NTF。 当启用 NFCEE 并且 NFCC 检测到与该 NFCEE 通信时存在不…

C++布隆过滤器

目录 布隆过滤器介绍实现哈希函数布隆过滤器删除 小结使用——题目 布隆过滤器 介绍 在许多场景下&#xff0c;如设置昵称时&#xff0c;往往要求唯一性。这时就需要高效判断该昵称是否被使用过。 使用红黑树的kv模型或者哈希表来组织昵称集合&#xff0c;可以&#xff0c;但缺…

Qt中的日期和时间

目录 QDate 示例&#xff08;打印年月日&#xff09;&#xff1a; QTime 示例&#xff08;显示时分秒&#xff09;&#xff1a; QDateTime 示例&#xff08;显示当前日期和时间&#xff09;&#xff1a; 示例&#xff08;分别取出 年 月 日 时 分 秒&#xff09;&#xff…

牛客网专项练习——C语言错题集(8)

文章目录 字符串拼接和拷贝while 与 fortypedef 和 define浮点类型的组成部分 字符串拼接和拷贝 这题并没有难度&#xff0c;但不知为什么我把该题空着。 strcpy 用于拷贝字符串&#xff0c;strcat 用于拼接字符串。 while 与 for 假如 i 0&#xff0c;while 循环里 s1 被执…

【AI机器学习入门与实战】机器学习算法都有哪些分类?

&#x1f44d;【AI机器学习入门与实战】目录 &#x1f36d;基础篇 &#x1f525; 第一篇&#xff1a;【AI机器学习入门与实战】AI 人工智能介绍 &#x1f525; 第二篇&#xff1a;【AI机器学习入门与实战】机器学习核心概念理解 &#x1f525; 第三篇&#xff1a;【AI机器学习入…

Z变换方程转化为差分方程

将Z变换方程转换为差分方程的过程称为反Z变换。反Z变换是将信号从复频域转换为时间域的过程。如果我们已知一个系统的传递函数&#xff0c;即Z变换方程&#xff1a; H ( z ) Y ( z ) X ( z ) b n b n − 1 z − 1 ⋯ b 0 z − n 1 a n a n − 1 z − 1 ⋯ a 0 z − n 0…

AVL 树

目录 AVL树的概念AVL树节点的定义AVL树的插入AVL树的旋转左单旋(parent->_bf 2 && cur->_bf 1)a,b,c当高度为0a,b,c当高度为1a,b,c当高度为2a,b,c当高度为...... 右单旋(parent->_bf -2 && cur->_bf -1)a,b,c当高度为0a,b,c当高度为1a,b,c当高…