当前位置: 首页 > news >正文

【MySQL 01】数据库基础

目录

1.数据库是什么

2.基本操作

数据库服务器连接操作

 数据库和数据库表的创建

 服务器,数据库,表关系

数据逻辑存储

3.MySQL架构 

 4.SQL分类

5.存储引擎


1.数据库是什么

mysql&&mysqld:

  • mysql这通常指的是 MySQL 的命令行客户端工具。它是用户与 MySQL 数据库服务器(mysqld)进行交互的一种方式。用户可以通过 mysql 客户端工具输入 SQL 语句来查询、更新、管理数据库中的数据。mysql 客户端通过 TCP/IP 网络协议(或其他支持的协议)与 MySQL 服务器(mysqld)进行通信。

  • mysqld这是 MySQL 数据库的服务端守护进程(daemon)。它负责处理来自客户端(如 mysql 命令行工具、图形界面客户端、应用程序等)的请求,执行 SQL 语句,并管理数据库文件的存取。mysqld 提供了数据库的核心功能,包括数据的存储、查询、索引、事务处理等。它是 MySQL 数据库系统的核心组成部分。

MySQL本质:

        MySQL本质:基于C(mysql)S(mysqld)模式的一种网络服务mysql是一套给用户提供数据存取的服务的网络程序数据库服务指的就是mysqld。

有文件为什么不用文件存储:

        一般文件确实提供了数据的存储功能,但是文件并没有提供非常好的数据内容的管理能力。(eg:比如我想在百万行的IP地址中,找出所有以127开头的IP地址,这种情况下,数据库只需要给出指定的命令就可以了,但是文件操作并没有这么方便)

数据库本质:

        数据库一般指的是,在磁盘或者内存中存储的特定结构组织的数据--将来在磁盘上存储的一套数据库方案。

        对数据内容存储的一套解决方案,用户给我字段或要求,数据库直接给你结果就可以。

        从物理层面来看,数据库确实也是以文件的形式存储在磁盘上的。数据库管理系统(如MySQL)提供了一套高级接口(如SQL语言),mysqld就会根据SQL语言,在数据库文件中给用户做增删查改,最后将结果返回给mysqld,mysqld再将结果交给用户

        数据库本质是文件。只不过 这些文件并不由程序员直接操作,而是由数据库服务帮我们进行操作的

2.基本操作


数据库服务器连接操作

登录指令:

  • -h [主机名或IP地址]:这个选项用来指定MySQL服务器的主机名或IP地址。如果您想连接到本地机器上的MySQL服务,可以省略这个选项(或者指定为127.0.0.1localhost)。

  • -P [端口号]:这个选项允许您指定MySQL服务器监听的端口号。MySQL的默认端口号是3306,如果您使用的是默认端口号,也可以省略这个选项。

  • -u [用户名]:这个选项用来指定登录MySQL服务器的用户名。如果不指定,通常会尝试以root用户身份登录。但出于安全考虑,推荐使用具有适当权限的特定用户进行连接。

  • -p:这个选项告诉mysql命令在连接时需要密码。注意,-p选项后面不需要立即跟密码,因为系统会提示您输入密码以确保密码的安全性。

mysql -h 192.168.1.100 -P 3306 -u myuser -p

 数据库和数据库表的创建

在ubuntu环境下查看配置文件:

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

        其中有一行:datadir = /var/lib/mysql 表示MySQL的数据库文件被存储在 /var/lib/mysql 这个目录下。

        以下工作由mysql客服端让mysqld服务端做的。

1.创建数据库:

create database 数据库名;

2.列出MySQL服务器中所有的数据库。

show databases;

这就可以看到我们刚刚创建的数据库了。

在该路径下也确实新增了 hellosql数据库的目录。

所以建立数据库,本质就是建立Linux下的一个目录。

3.使用指定的数据库

use 数据库名;

就是用刚才的数据库

4.在数据库内创建表

create table 表名(字段1 字段1类型);

        这样我们就创建好了一张表,我们可以进入hellosql目录下进行查看:所以在数据库内建立表,本质就是在Linux下创建对应的文件即可。

5.往数据库中插入数据

insert into 表名(字段名) values(值);

6.查询表中所有数据

select * from 表名;

 服务器,数据库,表关系

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

数据逻辑存储

        在关系型数据库中,数据以表的形式进行组织。每个表由一系列定义好的列组成,每列代表特定类型的数据,每行则包含了一条记录,代表着一组相关数据。


3.MySQL架构 

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

MySQL架构大致分为以下三层:

1. 连接层

  • 功能:处理客户端与服务器之间的连接、认证和通信。
  • 关键组件:连接管理器、认证模块、SSL加密。

2. 查询层

  • 功能:解析SQL查询,优化查询计划,并调用存储引擎执行查询。
  • 关键组件:SQL解析器、查询优化器(不再包括已废弃的查询缓存)。

3. 存储引擎层

  • 功能:负责数据的存储、索引和检索。
  • 特点:插件式架构,支持多种存储引擎(如InnoDB、MyISAM、Memory等),每种引擎有其特定的功能和性能特点。

 4.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

5.存储引擎

        存储引擎是:数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。MySQL的核心就是插件式存储引擎,支持多种存储引擎
 

查看存储引擎:

常见存储引擎对比:

最常用的就是以下两种;

1. InnoDB

特点

  • 事务支持:支持ACID事务模型,具有提交、回滚和崩溃恢复能力。
  • 数据一致性:通过MVCC(多版本并发控制)和行级锁定,保证数据的一致性。
  • 外键支持:支持外键约束,有助于维护数据的完整性。
  • 存储方式:使用聚簇索引存储数据,表数据直接存储在主键的B+树叶节点上。

优势

  • 高可靠性和高并发性能。
  • 适用于需要事务支持和复杂查询的应用场景。

适用场景

  • 大多数应用程序场景,尤其是需要处理大量并发访问和复杂数据操作的应用。

2. MyISAM

特点

  • 非事务型:不支持事务处理。
  • 表级锁定:使用表级锁定,并发性能相对较差。
  • 全文索引:支持全文索引,适用于文本搜索。
  • 存储方式:表数据和索引分开存储,索引文件包含指向数据文件中记录的指针。

优势

  • 读取速度较快(主要指读操作),特别是全表扫描。
  • 适用于读密集型的应用场景。

相关文章:

【MySQL 01】数据库基础

目录 1.数据库是什么 2.基本操作 数据库服务器连接操作 数据库和数据库表的创建 服务器,数据库,表关系 数据逻辑存储 3.MySQL架构 4.SQL分类 5.存储引擎 1.数据库是什么 mysql&&mysqld: mysql:这通常指的是 MySQL …...

C语言字符学习中级使用库解决问题

学习C语言中的字符处理,对于初学者来说,理解字符的基本概念以及如何进行操作是非常重要的。字符处理是指对单个字符或一组字符(字符串)的操作。为了更好地理解,下面从基础开始介绍,并结合一些常用的函数和示…...

网络管理:网络故障排查指南

在现代IT环境中,网络故障是不可避免的。快速、有效地排查和解决网络故障是确保业务连续性和用户满意度的关键。本文将详细介绍网络故障排查的基本方法和步骤,确保内容通俗易懂,并配以代码示例和必要的图片说明。 一、网络故障排查的基本步骤 确认故障现象 确认用户报告的故…...

Springboot常见问题(bean找不到)

如图错误显示userMapper bean没有找到。 解决方案: mapper包位置有问题:因为SpringBoot默认的包扫描机制会扫描启动类所在的包同级文件和子包下的文件。注解问题: 比如没有加mapper注解 然而无论是UserMapper所在的包位置还是Mapper注解都是…...

架构设计笔记-5-软件工程基础知识

知识要点 按软件过程活动,将软件工具分为软件开发工具、软件维护工具、软件管理和软件支持工具。 软件开发工具:需求分析工具、设计工具、编码与排错工具。 软件维护工具:版本控制工具、文档分析工具、开发信息库工具、逆向工程工具、再工…...

Solidity——抽象合约和接口详解

🚀本系列文章为个人学习笔记,目的是巩固知识并记录我的学习过程及理解。文笔和排版可能拙劣,望见谅。 Solidity中的抽象合约和接口详解 目录 什么是抽象合约?抽象合约的语法接口(Interface)的定义接口的语…...

Fyne ( go跨平台GUI )中文文档-入门(一)

本文档注意参考官网(developer.fyne.io/) 编写, 只保留基本用法go代码展示为Go 1.16 及更高版本, ide为goland2021.2 这是一个系列文章: Fyne ( go跨平台GUI )中文文档-入门(一)-CSDN博客 Fyne ( go跨平台GUI )中文文档-Fyne总览(二)-CSDN博客 Fyne ( go跨平台GUI )…...

Google 扩展 Chrome 安全和隐私功能

过去一周,谷歌一直在推出新特性和功能,旨在让用户在 Chrome 上的桌面体验更加安全,最新的举措是扩展在多个设备上保存密钥的功能。 到目前为止,Chrome 网络用户只能将密钥保存到 Android 上的 Google 密码管理器,然后…...

