【MySQL 保姆级教学】数据库基础(重点)(2)
目录
- 1. 什么是数据库
- 1.1 数据库的定义
- 1.2 mysql 和 mysqld
- 1.3 文件和数据库
- 2. 数据库的分类
- 3. 连接数据库
- 3.1 数据库的安装
- 3.2 连接服务器(数据库)
- 3.3 服务器 数据库 表 三者的关系
- 4. 数据库-表 和目录-文件 的关系
- 5. MySQL 框架
- 6. SQL 分类
- 7. 储存引擎
1. 什么是数据库
1.1 数据库的定义
数据库(Database)是一种按照数据结构来组织、存储和管理数据的仓库。通过数据库管理系统(Database Management System, DBMS),用户可以方便地对数据进行创建、查询、更新和删除等操作。数据库的主要目的是有效地存储和管理数据,以便于多个用户或应用程序能够高效、安全地访问和共享数据。
简单的说就是一套给我们提供数据存储的服务的网络程序。
口头上的数据库一般指:在磁盘或者内存中存储特定结构的数据 — 在磁盘上存储的一套数据方案
数据库的主要特征
- 数据结构化:
数据库中的数据是以特定的结构组织的,例如表格形式(关系型数据库)、文档形式(NoSQL 数据库)等。这种结构化的方式使得数据更容易管理和查询。 - 数据独立性:
数据独立性是指数据的物理存储与逻辑结构之间的分离。这意味着用户可以不必关心数据是如何存储的,只需关注如何使用数据。数据独立性分为物理数据独立性和逻辑数据独立性。 - 数据共享:
多个用户或应用程序可以同时访问同一个数据库中的数据,从而实现数据的共享和协作。 - 数据控制:
数据库管理系统提供了多种机制来控制数据的访问和操作,包括用户权限管理、事务管理、备份和恢复等,确保数据的安全性和一致性。 - 数据冗余减少:
通过数据的集中管理和规范化设计,数据库可以减少数据冗余,提高数据的一致性和完整性。 - 数据持久性:
数据库中的数据是持久化的,即使系统关闭或重启,数据也不会丢失。
1.2 mysql 和 mysqld
-
客户端 (mysql)
定义:mysql 是一个命令行工具,用于连接到 MySQL 服务器并执行 SQL 命令。它是用户与 MySQL 服务器进行交互的主要方式。
用途:用户通过 mysql 客户端发送 SQL 查询、查看查询结果、管理数据库等。
使用场景:当你需要手动执行 SQL 语句、查看数据库状态、创建和删除数据库、表等操作时,通常会使用 mysql 客户端。 -
服务器端 (mysqld)
定义:mysqld 是 MySQL 的数据库服务器进程。它是后台运行的守护进程,负责处理来自客户端的所有请求。
用途:mysqld 负责管理数据文件、处理查询、执行事务、维护数据的一致性和完整性等。
使用场景:通常情况下,mysqld 会在系统启动时自动运行,并在后台持续运行,等待客户端的连接请求。
那MySQL数据库是 mysql 还是 mysqld 呢?
我们使用的抖音也有客户端和服务端,好比回答 抖音是客户端还是服务端呢?抖音的客户端和服务端一起工作保证正常使用抖音。
mysql本质:基于C(mysql) S(mysqld)模式的一种网络服务。
既然是一种网络服务,那么会绑定端口号(启动服务器需要使用端口号)
查询端口号:netstat -lntp
1.3 文件和数据库
存储数据用文件就可以了,为什么还要弄个数据库?
文件保存数据有以下几个缺点:
- 文件的安全性问题
- 文件不利于数据查询和管理
- 文件不利于存储海量数据
- 文件在程序中控制不方便
一般的文件确实提供了数据的存储功能,但文件没有提供非常好的数据管理能力(用户角度)
什么是数据管理能力?
比如,给你一个文件,里面包含一万条手机号码,请你找出180开头的所有手机号。普通的文件能快出的找出吗?程序员自己找吗?
数据库作用?
对数据内容存储的一套解决方案,给数据库服务端要求(找出所有180开有的手机号),数据库服务端直接给出结果,不用程序员自己去找。
为了解决上述问题,专家们设计出更加利于管理数据的东西——数据库,它能更有效的管理数据。数据库的水平是衡量一个程序员水平的重要指标。
2. 数据库的分类
主流数据库:
- SQL Sever: 微软的产品,.Net程序员的最爱,中大型项目。
- Oracle: 甲骨文产品,适合大型项目,复杂的业务逻辑,并发一般来说不如MySQL。
- MySQL:世界上最受欢迎的数据库,属于甲骨文,并发性好,不适合做复杂的业务。主要用在电
商,SNS,论坛。对简单的SQL处理效果好。 - PostgreSQL :加州大学伯克利分校计算机系开发的关系型数据库,不管是私用,商用,还是学术研
究使用,可以免费使用,修改和分发。 - SQLite: 是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库
中。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的
低,在嵌入式设备中,可能只需要几百K的内存就够了。 - H2: 是一个用Java开发的嵌入式数据库,它本身只是一个类库,可以直接嵌入到应用项目中。
数据库的类型
- 关系型数据库(Relational Database):
关系型数据库是最常见的数据库类型,数据以表格的形式存储,每个表由行和列组成。常用的 SQL 语言用于查询和管理数据。典型的例子包括 MySQL、Oracle、Microsoft SQL Server 和 PostgreSQL。 - 非关系型数据库(NoSQL Database):
非关系型数据库用于处理大规模、非结构化或半结构化数据。它们通常具有灵活的 schema 设计和水平扩展能力。常见的 NoSQL 数据库包括 MongoDB、Cassandra、Redis 和 DynamoDB。 - 对象关系型数据库(Object-Relational Database):
对象关系型数据库结合了关系型数据库和面向对象数据库的特点,支持对象的封装、继承和多态等特性。例如,PostgreSQL 就支持对象关系型特性。 - 层次型数据库(Hierarchical Database):
- 层次型数据库以树状结构组织数据,每个记录有一个父记录和多个子记录。典型的例子包括 IBM 的 IMS 系统。
- 网络型数据库(Network Database):
网络型数据库允许每个记录有多个父记录和多个子记录,形成更为复杂的网状结构。典型的例子包括 IDMS(Integrated Data Management System)。
数据库管理系统(DBMS)
数据库管理系统(Database Management System, DBMS)是用于创建、管理、维护和操作数据库的软件。DBMS 提供了用户与数据库交互的接口,支持数据的定义、查询、更新和管理。常见的 DBMS 包括:
- 关系型数据库管理系统(RDBMS):如 MySQL、Oracle、SQL Server、PostgreSQL。
- 非关系型数据库管理系统(NoSQL DBMS):如 MongoDB、Cassandra、Redis。
- 对象关系型数据库管理系统(ORDBMS):如 PostgreSQL。
- 层次型数据库管理系统:如 IBM IMS。
- 网络型数据库管理系统:如 IDMS。
数据库的应用
数据库广泛应用于各种领域,包括但不限于:
- 企业信息系统:管理客户关系、供应链、库存等。
- 电子商务:处理订单、支付、物流等。
- 金融系统:管理账户、交易、风险管理等。
- 医疗保健:存储患者记录、医疗影像等。
- 社交媒体:管理用户信息、动态、消息等。
- 物联网:收集和分析传感器数据。
3. 连接数据库
3.1 数据库的安装
保姆级安装教程
3.2 连接服务器(数据库)
-
命令:
mysql -h 8.148.27.113 -P 3306 -u root -p
说明:
-h:登录mysql的主机的地址
-P:mysql在该主机的端口号
-u:登录mysql的用户名称
-p:密码(我的mysql没有设置密码,不需要输入)
-
如果没有写 -h 127.0.0.1 默认是连接本地,如果没有写 -P 3306 默认是连接3306端口号,
在本地主机中有配置文件,可以直接去掉-h和-P命令:
mysql -u root -P
-
在mysql服务中退出mysql
命令:
quit
3.3 服务器 数据库 表 三者的关系
- 所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多
个数据库,一般开发人员会针对每一个应用创建一个数据库。 - 为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。
数据库服务器、数据库和表的关系如下:
表是数据逻辑存储结构:行列式结构(二维)
4. 数据库-表 和目录-文件 的关系
使用mysql建立一个数据库,在数据库中建立一张表结构,插入一些数据 ------ 对比一下mysql在linux中是如何表现的
-
先查询数据库存储在哪个目录
命令:
vim /etc/my.cnf
我的数据的数据库存储在/var/lib/mysql 目录中 -
进入到该目录
命令:cd /var/lib/mysql
查看数据库文件,命令:ls
标记的就是当前的数据库 -
进入mysql客户端,在mysql中查询数据库
命令:
show databases;
-
观察
同学们可以观察到 Linux 中标记的目录就是当前 mysql 的数据库的名称 -
此时我在创建一个study_1 数据库,然后再进入到 /var/lib/mysql 目录并打开,可以看看发生了什么
所以,我们在mysql中新建的数据库其实就是在linux中新建一个目录。 -
我们打开这个数据库的目录
-
在mysql的study_1数据库中创建一个表后再次打开数据库目录
在mysql的study_1数据库中创建一个表test(不用管命令是什么意思,我们证明的是数据库中的数据是文件)(1)创建一个表格
(2)再打开目录后发现有新文件产生
-
我们还可以查看文件的大小
命令:
ls -l study_1
记住此时文件的大小(标记处是文件的大小)
-
在表中插入数据
-
再次查看文件的大小
命令:
ls -l study_1
我们发现,文件的大小没有改变;但并不是没有数据,而是mysql内部的优化造成的。其实,已经把数据存入文件中了。
总结:
-
建立数据库,本质是在linux中创建一个目录
-
在数据库中创建表,本质是在linux中创建对应的文件。
这个工作时谁做的呢?
答:mysqld 做的。/var/lib/mysql 中的文件不需要我们来操作,mysqld 自己去操作。
5. MySQL 框架
MySQL 是一个可移植的数据库,几乎能在当前所有的操作系统上运行,如 Unix/Linux、Windows、
Mac 和 Solaris。各种系统在底层实现方面各有不同,但是 MySQL 基本上能保证在各个平台上的物理体
系结构的一致性。
-
Client Connectors: 连接器层提供了多种语言的接口,例如 JDBC、ODBC、.NET、PHP、Python、Perl 和 C API,用于连接到 MySQL 服务器。应用程序可以通过这些接口发送查询请求,并接收响应结果。
-
MySQL Server: MySQL 服务器是整个系统的中心,负责处理来自客户端的各种请求。它由多个模块组成,如下所示:
- Services & utilities: 提供备份恢复、安全、复制和分区等功能的服务和实用工具。
- SQL Interface: 解析和执行 SQL 查询的接口。
- Connection Pool: 连接池管理、认证和安全性相关的功能。
- Parser: 分词器、语法分析器和语义分析器,用于解析 SQL 查询。
- Optimizer: 查询优化器,用于确定最佳查询执行计划。
- Caches: 包括全局缓存和引擎特定缓存,提高性能。
-
Pluggable Storage Engines: MySQL 支持可插拔式存储引擎,每个引擎都有自己的特性。MyISAM 是一个非事务性引擎,适用于读取密集型应用;InnoDB 则是一个事务性引擎,支持 ACID 事务和外键约束;Federated 引擎将多个 MySQL 实例链接在一起;Archive 引擎适合存储大量数据而不需要频繁更新的应用;Merge 引擎用于合并多个 MyISAM 表;Memory 引擎将数据存储在内存中,速度非常快;Cluster 引擎用于分布式环境;Example 引擎是一个示例引擎,用于演示目的。
-
- File System: MySQL 使用底层文件系统(如 NTFS、ext4、SAN 或 NAS)来存储数据和日志文件。
- Logs and Files: MySQL 产生的各种日志文件,包括二进制日志(记录所有更改)、错误日志、慢查询日志、一般查询日志、重做日志、回滚日志以及数据和索引文件。
总这张图清晰地展示了 MySQL 服务器如何处理客户端请求,以及不同组件之间的交互关系。客户端通过连接器发送 SQL 请求给 MySQL 服务器,服务器解析请求、优化查询、访问存储引擎并最终将结果返回给客户端。同时,MySQL 也利用缓存、索引和日志机制来提升性能和可靠性。
6. SQL 分类
-
DDL【data definition language】 数据定义语言,用来维护存储数据的结构
代表指令: create, drop, alter -
DML【data manipulation language】 数据操纵语言,用来对数据进行操作
代表指令: insert,delete,update -
DML中又单独分了一个DQL,数据查询语言,代表指令: select
-
DCL【Data Control Language】 数据控制语言,主要负责权限管理和事务
代表指令: grant,revoke,commit
7. 储存引擎
存储引擎是:数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术
的实现方法。
MySQL的核心就是插件式存储引擎,支持多种存储引擎。
查看存储引擎:
show engines
在Linux中,设置默认存储引擎
命令:vim /etc/my.cnf
我设置的默认存储引擎。
相关文章:

