【mysql】—— 数据库基础

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 【mysql】—— 数据库基础

序言:

在上期,我们已经安装好了【mysql】。在本期,我将给大家介绍关于数据库的基本知识。

 


(一)登陆选项

首先要连接数据库,你需要使用相应的数据库管理系统提供的连接工具或者编程语言的库来进行连接。

下面我将介绍常见的使用命令行连接数据库的方式:

  • 对于 MySQL 数据库,你可以使用以下命令连接到本地 MySQL 服务器:
mysql -h 主机名 -P 端口号 -u 用户名 -p

【分析】

  1. 主机名是数据库所在的主机IP地址或域名;
  2. 端口号是数据库服务监听的端口(默认为3306);
  3. 用户名是数据库用户名;
  4. -p 参数会提示输入密码

例如,当我想连接数据库时,可以进行以下操作:

mysql -h 127.0.0.1 -P 3306 -u root -p
  • 输出如下:

 

 【分析】

  • mysql:这是 MySQL 命令行工具的名称,用于与 MySQL 数据库进行交互
  • -h 127.0.0.1】:这是指定连接主机的参数。127.0.0.1 表示本地主机(即连接到本地计算机上的 MySQL 服务器)
  • -P3306:这是指定连接端口的参数。3306 是 MySQL 默认的端口号
  • -uroot:这是指定要使用的用户名的参数。root 是 MySQL 中的超级用户,默认拥有所有权限
  • -p:这是提示输入密码的参数。在输入该命令后,系统将要求输入密码以验证用户身份。

通过执行这个命令,将能够使用 MySQL 命令行工具连接到本地的 MySQL 服务器,并使用超级用户 "root" 进行身份验证。一旦成功连接,你可以在命令行工具中输入和执行各种 SQL 查询和命令。

【注意】

  1. 如果没有写 -h 127.0.0.1 默认是连接本地
  2. 如果没有写 -P 3306 默认是连接3306端口号

此外,因此之前我已经对mysql进行了配置,所以在登陆的时候可以像如下这样:

 


(二)基本介绍

1、什么是数据库

在之前,不管是安装还是连接mysql的时候,会发现一个问题:

  • 在我们连接的时候使用的是—— mysql;
  • 未来在启动服务的时候使用的是——mysqld;

那么上述这两个到底是什么东西呢?接下来,我给大家进行解释说明:

【分析】

  • mysql:它是数据库服务的客户端。对于上述【which mysql】 中的 “mysql”,其实并不是真正的mysql,而是mysql的客户端。
  • mysqld:它是数据库服务的服务器端。凡是一个可执行程序末尾带【d】的,说明这个mysql本身就是一个网络服务,而这个mysqld 就是这个网络服务的后端;
  • mysql的本质:基于C(mysql)S(mysqld)模式的一种网络服务。

因此,我们现在已经知道mysql是一个网络服务。此时,我们就可以查出对应的端口号:

netstat -lntp】是一个用于显示网络连接、路由表和网络接口统计信息的命令。

下面对该命令的参数进行详细解释:

  • -l: 仅显示监听状态的连接。
  • -n: 以数字形式显示 IP 地址和端口号,而不进行反向域名解析。这样可以提高命令执行的速度。
  • -t: 仅显示 TCP 协议相关的连接。
  • -p: 显示与每个连接关联的进程 ID(PID)和程序名称。

执行【netstat -lntp】 命令后,会列出所有正在监听状态的 TCP 连接,并显示它们的相关信息,包括本地地址、外部地址、端口号、状态(LISTENING)、PID 和程序名称。

例如,以下是 【netstat -lntp】命令的示例输出:

【分析】

上述输出显示了三个正在监听的 TCP 连接。

  • 第一行表示有一个进程使用 PID 为 1029的程序 sshd 监听在本地地址的 22 端口上;
  • 第二行表示一个进程使用 PID 为 10623的程序 postgres 监听IPv6 地址的 3306 端口上;
  • 第三行表示一个进程使用 PID 为 1029的程序 sshd 监听在IPv6 地址的 22 端口上。

此命令对于诊断网络问题和查看正在监听的端口非常有用,可以帮助我们了解系统中哪些服务正在运行并侦听连接。

有了以上的知识,接下来我们就聊聊什么是 “数据库”:

首先就是存储数据用文件就可以了,为什么还要弄个数据库?

1、其实一般文件只提供数据额存储功能,但是文件并没有提供非常好的数据管理能力(从用户角度)

2、其次,文件保存数据有以下几个缺点:

  1. 文件的安全性问题
  2. 文件不利于数据查询和管理
  3. 文件不利于存储海量数据
  4. 文件在程序中控制不方便

 

因此,使用数据库相比简单的文件存储方式有以下优势:

  1. 数据结构化:数据库可以提供数据的结构化存储,使得数据的组织和管理更加方便。你可以定义表格、列和数据类型等,确保数据的一致性和完整性。
  2. 高效查询:数据库提供了强大的查询功能,可以根据特定条件快速检索和过滤数据。通过索引和优化算法,可以提高数据的查询效率,对大规模数据进行高效处理。
  3. 并发处理:数据库具备并发处理能力,可以同时支持多个用户对数据进行读写操作,避免了数据冲突和资源竞争的问题。
  4. 安全性和权限控制:数据库可以提供安全的访问控制机制,只允许授权用户访问和修改数据。你可以设置用户权限、加密数据、备份和恢复数据等安全策略,保护数据的机密性和完整性。
  5. 扩展性和可靠性:数据库系统通常具备良好的扩展性和可靠性。数据库提供了备份和恢复机制,可以防止数据丢失和系统故障。

