序言:
在上期,我们已经安装好了【mysql】。在本期,我将给大家介绍关于数据库的基本知识。
(一)登陆选项
首先要连接数据库,你需要使用相应的数据库管理系统提供的连接工具或者编程语言的库来进行连接。
下面我将介绍常见的使用命令行连接数据库的方式:
- 对于 MySQL 数据库,你可以使用以下命令连接到本地 MySQL 服务器:
mysql -h 主机名 -P 端口号 -u 用户名 -p
【分析】
- 主机名是数据库所在的主机IP地址或域名;
- 端口号是数据库服务监听的端口(默认为3306);
- 用户名是数据库用户名;
- -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 服务器)-P 【3306】
:这是指定连接端口的参数。3306
是 MySQL 默认的端口号-u 【root】
:这是指定要使用的用户名的参数。root
是 MySQL 中的超级用户,默认拥有所有权限-p
:这是提示输入密码的参数。在输入该命令后,系统将要求输入密码以验证用户身份。
通过执行这个命令,将能够使用 MySQL 命令行工具连接到本地的 MySQL 服务器,并使用超级用户 "root" 进行身份验证。一旦成功连接,你可以在命令行工具中输入和执行各种 SQL 查询和命令。
【注意】
- 如果没有写 -h 127.0.0.1 默认是连接本地
- 如果没有写 -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、其次,文件保存数据有以下几个缺点:
- 文件的安全性问题
- 文件不利于数据查询和管理
- 文件不利于存储海量数据
- 文件在程序中控制不方便
因此,使用数据库相比简单的文件存储方式有以下优势:
- 数据结构化:数据库可以提供数据的结构化存储,使得数据的组织和管理更加方便。你可以定义表格、列和数据类型等,确保数据的一致性和完整性。
- 高效查询:数据库提供了强大的查询功能,可以根据特定条件快速检索和过滤数据。通过索引和优化算法,可以提高数据的查询效率,对大规模数据进行高效处理。
- 并发处理:数据库具备并发处理能力,可以同时支持多个用户对数据进行读写操作,避免了数据冲突和资源竞争的问题。
- 安全性和权限控制:数据库可以提供安全的访问控制机制,只允许授权用户访问和修改数据。你可以设置用户权限、加密数据、备份和恢复数据等安全策略,保护数据的机密性和完整性。
- 扩展性和可靠性:数据库系统通常具备良好的扩展性和可靠性。数据库提供了备份和恢复机制,可以防止数据丢失和系统故障。
当数据量较大、复杂查询需求较多、并发访问较频繁、数据安全性要求较高或者需要长期保持数据的可靠性和持久性时,使用数据库会更加合适。但如果数据量较小、查询需求简单、并发访问少且不需要强大的安全和扩展性,简单的文件存储方式也可以满足要求。需要根据实际情况综合考虑使用何种存储方式。
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下我们通过以下指令查看:
- 执行 win+r 输入 services.msc 打开服务管理器
- 通过下图左侧停止,暂停,重启动按钮进行服务管理
5、服务器,数据库,表关系
- 所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多 个数据库,一般开发人员会针对每一个应用创建一个数据库。
- 为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。
- 数据库服务器、数据库和表的关系如下:
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 、存储引擎对比
具体参照下图:
总结
到此,关于数据库的基础知识便讲解完毕了。接下来,我们简单的回顾一下本文都学了什么
本文主要讲解的大致可以分为三个类容:
- 首先就是介绍了数据库的基本知识。回答了什么是 “mysq” 和“ mysqld” ;
- 其次,我们讲述了mysql 数据库,表之前的关系;
- 最后,就是理解mysql 整体的结构。分为三层;以及SQL的分类。
以上便是本文的全部内容了,感谢各位的观看与支持!!!