【MySQL 保姆级教学】数据库基础(重点)(2)
目录 1. 什么是数据库1.1 数据库的定义1.2 mysql 和 mysqld1.3 文件和数据库 2. 数据库的分类3. 连接数据库3.1 数据库的安装3.2 连接服务器(数据库)3.3 服务器 数据库 表 三者的关系 4. 数据库-表 和目录-文件 的关系5. MySQL 框架6. SQL 分类7. 储存引…...

Nginx从入门到实战(八):版本平滑无感知,不停机升级
一、查看旧版本信息 可以通过nginx -V命令,来查看当前nginx的版本信息,和配置参数。 [rootnb001 sbin]# nginx -V -bash: nginx: command not found [rootnb001 sbin]# ./nginx -V nginx version: nginx/1.20.1 built by gcc 4.8.5 20150623 (Red Hat …...

jQuery 用户登录页面非空校验与登录测试
文章目录 实战介绍准备工作创建网页导入样式表和jQuery库编写页面代码编写脚本代码创建成功页面浏览网页和测试结束语 实战介绍 大家好,今天我们将一起学习如何使用jQuery来为用户登录页面进行非空校验和登录测试。通过这个实战项目,你将学会如何通过jQ…...

《Linux从小白到高手》综合应用篇:深入理解Linux进程调优
本篇深入介绍Linux进程调优. 1. Linux系统进程类型: Linux的进程可能有成千上万个: 新建状态:进程刚刚被创建,但尚未运行。 就绪状态:进程已经准备好运行,等待CPU分配。 运行状态࿱…...

