【mysql】—— 数据库基础

news2024/9/23 15:33:25

序言:

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

 


目录

(一)登陆选项 

(二)基本介绍

1、什么是数据库

2、主流数据库

3、见一见数据库

4、服务器管理

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

6、数据逻辑存储

(三)MySQL架构 

(四)SQL分类

(五)存储引擎

1 、存储引擎

2、 查看存储引擎

3 、存储引擎对比

总结


(一)登陆选项 

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

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

  • 对于 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的分类。

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

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

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

相关文章

使用matplotlib画图时,建立双坐标轴

在进行数据的可视化分析时,可能我们分析的两个指标,他们的取值区间相差很大,如果采用一个y轴,就不利于我们观察另一个指标。所以,记录一下我在项目的处理过程中采用的方法: 首先观察一下,我用到…

MAYA粒子碰撞颜色collisionU,collisionV

if (nParticleShape1.collisionU >0) { float $UnParticleShape1.collisionU; float $VnParticleShape1.collisionV; vector $colRGB colorAtPoint -o RGB -u $U -v $V ramp2; nParticleShape1.rgbPP $colRGB; } 获取 UV 向量处的颜色 vector $colRGB colorAtPoin…

【C51 介绍发光二极管LED】

51单片机项目基础篇 前篇:介绍发光二极管LED1、认识发光二极管LED1.1、二极管1.2、二极管的特性 2、LED简介3、结束语 前篇:介绍发光二极管LED 前言: (1).我们已经认识了 51 单片机芯片和 51 单片机最小系统。 (2).现在进入一些基础的实验阶…

23.07.09