css 缩放会变动的需要使用转换

position: fixed;top: 170px;left: 50%;transform: translate(-50%, -50%);...

(17)数据库neo4j数据备份

图数据库备份 假设图数据库安装位置:/root/shuzihua/neo4j-community-3.5.8 1.数据导出 进入/root/shuzihua/neo4j-community-3.5.8/bin目录;执行 neo4j stop 停止服务;/root/shuzihua/neo4j-community-3.5.8/data/databases/graph.db&#…...

从零开始学习Python

目录 从零开始学习Python 引言 环境搭建 安装Python解释器 选择IDE 基础语法 注释 变量和数据类型 变量命名规则 数据类型 运算符 算术运算符 比较运算符 逻辑运算符 输入和输出 控制流 条件语句 循环语句 for循环 while循环 循环控制语句 函数和模块 定…...

前端框架的对比和选择

在当今的前端开发领域,有多种流行的前端框架可供选择,如 Vue、React 和 Angular。以下是这些框架的对比以及 Vue 的优势: 一、React 特点: 声明式编程:使用 JSX 语法,使得组件的结构和行为更加清晰。虚拟…...

《机器学习》周志华-CH7(贝叶斯分类)

7.1贝叶斯决策论 对分类任务而言,在所有相关概率已知的理想情形下,贝叶斯决策论考虑如何基于这些概率核误判损失来选择最优的类别标记。 R ( x i ∣ x ) ∑ j 1 N λ i j P ( c j ∣ x ) \begin{equation} R(x_{i}|x)\sum_{j1}^{N}\lambda_{ij}P(c_{j}…...

【C/C++】错题记录(一)

题目一 这道题主要考查了用户对标准库函数的使用规则的理解。 选项 A,一般情况下用户调用标准库函数前不需要重新定义,该项说法错误。 选项 B,即使包含了标准库头文件及相关命名空间,也不允许用户重新定义标准库函数&#xff0c…...

【代码随想录训练营第42期 Day60打卡 - 图论Part10 - Bellman_ford算法系列运用

目录 一、Bellman_ford算法的应用 二、题目与题解 题目一:卡码网 94. 城市间货物运输 I 题目链接 题解:队列优化Bellman-Ford算法(SPFA) 题目二:卡码网 95. 城市间货物运输 II 题目链接 题解: 队列优…...

vue复制信息到粘贴框

npm install vue-clipboard2main.js文件引入 import VueClipboard from vue-clipboard2 Vue.use(VueClipboard)页面应用 copyInfo(info){let that thislet copyData 项目名称:${info.projectName}\n 用户名:${info.username}\n 初始密码:${…...

STM32基础笔记

第一章、STM32基本介绍 总内容 计算机技术简介环境安装、项目流程搭建最小系统时钟系统启动相关:启动文件、启动流程、启动方式GPIOUSARTNVIC: 外部中断_串口中断( DMA )TIMERADCDHT11: 单总线协议SPI : LCD屏 ## **1、计算机技术简介** 1.通用计算机/专用计算机…...

【深入学习Redis丨第六篇】Redis哨兵模式与操作详解

〇、前言 哨兵是一个分布式系统,你可以在一个架构中运行多个哨兵进程,这些进程使用流言协议来接收关于Master主服务器是否下线的信息,并使用投票协议来决定是否执行自动故障迁移,以及选择哪个Slave作为新的Master。 文章目录 〇、…...

开源项目 GAN 漫画风格化 UGATIT

开源项目:DataBall / UGATIT GitCode * 数据集 * [该项目制作的训练集的数据集下载地址(百度网盘 Password: gxl1 )](https://pan.baidu.com/s/1683TRcv3r3o7jSitq3VyYA) * 预训练模型 * [预训练模型下载地址(百度网盘 Password: khbg )](https://pan.ba…...

SegFormer网络结构的学习和重构

因为太多的博客并没有深入理解,本文是自己学习后加入自己深入理解的总结记录,方便自己以后查看。 segformer中encoder、decoder的详解。 学习前言 一起来学习Segformer的原理,如果有用的话,请记得点赞关注哦。 一、Segformer的网络结构图 网络结构&…...

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

Docker 离线安装指南

参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

通过Wrangler CLI在worker中创建数据库和表

官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...

ESP32读取DHT11温湿度数据

芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

Java - Mysql数据类型对应

Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验

系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

【C语言练习】080. 使用C语言实现简单的数据库操作

080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

Element Plus 表单(el-form)中关于正整数输入的校验规则

目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入&#xff08;联动&#xff09;2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...