Linux安装elasticsearch单机版
下载地址: Download Elasticsearch | Elastic 下载的安装包是elasticsearch-7.12.0-linux-x86_64.tar.gz 解压缩文件 tar -zxvf elasticsearch-7.12.0-linux-x86_64.tar.gz #编辑文件 vim config/elasticsearch.yml# 加入如下配置 # 集群名称,一个…...

el-table表头加红色星标
代码: <el-table-column prop"name" label"姓名" width"auto"><template #header><span style"color: red; margin-right: 4px">*</span><span>姓名</span></template></el…...

2.1 HTML5 - Canvas标签
文章目录 引言Canvas标签概述定义实例:创建画布 理解Canvas坐标系概述实例:获取Canvas坐标 获取Canvas环境上下文概述实例:获取Canvas环境上下文设置渐变色效果 结语 引言 大家好,今天我们要一起探索HTML5中一个非常有趣且强大的…...

T-Box联网安全定义
T-Box,即Telematics BOX,也称远程信息处理控制单元(Telematics Control Unit,TCU),是车联网中的重要组成部分。它集成了GPS、外部通信接口、电子处理单元、微控制器、移动通信单元和存储器等功能模块&#…...

7. 整数反转【数学】
文章目录 7. 整数反转解题思路Go代码 7. 整数反转 7. 整数反转 给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [ − 2 31 , 2 31 − 1 ] [−2^{31}, 2^{31} − 1] [−231,231−1] ࿰…...
Windows环境NodeJS下载配置安装运行
Windows环境NodeJS下载配置安装运行 (1)下载 Node.js — Run JavaScript Everywhere 安装文件。 一路傻瓜式安装。 如果安装正常,输入命令可显示版本号: (2)可以查询nodejs默认的后续依赖安装包位置及缓存…...