当数据量较大、复杂查询需求较多、并发访问较频繁、数据安全性要求较高或者需要长期保持数据的可靠性和持久性时,使用数据库会更加合适。但如果数据量较小、查询需求简单、并发访问少且不需要强大的安全和扩展性,简单的文件存储方式也可以满足要求。需要根据实际情况综合考虑使用何种存储方式。

 

2、主流数据库

SQL Sever: 微软的产品,.Net程序员的最爱,中大型项目。

Oracle: 甲骨文产品,适合大型项目,复杂的业务逻辑,并发一般来说不如MySQL。

MySQL:世界上最受欢迎的数据库,属于甲骨文,并发性好,不适合做复杂的业务。主要用在电 商,SNS,论坛。对简单的SQL处理效果好。

PostgreSQL :加州大学伯克利分校计算机系开发的关系型数据库,不管是私用,商用,还是学术研 究使用,可以免费使用,修改和分发。

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

H2: 是一个用Java开发的嵌入式数据库,它本身只是一个类库,可以直接嵌入到应用项目中。


3、见一见数据库

上述,我已经对数据库进行了介绍。接下来,我带大家以样例具体的见一见:

  • 👉 创建数据库 👈
create database helloworld;

输出展示:

  • 此时,我就成功的通过 mysql 客户端向 mysqld 服务端下达了一个创建数据库的请求

当我们再次【show databas;】时,可以发现多出了我们创建的数据库

而当我们到存放数据库文件的路径下去查看时,当我们创建了一个数据库之后,多出了一个【hello world】的目录:

  • 因此,我们不难得出一条结论:建立数据库本质就是在Linux下新建的一个目录
  • 👉 使用数据库 👈
use helloworld;
  • 告诉数据库系统将当前会话切换到名为 helloworld 的数据库中,以便后续的 SQL 查询和操作可以针对该数据库进行。

 

  • 👉 创建数据库表 👈

具体如下:

 

同时,我们也可以在我们相应的【helloworld】目录下查看到相关信息:

  • 👉 表中插入数据  👈

插入数据如下:

 

以上便是一个简单的创建数据库的样例。


4、服务器管理

在Windows下我们通过以下指令查看:

  1. 执行 win+r 输入 services.msc 打开服务管理器
  2. 通过下图左侧停止,暂停,重启动按钮进行服务管理

 

5、服务器,数据库,表关系

  1. 所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多 个数据库,一般开发人员会针对每一个应用创建一个数据库。
  2. 为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。
  3. 数据库服务器、数据库和表的关系如下:

6、数据逻辑存储

总体是按照行列式结果展开的:

 


(三)MySQL架构

 

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

 


(四)SQL分类

SQL可以根据其功能和用途进行分类。下面是一些常见的 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

(五)存储引擎

1 、存储引擎

存储引擎是:

  • 数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术 的实现方法。

💨 MySQL的核心就是插件式存储引擎,支持多种存储引擎。

2、 查看存储引擎

我们可以使用以下指令进行操作:

show engines;

输出如下:

3 、存储引擎对比

具体参照下图:


总结

到此,关于数据库的基础知识便讲解完毕了。接下来,我们简单的回顾一下本文都学了什么

本文主要讲解的大致可以分为三个类容:

  1. 首先就是介绍了数据库的基本知识。回答了什么是 “mysq” 和“ mysqld” ;
  2. 其次,我们讲述了mysql 数据库,表之前的关系;
  3. 最后,就是理解mysql 整体的结构。分为三层;以及SQL的分类。

以上便是本文的全部内容了,感谢各位的观看与支持!!!

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3天前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
13 3
|
3天前
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
19 3
|
3天前
|
SQL 关系型数据库 MySQL
数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog
《数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog》介绍了如何利用MySQL的二进制日志(Binlog)恢复误删除的数据。主要内容包括: 1. **启用二进制日志**:在`my.cnf`中配置`log-bin`并重启MySQL服务。 2. **查看二进制日志文件**:使用`SHOW VARIABLES LIKE 'log_%';`和`SHOW MASTER STATUS;`命令获取当前日志文件及位置。 3. **创建数据备份**:确保在恢复前已有备份,以防意外。 4. **导出二进制日志为SQL语句**:使用`mysqlbinlog`
23 2
|
17天前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
119 15
|
10天前
|
SQL 关系型数据库 MySQL
数据库数据恢复—Mysql数据库表记录丢失的数据恢复方案
Mysql数据库故障: Mysql数据库表记录丢失。 Mysql数据库故障表现: 1、Mysql数据库表中无任何数据或只有部分数据。 2、客户端无法查询到完整的信息。
|
17天前
|
关系型数据库 MySQL 数据库
数据库数据恢复—MYSQL数据库文件损坏的数据恢复案例
mysql数据库文件ibdata1、MYI、MYD损坏。 故障表现:1、数据库无法进行查询等操作;2、使用mysqlcheck和myisamchk无法修复数据库。
|
21天前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
|
29天前
|
关系型数据库 MySQL 数据库
GBase 数据库如何像MYSQL一样存放多行数据
GBase 数据库如何像MYSQL一样存放多行数据
|
1月前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
40 1
|
1月前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
62 4