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

MySQL —— 数据库基础

文章目录

    • 1. centos7 安装Mysql
    • 2. 数据库的概念
    • 3. 数据库下创建库,表
    • 4. 库,表 的本质
    • 5. 数据库服务器 和 库 ,表的关系
    • 6. MySQL架构
    • 7. 存储引擎

前言: 数据库是对数据进行管理的软件。

1. centos7 安装Mysql

  1. 需要把系统自带的MySQL给删除掉:

(1) ps ajx |grep mariadb 这可以查询,你系统原有的mysql的运行情况:
在这里插入图片描述
(2) systemctl stop mariadb.service,停止mysql服务的运行
(3) rpm -qa | grep mysql ,卸载mysql
(4) sudo yum remove mariadb ,移除原有安装包

  1. 获取并安装yum源

(1) wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm,获取官方的yum源
在这里插入图片描述
(2) rpm -Uvh mysql-community-release-el7-5.noarch.rpm,安装yum源
(3)ls /etc/yum.repos.d/ -al,监测yum源安装情况:
在这里插入图片描述

  1. 安装MySQL服务

(1) yum install -y mysql-community-server,都是在root下进行安装的,普通用户就得加个sudo。
(2) systemctl start mysqld.service,启动MySQL服务。
(3) ps axj |grep mysqld查看MySQL服务的情况。

  1. 配置MySQL

(1) 配置密码,这里不讲,因为有点小复杂,但是可以让MySQL服务,开机自启动,这样其实是可以满足我们日常学习的:
启动MySQL服务成功后,输入:systemctl enable mysqld
systemctl daemon-reload
注意,如果不配置密码的话,想要正常使用mysql必须是root用户。