石化巡检必备神器,AORO A30防爆手机让“跑冒滴漏”无处藏身!
在石油化工企业生产现场,设备种类繁多,巡检项目错综复杂,任何微小的疏忽都可能引发严重的安全事故。遨游通讯推出了AORO A30防爆手机,精准定位细微故障,在源头上有效控制或消除“跑冒滴漏”等安全隐患。 AORO A30防爆手…...

Smartfusion2开发环境的搭建
Libero软件安装包括libero安装、bibero补丁安装、bibero的license添加和官方ip库的添加等4部分内容组成。具体内容如下所示: 1 Libero软件安装 1、解压LiberoSoC_v11.8的安装包到当前目录,然后运行Libero中的可执行软件进行安装; 图1 双击l…...

使用C++编写一个语音播报时钟(Qt)
要求:当系统时间达到输入的时间时,语音播报对话框中的内容。定时可以取消。qt界面如上图所示。组件如下: countdownEdit作为书写目标时间的line_edit start_btn作为开始和停止的按钮 stop_btn作为取消的按钮 systimelab显示系统时间的lab tex…...

架构师之路-学渣到学霸历程-11
权限管理 我们可以通过一下命令来了解Linux的用户权限; Linux的用户权限真的涉及得非常好,让我们了解一下用户权限的知识吧; let’s go go go~! chmod命令: 作用:变更文件或者目录的权限语法:…...