完善对话框功能 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget) {ui->setupUi(this);// this->setWindowOpacity(0); } Widget::~Widget() {delete ui; } //字体对应的槽 voi…

常见的页面标签

一、基本标签 <p>段落标签</p> 换行且有空行 hn(1-6) 标题标签 <h1>一级标题</h1> <h2>二级标题</h2> <h3>三级标题</h3> ..... <br> <br /> <br/> 换…

3.8.使用cuda核函数加速yolov5后处理

目录 前言1. Yolov5后处理2. 后处理案例2.1 cpu_decode2.2 gpu_decode 总结 前言 杜老师推出的 tensorRT从零起步高性能部署 课程&#xff0c;之前有看过一遍&#xff0c;但是没有做笔记&#xff0c;很多东西也忘了。这次重新撸一遍&#xff0c;顺便记记笔记。 本次课程学习精简…

Zabbix自动报表功能

一、简介 从zabbix 5.4体验版本发布时提供了很多新特性&#xff0c;当然现在最新的Zabbix6.0 LTS版本的定时导出PDF报表功能相对稳定&#xff0c;但如果需要满足日常运维报表需求还是有一段比较长的路要走。总而言之相比以前版本此功能可谓是一大突破。可按照Dashboard维度&am…

计网之体系结构(一)

计网之体系结构&#xff08;一&#xff09; 计算机网络概述计算机网络的概念计算机网络的功能计算机网络的发展计算机网络发展第一阶段计算机网络发展第二阶段&#xff08;三级结构&#xff09;计算机网络发展第三阶段&#xff08;多层次ISP结构&#xff09; 概念&#xff0c;功…

Redis常用面试题

Redis为什么执行这么快&#xff1f; 1.基于内存存储实现。 我们都知道内存读写比在磁盘快很多的&#xff0c;Redis基于内存储存实现的数据。相对于数据库存在磁盘的MySql数据库&#xff0c;剩余磁盘I/O的消耗 2.redis是单线程模型的&#xff0c;而单线程避免了CPU不必要的上…

Python 导入引用其他文件的函数(不断更新)

文章目录 构造初始化文件结构&#xff0c;以此为例。【1】导入同目录且同级下其他文件的函数&#xff08;c.py文件导入d.py文件的函数&#xff09;&#xff08;1&#xff09;只引入d.py文件&#xff08;2&#xff09;直接引入函数&#xff08;3&#xff09;引入全部函数 【2】导…

抓包看TCP协议

抓包看TCP协议 前言一、三次握手1.1 为什么需要握手&#xff1f;1.2 为什么需要三次握手&#xff1f; 二、四次挥手2.1 为何需要挥手&#xff1f;2.2 为何需要四次挥手&#xff1f; 三、抓个包看看 后记参考 前言 在计算机的世界中&#xff0c;通信双方的交互一般要通过网络这个…

LVS负载均衡集群 keepalived

目录 1.实现方法 1.故障自动切换 (failover) 2.节点健康状态检查 (health checking) 2.实现LVS负载调度器 节点服务器的高可用(HA) 3.keepalived高可用故障切换原理 4.三个主要模块 5.案例 1.实现方法 1.故障自动切换 (failover) 主…

万字解析帮你深入理解MySQL!!!(事物、视图和索引)

今日金句 每一个不曾起舞的日子&#xff0c;都是对生命的辜负 文章目录 一、事物1.1 概述1.2 语法1.3 代码验证1.4 事务的四大特征1.5 事务并发问题1.5.1 四种隔离级别1.5.2 何为脏读&#xff0c;幻读&#xff0c;不可重复读&#xff1f; 二、视图2.1 概念2.2 视图与数据表的区…

pytest参数化的多种使用技巧

前言 unittest单元测试框架使用DDT进行数据驱动测试&#xff0c;那么身为功能更加强大且更加灵活的Pytest框架怎么可能没有数据驱动的概念呢&#xff1f;其实Pytest是使用pytest.mark.parametrize装饰器来实现数据驱动测试的&#xff0c;那么今天我们就简单来说说在它是如何进…

代码随想录算法训练营 个人总结

训练营周期&#xff1a;2023/5/10 - 7/8&#xff0c;共计60天 LeetCode记录&#xff1a; 参加训练营之前&#xff0c;就有想刷LeetCode的想法&#xff0c;一方便没有头绪地不知道按什么顺序刷题&#xff0c;另一方面也没有找到很好的讲解材料&#xff0c;都是自己看LeetCode页面…

Notepad++ - 只需一张图教你如何将字符串“\n”替换成换行

问题描述 今天在一个响应体日志返回换行在字符串中&#xff0c;没想到我输入 \n&#xff0c;原本是直接给我出换行效果&#xff0c;结果它也就给我返回 \n&#xff0c;那怎么分析日志啊&#xff1f;&#xff01; 解决方案 还得是万能的 Notepad&#xff0c;直接看图说话

协同过滤 springboot+vue基于java的个性化图书推荐系统_1k4p4

在飞速发展的信息时代&#xff0c;随着网络学习的的普及&#xff0c;大量的学习平台和大量的图书数量迅速膨胀&#xff0c;使得学生在进行网络学习时面临“数据爆炸”和“数据过载”的情况&#xff0c;无法寻找到适合自己的图书。在面对着越来越多的图书资源&#xff0c;如何快…

【开源软件治理】MITRE : 开源软件

定义&#xff1a; 开源软件&#xff08;OSS&#xff09;是一种商业软件&#xff0c;只需同意遵守附带的 OSS 许可证即可获得全部所有权&#xff0c;无需立即进行第三方验证。同意 OSS 许可证允许个人、公司或政府实体根据需要尽可能频繁和广泛地复制、分发和运行 OSS 应用程序&…

【Redis】秒杀业务设计、悲观锁与乐观锁

1 全局ID生成器 一些情境下&#xff0c;使用数据库的ID自增将会产生一些问题。 一方面&#xff0c;自增ID规律性明显&#xff0c;可能被猜测出来并产生一些漏洞另一方面&#xff0c;当数据量很大很大很大时&#xff0c;单表数据量可能会受到限制&#xff0c;需要分表&#xf…

【Linux指令集】---cp指令(超详细)

个人主页&#xff1a;平行线也会相交 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 平行线也会相交 原创 收录于专栏【Linux专栏】&#x1f388; 本专栏旨在分享学习Linux的一点学习心得&#xff0c;欢迎大家在评论区讨论&#x1f48c; 演示环境&#xff1…