(2) 配置一下my.cnf,主要是数据库客户端和服务器的编码格式
vim /etc/my.cnf,然后把之前的都清空,拷贝以下内容:

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
[mysql]
#default-character-set=utf8 ,暂不设置,mysql有bug,汉字不回显
比特就业课
[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
port=3306
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
character-set-server=utf8
default-storage-engine=innodb
  1. 使用MySQL:

在命令行,输入mysql,就能使用MySQL了:

在这里插入图片描述


2. 数据库的概念

数据库是用于管理数据的软件,想吧,其实存数据肯定是用文件保存,但是不通过数据库直接把数据保存到文件中,会存在以下弊端:

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

数据库它也是把数据保存到文件中,但是 数据库的保存,更为严格(有约束),查找数据也很方便,并且适合在程序中控制。


3. 数据库下创建库,表

首先肯定得启动MySQL服务,然后输入create database + 库名;,sql语句必须以;结尾。

比如:
(1)我创建一个库,库名是good,create database good

在这里插入图片描述
(2)然后,使用此库,use good:
在这里插入图片描述
(3)再创建一个表,create table students:

在这里插入图片描述
(4)向表中插入数据:

  • insert into students (id,name,sex) values(1,"Bob","M");
  • insert into students (id,name,sex) values(2,"JR","M")
  • insert into students (id,name,sex) values(3,"WU","F")

在这里插入图片描述
(5)查看表中数据:

select * from students:

在这里插入图片描述


4. 库,表 的本质

(1) 打开 /etc/my.cnf:

在这里插入图片描述
看到这一行了吧,数据库中的库,表都存在这个路径下。

(2) 进入 /var/lib/mysql:

在这里插入图片描述

(3) 看到了吧,上面创建的库是good,本质就是创建了一个目录:我们进入到这个目录

在这里插入图片描述

(4) 创建表的本质,就是 在目录里创建 特定的文件。

在这里插入图片描述


5. 数据库服务器 和 库 ,表的关系

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

数据库服务器、数据库和表的关系如下:

在这里插入图片描述
数据库是一个网络服务,我们是客户端,先是我们启动客户端,与服务端进行连接后,服务端提供网络服务,这个服务就是 对数据的管理,可以创建一个库,其实就是创建一个目录,然后在库中创建表,其实就是在目录下创建特定文件。

所以说 数据库也是将数据存在文件中,直接和文件打交道的是数据库的存储引擎。

6. MySQL架构

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

在这里插入图片描述

  • connectors:指的是不同语言和SQL的交互
  • Management Serveices & Utilities: 系统管理和控制工具
  • connection pool:管理缓冲用户连接,线程处理等需要缓存的需求。每个用户连接后,都会分配一个线程去处理用户的请求,这是一个线程池
  • SQL Interface: SQL接口,接受用户的SQL命令,并且返回用户需要查询的结果。比如select from就是调用SQL Interface
  • Parser: 解析器,SQL命令传递到解析器的时候会被解析器验证和解析。解析器是由Lex和YACC实现的,是一个很长的脚本。
  • Optimizer: 查询优化器,SQL语句在查询之前会使用查询优化器对查询进行优化。
  • Cache和Buffer: 查询缓存。buffer是写缓存,cache是读缓存。
  • 存储引擎接口:数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。

这就是MySQL的大体框架,然后我们来看 MySQL的执行过程:

在这里插入图片描述

1、连接:客户端向 MySQL 服务器发送一条查询请求,与connectors交互:连接池认证相关处理。
2、缓存:服务器首先检查查询缓存,如果命中缓存,则立刻返回存储在缓存中的结果,否则进入下一阶段
3、解析:服务器进行SQL解析(词法语法)、预处理。
4、优化:再由优化器生成对应的执行计划。
5、执行:MySQL 根据执行计划,调用存储引擎的 API来执行查询。
6、结果:将结果返回给客户端,同时缓存查询结果。


7. 存储引擎

在这里插入图片描述

查看存储引擎:show engines;

在这里插入图片描述

存储引擎的对比:

在这里插入图片描述

相关文章:

MySQL —— 数据库基础

文章目录1. centos7 安装Mysql2. 数据库的概念3. 数据库下创建库,表4. 库,表 的本质5. 数据库服务器 和 库 ,表的关系6. MySQL架构7. 存储引擎前言: 数据库是对数据进行管理的软件。1. centos7 安装Mysql 需要把系统自带的MySQL给…...

多线程知识点

多线程 基本知识 创建线程的常用三种方式: 继承Thread类实现Runnable接口实现Callable接口(JDK1.5>) public class ThreadTest extends Thread {Overridepublic void run() {System.out.println(this.getName() "..开始.."…...

有序表之红黑树

文章目录1、五个条件2、调整策略2.1 插入调整的情况2.1.1 情况一:插入节点是红色,其父节点也是红色2.1.2 情况二2.1.2 代码实现2.2 删除调整的情况2.2.1 情况一:双重黑节点的兄弟节点也是黑色,且其兄弟的两个孩子也是黑色2.2.2 情…...

HTTP状态码都有哪些?

100:客户必须继续发出请求 101:客户要求服务器根据请求转换HTTP协议版本 二:2xx 200:交易成功 201:提示知道新文件的URL 202:接受和处理、但处理未完成 203:返回信息不确定或不完整 204&#…...

Sketch+摹客,100M文件上传最快47s

哈喽,小摹来啦~ 去年12月底,摹客Sketch插件上新了「规范检查工具」,自功能上线以来,小摹收到了许多的好评及赞扬。 虽好评如潮,但我们不会止步不前,将持续攻克难点,旨在为大家提供更加稳定高效…...

关系型数据之分区分表分库

文章目录1.为什么需要分区分表分库2.各种分区分表分库的情况3.弊端3.1分区弊端3.2分表分库弊端1.为什么需要分区分表分库 数据量达到一定规模,进行常规的sql语句优化已经效果不大的情况下,常见为mysql数据库,单表的记录达到1000W和空间占用至…...

微信小程序:基本开发相关文档

1、微信公众平台(后台登录页):https://mp.weixin.qq.com/2、微信小程序官网文档(组件api等):https://developers.weixin.qq.com/miniprogram/dev/component/audio.html3、微信开放社区(问题社区…...

Win10关闭自动更新

Win10关闭自动更新第一步:修改电脑系统时间第二步,设置自动更新时间第三步:再次修改系统时间为正确时间因为国内使用的操作系统,很多‍是非正版的系统,如果更新了系统,很容易造成电脑蓝屏,系统运…...

Embedding 理解

Word Embedding 单词表示最简单的是 one-hot 但是它的缺点是 矩阵表示过于稀疏,占用空间对相关的词语无法得知它们的含义是相近的。 Word Embedding 解决了上述两个缺点,一个 Word Embedding 直观的例子如下图所示。 每个维度表示一个特征&#xff0…...

工业树莓派和PLC怎么选?

一、 什么是虹科工业树莓派 1、树莓派 在了解虹科工业树莓派之前,首先要了解一下什么是树莓派。树莓派是一款基于ARM的小型电脑,在树莓派上提供丰富的接口,能够实现较多功能。它同样是开发人员的最爱,其搭载Linux系统&#xff0…...

多层感知机的区间随机初始化方法

摘要: 训练是构建神经网络模型的一个关键环节,该过程对网络中的参数不断进行微调,优化模型在训练数据集上的损失函数。参数初始化是训练之前的一个重要步骤,决定了训练过程的起点,对模型训练的收敛速度和收敛结果有重要…...

分析JEP 290机制的Java实现

简介 https://openjdk.org/jeps/290 Filter Incoming Serialization Data过滤传入的序列化数据 JEP290是Java官方提供的一套来防御反序列化的机制,其核心在于提供了一个ObjectInputFilter接口,通过设置filter对象,然后在反序列化&#xff…...

Leetcode.2140 解决智力问题

题目链接 Leetcode.2140 解决智力问题 Rating : 1709 题目描述 给你一个下标从 0开始的二维整数数组 questions,其中 questions[i] [pointsi, brainpoweri]。 这个数组表示一场考试里的一系列题目,你需要 按顺序 (也就是从问题…...

新时代下的医疗行业新基建研讨会

1、会议纪要 2023年2月17日,HIT专家网进行了《新时代下的医疗行业新基建研讨会》的会议。 对会议内容进行了记录。 会议中有友谊医院、301、北肿主任进行了分享。大纲如下所示 2、本人所想 本人的所想所感: 1、301在多院区的医疗信息建设&#xff0c…...

BEV感知:DETR3D

3D检测:DETR3D前言MethodImage Feature Extracting2D-to-3D Feature TransformationLoss实验结果前言 在这篇paper,作者提出了一个更优雅的2D与3D之间转换的算法在自动驾驶领域,它不依赖于深度信息的预测,这个框架被称之为DETR3D…...

亿级高并发电商项目-- 实战篇 --万达商城项目 十二(编写用户服务、发送短信功能、发送注册验证码功能、手机号验证码登录功能、单点登录等模块)

👏作者简介:大家好,我是小童,Java开发工程师,CSDN博客博主,Java领域新星创作者 📕系列专栏:前端、Java、Java中间件大全、微信小程序、微信支付、若依框架、Spring全家桶 &#x1f4…...

整合spring cloud云服务架构 - 企业分布式微服务云架构构建

1. 介绍 Commonservice-system是一个大型分布式、微服务、面向企业的JavaEE体系快速研发平台,基于模块化、服务化、原子化、热插拔的设计思想,使用成熟领先的无商业限制的主流开源技术构建。采用服务化的组件开发模式,可实现复杂的业务功能。…...

leetcode 540. Single Element in a Sorted Array(排序数组中的单个元素)

给一个已经排好序的升序数组,其中每个元素都会重复2次,只有一个元素只有一个, 找出这个只有一个的元素。 要求时间复杂度在O(logn), 空间复杂度在O(1). 思路: 时间复杂度为O(logn), 让人想到了binary search. 因为时间复杂度为…...

Color correction for tone mapping

Abstract色调映射算法提供了复杂的方法,将真实世界的亮度范围映射到输出介质的亮度范围,但它们经常导致颜色外观的变化。在本研究中,我们进行了一系列的主观外观匹配实验,以测量对比度压缩和增强后图像色彩的变化。结果表明&#…...

JavaScript-XHR-深入理解

JavaScript-XHR-深入理解1. XHR(Asynchronous JavaScript And XML)初始1.1. xhr request demo1.2. status of XHRHttpRequest1.3. send synchronous request by xhr1.4. onload监听数据加载完成1.5. http status code1.6. get/post request with josn/form/urlcoded1.7. encaps…...

春季2021亚马逊研究奖获奖者公布

春季 2021 某机构研究奖获奖者公布 2021年7月,某机构通知申请人已成为2021年春季某机构研究奖的获得者。该奖项旨在为跨多个学科领域开展研究课题的学术研究人员提供无限制资金和某云平台服务积分。今天,我们正式公布26位获奖者,他们来自11个…...

Qwen3.5-35B-A3B-AWQ-4bit企业应用:HR招聘简历图识别+关键资质自动核验系统

Qwen3.5-35B-A3B-AWQ-4bit企业应用:HR招聘简历图识别关键资质自动核验系统 1. 企业招聘场景的痛点分析 在传统HR招聘流程中,简历筛选和资质核验是最耗费人力的环节之一。每天面对堆积如山的纸质简历和PDF文件,HR需要: 手动翻阅…...

告别图库!用LiuJuan Z-Image为文章博客自动生成配图(保姆级教程)

告别图库!用LiuJuan Z-Image为文章博客自动生成配图(保姆级教程) 1. 为什么你需要这个工具? 作为一名内容创作者,我深知找配图的痛苦。记得上周为了给一篇技术文章配图,我花了整整40分钟在图库里翻找&…...

微信小程序物流信息对接实战:发货接口的完整实现指南

1. 微信小程序物流对接的核心价值 对于电商类小程序来说,物流信息同步是用户体验的关键环节。当用户下单后,最关心的就是"我的包裹到哪了"。传统做法需要用户手动复制单号到第三方平台查询,而通过微信官方物流接口,可以…...

4个革新性步骤:NHSE动物森友会存档编辑器完全指南

4个革新性步骤:NHSE动物森友会存档编辑器完全指南 【免费下载链接】NHSE Animal Crossing: New Horizons save editor 项目地址: https://gitcode.com/gh_mirrors/nh/NHSE NHSE(动物森友会存档编辑器)作为一款开源免费工具&#xff0c…...

QuickSnap:提升三维建模效率的快速对齐工具——三维建模爱好者的精准对齐解决方案

QuickSnap:提升三维建模效率的快速对齐工具——三维建模爱好者的精准对齐解决方案 【免费下载链接】quicksnap Blender addon to quickly snap objects/vertices/points to object origins/vertices/points 项目地址: https://gitcode.com/gh_mirrors/qu/quicksna…...

避坑指南:用高德DistrictSearch获取精准行政边界时遇到的5个典型问题(含最新GeoJson处理技巧)

高德DistrictSearch深度避坑:5个实战难题与GeoJson优化方案 当你在深夜调试地图边界数据时,突然发现某个街道的轮廓出现了诡异的锯齿状变形——这不是恐怖片情节,而是使用高德DistrictSearch时可能遇到的真实场景。作为经历过数十个地图项目…...

Qwen3-0.6B应用案例:如何用它快速生成文案和邮件回复

Qwen3-0.6B应用案例:如何用它快速生成文案和邮件回复 1. 引言:轻量级AI写作助手 在日常工作中,我们经常需要处理大量文字工作:撰写产品介绍、回复客户邮件、编写营销文案等。这些任务虽然不复杂,但耗时耗力。Qwen3-0…...

YOLOv8鹰眼目标检测问题解决:常见部署错误与使用技巧汇总

YOLOv8鹰眼目标检测问题解决:常见部署错误与使用技巧汇总 1. 引言:为什么选择YOLOv8鹰眼目标检测 YOLOv8作为当前计算机视觉领域最先进的目标检测模型之一,以其卓越的实时性和准确性赢得了广泛认可。鹰眼目标检测镜像基于Ultralytics官方YO…...

5个关键步骤:使用SMUDebugTool解决AMD Ryzen硬件调试难题

5个关键步骤:使用SMUDebugTool解决AMD Ryzen硬件调试难题 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https:/…...