Java Mail腾讯企业邮箱或其他邮箱发送邮件失败bug记录
问题出现情况 邮件发送时debug用F8逐步运行可以成功发送邮件,但是用F9或者直接运行程序却发送失败未开启mail的debug模式的报错日志是下面这个:org.springframework.mail.MailAuthenticationException: Authentication failed; nested exception is java…...

【大数据】HBase集群断电文件坏块导致集群无法启动处理
hfile文件有坏块 Corrupt文件目录:/hbase/data/… HBase异常:region无法在正常上线,http://master:16010页面看region 一直处于transition状态 wal文件损坏 Corrupt文件目录:/hbase/oldWALs/…或/hbase/WALs/… HBase异常&…...

400行程序写一个实时操作系统(三):Sparrow的学习方法
千里之行始于足下,为了让大家的学习更加事半功倍,笔者将会介绍RTOS的学习方法。 可能很多人拿到一份源码,就想通过各种方式搞懂它,例如抄代码或者读代码。 笔者认为,单纯抄一个实时操作系统是没有任何用处的。比如对…...

为什么人工智能用 Python?
人工智能领域倾向于使用Python,主要归因于Python的多个显著优势: 简洁性与可读性:Python的语法设计简洁明了,代码易于阅读和理解,这对于涉及复杂算法和逻辑的人工智能项目尤为重要。它降低了编程门槛,使得…...

【C++差分数组】P1672何时运输的饲料
本文涉及知识点 C差分数组 C算法:前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 P1672何时运输的饲料 原文比较啰嗦,我简述一下: 第x天运来F1(1<F1<1e6)千克的饲料,第D(1<2e3)天还剩F2&…...

Go基础知识:切片
数组 Go 数组的大小是固定的,其长度是其类型的一部分([4]int并且[5]int是不同的、不兼容的类型) var a [10]intb : [2]string{"Penn", "Teller"} b : [...]string{"Penn", "Teller"}package maini…...

Redis配置篇 - 指定Redis配置的三种方式,以及Redis配置文件介绍
文章目录 1 指定Redis配置的三种方式1.1 通过命令行参数来指定Redis配置1.2 通过配置文件来指定Redis配置1.3 在服务器运行时更改 Redis 配置 2 关于Redis配置文件 1 指定Redis配置的三种方式 1.1 通过命令行参数来指定Redis配置 在redis启动时,可以直接通过命…...

探索scikit-learn的datasets模块:数据集的加载与使用
引言 在机器学习和数据分析领域,数据集的选择和准备是至关重要的一步。scikit-learn库的datasets模块为我们提供了多种内置的数据集,方便我们进行模型训练和测试。这些数据集既有大型的数据集,也有便于教学和初步探索的小型数据集。本文将重…...

手机使用技巧:8 个 Android 锁屏移除工具 [解锁 Android]
有时候,您会被锁定在自己的 Android 设备之外,而且似乎不可能重新进入。 一个例子就是你买了一部二手手机,后来发现无法使用。另一种情况是你忘记了屏幕锁定密码和用于验证密码的 Google 帐户凭据。这种情况很少见,但确实会发生&…...

SSL 协议(HTTPS 协议的关键)
所谓的协议 协议只是一种规则,你不按规则来就无法和目标方进行你的工作 协议说白了只是人定的规则,任何人都可以定协议 我们不需要太了解细节,这些是制定和完善协议的人去做的,我们只需要知道协议的一个大概 一、SSL 协议 1、…...

test_2_27(C指针)
test_2_27 #define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>使用指针数组来模拟实现二维数组int main() {int* arr[10];//指针数组int arr1[] { 1,2,3,4,5 };int arr2[] { 2,3,4,5,6 };int arr3[] { 3,4,5,6,7 };int* arr[3] {arr1, arr2, arr3};int i 0;for …...

设计模式——门面模式 | 外观模式
哈喽,各位盆友们!我是你们亲爱的学徒小z,今天给大家分享的文章是设计模式的——门面模式。 文章目录 定义通用类图1.通用结构2.优点3.缺点 使用场景注意事项1.一个子系统可以有多个门面2.门面不参与子系统内的业务逻辑 定义 定义:…...

FPGA时序分析和约束学习笔记(1、FPGA基本原理)
FPGA时序分析和约束学习笔记-(1、FPGA基本原理) Field现场Programmable可编程Gate门Array阵列 1、FPGA基本资源组成 可编程逻辑功能块(logic elements ,缩写LE) 片内互联线(interconnect,缩写…...

VMware桥接模式无法连接网络
windows下打开控制面板,找到WLAN,记住下面的名称(带有VMware的都是虚拟机的网卡,要找到物理主机的网卡) 回到VMware,编辑——打开虚拟网络编辑器 桥接选择上面的WLAN下的网络名称,确定即可。&…...

YOLO11改进|卷积篇|引入空间通道重组卷积ScConv
目录 一、【SCConv】卷积1.1【SCConv】卷积介绍1.2【SCConv】核心代码 二、添加【SCConv】卷积2.1STEP12.2STEP22.3STEP32.4STEP4 三、yaml文件与运行3.1yaml文件3.2运行成功截图 一、【SCConv】卷积 1.1【SCConv】卷积介绍 SCConv 模块提供了一种新的视角来看待CNNs的特征提取…...

Java:方法详解
目录 一.什么是方法(method) 二.方法定义 三.方法中实参和形参的关系 四.方法重载 五.递归 一.什么是方法(method) 方法就是一个代码片段,再C语言中我们曾经学过一个类似的方式——函数,他们都是将具有独立功能的代码组织成一个整体,形成…...