【Hello mysql】 数据库基础

news2024/11/28 6:31:19

Mysql专栏:@Mysql
本篇博客简介:简单的介绍mysql相关的一些基础知识和在Linux环境下的安装 让大家对于mysql有一个初步的认知

数据库基础

  • 数据库基础
    • 数据库定义
    • 数据库再理解
      • 软件角度
      • 文件角度
      • 总结
    • 主流数据库
    • mysql安装
      • 卸载不要的环境
      • 获取mysql官方yum源
      • 安装mysql
      • 登录mysql
      • mysql的一些配置
    • 连接mysql
    • 服务器 数据库 表关系
      • 数据库和表在Linux中的存在形式
      • 服务器 数据库 表关系
    • mysql使用案例
    • 数据的逻辑存储
    • mysql的架构
    • SQL分类
    • 存储引擎
      • 存储引擎
      • 查看存储引擎
      • 搜索引擎对比(了解即可)

数据库基础

数据库定义

我们可以在书上看到数据库的定义是

数据库是按照数据结构来组织、存储和管理数据的仓库

也就是说它其实是一个存储数据的软件

我们之前的博客写过一些项目 其中的一些项目也需要保存数据 比如 通讯录的文件版本 当时我们储存数据的方式主要是通过文件操作 当时也很顺利的完成了项目的功能 那么为什么我们不直接使用文件来保存数据 而是设计出了数据库呢

相对于数据库保存数据来说 文件保存数据存在着以下的缺点

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

数据库再理解

为了加深大家对于数据库的理解 下面我们分别从软件和文件两个角度来介绍下数据库

软件角度

在这里插入图片描述

一开始我们通过自己写的一些程序调用一些库函数(open write等)来直接进行文件操作 将数据保存到磁盘中

当我们要对于文件中的一些数据进行增删改查的时候需要自己去敲一些代码来实现这个功能 虽然这是可以实现的 但是会很麻烦 而且如果所有的软件都要自己实现这些功能的话就不可避免的出现很多重复冗余的代码

这个时候数据库的作用之一就体现出来了 它能让用户or用户程序更方便的进行数据管理
在这里插入图片描述
用户通过SQL语句来对数据库下达指令 然后数据库再分析这些SQL语句的含义再进行对应的文件操作

其中数据库就是在用户程序和磁盘文件中的一个软件 它是需要自己的访问磁盘中的文件的

  • 数据库也是用文件的方式来进行文件保存的
  • 数据库中直接和文件打交道的部分 我们一般叫做存储引擎

如何理解存储引擎

我们可以将存储引擎类比为搜索引擎来理解

在这里插入图片描述

本来用户程序想要搜索磁盘中的某一个数据的时候需要自己一个个的去查找

在这里插入图片描述

但是有了搜索引擎之后用户程序只需要将自己想要搜索的内容告诉它 搜索引擎就会给用户程序相应的反馈

存储引擎同理

文件角度

数据库其实就是一个网络服务器 它的组成可以分为下面三段

  • 数据库服务器
  • 数据库客户端
  • 数据库库+数据库表结构

假设在这样的一个学校中 老师是通过一个教务系统来管理学生的各种数据的

在这里插入图片描述

我们就可以将数据库的组成类比到图中

在这里插入图片描述
也就是说mysql其实是这样子的一个网络服务器结构

在这里插入图片描述
在学习网络部分的时候我们也见过这种结构 这其实就是一个CS模式的客户端服务器

CS模式

  • C client 客户端
  • S sever 服务器

在有了上面的知识之后我们再去回答下面的问题

如何理解安装mysql

安装mysql服务器的本质就是安装mysql的客户端和服务器

如何理解启动mysql

启动mysql本质就是启动mysqld服务器

如何理解连接mysql

连接mysql的时候我们也许会输入这样子的一串代码

mysql 127.0.0.1 3306

它的意思就是让mysql连接127.0.0.1ip(本地环回)的3306端口

当然mysql作为一个网络服务器也是可以进行跨网络通信的

总结

在经历上面两层角度对于数据库的理解之后我们可以做出下面的定义

**数据库是一款服务器软件 它的作用是帮我们维护数据 我们可以通过客户端向服务端发送SQL请求 之后服务端进行响应对于数据进行增删改查 **

网络角度: mysql在网络角度中属于哪一层的软件呢?

应用层

系统角度: mysql属于OS内置的软件还是需要下载的呢?

需要下载

主流数据库

  • SQL Sever: 微软的产品 Net程序员的最爱 中大型项目
  • Oracle: 甲骨文产品 适合大型项目 复杂的业务逻辑 并发一般来说不如MySQL
  • MySQL:世界上最受欢迎的数据库 属于甲骨文 并发性好 不适合做复杂的业务 主要用在电商 SNS 论坛 对简单的SQL处理效果好
  • PostgreSQL :加州大学伯克利分校计算机系开发的关系型数据库 不管是私用 商用 还是学术研究使用 可以免费使用 修改和分发
  • SQLite: 是一款轻型的数据库 是遵守ACID的关系型数据库管理系统 它包含在一个相对小的C库
    中 它的设计目标是嵌入式的 而且目前已经在很多嵌入式产品中使用了它 它占用资源非常的低 在嵌入式设备中 可能只需要几百K的内存就够了
  • H2: 是一个用Java开发的嵌入式数据库 它本身只是一个类库 可以直接嵌入到应用项目中

这其中我们使用的最多就是MysqlOracle

mysql安装

卸载不要的环境

某些云服务器可能会自带一些数据库 比如说mariadb或者mysql等

为了保证接下来教学环境的同步 我们首先要先卸载这些自带的数据库并且安装一个同版本的数据库

首先我们查找下是否有mysql或者是mariadb的进程在运行
在这里插入图片描述
博主这里没有正在运行中的mysql进程 如果大家检查的时候遇到了需要先停止这些进程的运行 要使用到下面的指令

systemctl stop mariadb.service

接着我们检查下是否有这些软件的安装包的存在

在这里插入图片描述

检查之后我们就发现了mariadb安装包的存在

之后我们使用卸载程序进行卸载即可

rpm -qa | grep mariadb | xargs yum remove -y

xargs是什么

它是一个卸载程序 它会将管道中传递过来的内容以命令行参数的形式传递给yum remove

在这里插入图片描述

此时我们原先的环境就卸载完毕了

获取mysql官方yum源

怎么下

Mysql官方yum源地址

打开之后我们可以看到一个这样子的画面

在这里插入图片描述

这里有许多不同的mysql版本供我们下载 当然我们要结合自己的系统来进行下载安装

我们可以通过下面的指令来查看自己的系统版本

cat /etc/redhat-release

在这里插入图片描述
(centos 7.6)

而我们选择常用的mysql5.7版本 在网站中我们可以发现mysql5.7版本中并没有适配centos7.6版本的软件(el就代表的是centos)

所以说我们直接选择最后一个 适配所有centos7版本的mysql

在这里插入图片描述

下载完毕之后我们直接拷贝一份放到桌面上 接着使用rz指令来上传到我们的linux系统中

在这里插入图片描述

怎么安装

我们下载了安装包之后还需要更新yum源仓库

通过下面的指令我们可以查看更新之前的yum源

ls /etc/yum.repos.d/ -l

在这里插入图片描述

我们可以看到并没有mysql的yum源

接着可以通过下面的指令来更新mysql的yum源

rpm -ivh mysql57-community-release-el7.rpm 

在这里插入图片描述
更新之后再查看我们就会发现mysql出现再yum源仓库里面了

之后我们就能够使用yum来查看mysql的相关软件

在这里插入图片描述

安装mysql

安装mysql的过程十分简单 只需要一行指令就可以

yum install -y mysql-community-server

在这里插入图片描述

如果说安装过程中我们遇到了密钥过期的问题

Failing package is: mysql-community-client-5.7.39-1.el7.x86_64
GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

我们只需要使用下面的指令更新下密钥就可以了

rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

如何确保我们的mysql安装成功?

在Linux下一切皆文件 我们可以通过which指令来查看系统中是否有mysql和mysqld相关的文件

在这里插入图片描述

注意图上的目录 我们可以发现mysqld是在sbin(super bin)目录下而mysql是在bin目录下

事实上像mysqld这种网络服务器一般都会在sbin目录下都需要较高的管理员权限才能开启

之后我们可以通过systemctl来启动mysqld服务器 启动完毕之后再查看进程就能够看见mysql了
在这里插入图片描述

我们在之间说过 mysql是一个网络服务器 所以说当我们启动mysqld服务器之后查看系统中的网络进程也能够查到mysql(它底层默认是tcp协议)

在这里插入图片描述

登录mysql

我们登录mysql的时候需要一个登录密码 可是在安装mysql的时候我们并没有设置这个密码

这个时候我们要先找到mysql 的配置文件 在配置文件中加上本次登录不需要密码的选项

mysql的配置路径一般是这个

/etc/my.cnf

接着我们使用vim编辑器编辑这个文件 在文件的最后一行加上如下的文字就可以了

skip-grant-tables

紧接着我们重启下mysql服务器就可以免密码登录了

登录的指令是

mysql -u root -p

其中u是user的意思 p是password的意思
在这里插入图片描述

mysql的一些配置

和上面设置跳过密码一样 我们通过

vim /etc/my.cnf

来修改mysql的配置文件

目前我们增加的配置主要有三个

在这里插入图片描述

分别是

  1. 默认绑定端口号3306
  2. 默认编码格式使用utf-8
  3. 默认搜索引擎使用innodb

连接mysql

连接mysql一般使用下面的指令

mysql -h 127.0.0.1 -P 3306 -u root -p // 注意第一个P要大写

在学习过网络部分之后我们很简单就能猜到上面四个参数的含义

  • -h host 主机号
  • -P port 端口号
  • -u user 用户
  • -p password 密码

如果我们不写-h的话默认就是本地环回

如果我们不写-P的话默认就是3306端口

在这里插入图片描述

最后我们使用quit指令退出mysql

服务器 数据库 表关系

数据库和表在Linux中的存在形式

我们之前在配置mysql服务器的时候发现里面有这样的一个字段

在这里插入图片描述
它的含义是我们所有的数据都保存在 /var/lib/mysql 这个路径当中

我们展示这个目录中的所有内容可以发现下面的场景
在这里插入图片描述
之后我们登录mysql 查看一下mysql的database
在这里插入图片描述

对比观察下这两张图我们不难发现 数据库中的database 在Linux服务器中都有一个对应的目录文件

也就是说创建数据库的本质就是在Linux服务器上创建一个目录 创建表的本质就是在Linux服务器上创建一个文件

服务器 数据库 表关系

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

在这里插入图片描述

mysql使用案例

创建数据库

create database helloworld;

在这里插入图片描述

使用数据库

use helloworld;

在这里插入图片描述

创建数据库表

create table student(
 id int,
 name varchar(32),
 gender varchar(2)
);

在这里插入图片描述

查看表结构

desc student;

在这里插入图片描述

插入数据

mysql> insert into student (id , name , gender) values (1, 'zhangsan', '1');

在这里插入图片描述

查看数据

select * from student;

在这里插入图片描述

数据的逻辑存储

在这里插入图片描述

我们通常喜欢把数据库中的一行叫做一条记录

把一列叫做属性

我们将这样的存储结构叫做mysql的逻辑存储

mysql的架构

下面是mysql的架构图

在这里插入图片描述

我们直接在图中介绍mysql各层的功能

在这里插入图片描述

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

SQL语言会分类的本质是因为使用者的需求不同

我们将mysql比作一个教务系统 在这个教务系统中 学生的需求可能是要做作业 上传作业(DML)

老师的需求可能是要布置作业(DDL)

校长的需求可能是要招聘或者开除老师或学生(DCL)

我们因为这些需求的不同将SQL语言分为了上面几类

存储引擎

存储引擎

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

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

查看存储引擎

使用 show engines 就可以查看mysql的存储引擎

在这里插入图片描述

搜索引擎对比(了解即可)

在这里插入图片描述

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

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

相关文章

MySQL数据库引擎及账号管理

目录 前言 二、MySQL数据库引擎 1.是什么 2.MySQL的核心 3.MySQL的存储引擎 a.InnoDB(MySQL默认引擎) b.ACID事务 c.四种隔离级别 d.MyISAM e.MEMORY(Heap) 4.存储引擎查看 三、命令行操作数据库 四、账号管理 前言 MySQL安装请看MySQL的安装…

输入框input事件compositionstart和compositionend的妙用

现象&#xff1a; 在将输入输入法切换到中文的时候&#xff0c;在打拼音的过程中也会触发oninput事件&#xff0c;如下&#xff1a; const Demo()>{const [value,setValue]useState("");return (<><input onInput{(e)>{console.log("value&…

【多种优化算法比较】混沌引力搜索算法(CGSA)(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

byte字节值与ASCII表中char之间的转换

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

三款小游戏功能:让孩子在运动中享受智力挑战

最近看到一款很有趣的小玩具&#xff0c;是一种专门为儿童设计的益智训练器&#xff0c;功能很丰富&#xff0c;可以为孩子带来不少乐趣&#xff0c;起到一些体能和智力训练的作用。这款叫做益智感统摸高训练器的小工具&#xff0c;主要功能就是帮助儿童进行摸高训练&#xff0…

C/C++内存管理详解

去年的今日&#xff0c;博主第一次发文&#xff0c;那时初出茅庐&#xff0c;没什么经验。时隔一年&#xff0c;更加优质的博文献上&#xff0c;希望可以帮助到更多的人❤️❤️❤️ 文章目录 &#x1f4ac; 前言一、C/C内存分布二、C语言中动态内存管理方式三、C内存管理方式1…

AlexNet实战

前言&#xff1a;之前学了挺多卷积神经网络模型&#xff0c;但是都只停留在概念。代码都没自己敲过&#xff0c;肯定不行&#xff0c;而且这代码也很难很多都看不懂。所以想着先从最先较简单的AlexNet开始敲。不过还是好多没搞明白&#xff0c;之后逐一搞清楚。 文章目录 Alex…

Spark弹性分布式数据集

1. Spark RDD是什么 RDD&#xff08;Resilient Distributed Dataset&#xff0c;弹性分布式数据集&#xff09;是一个不可变的分布式对象集合&#xff0c;是Spark中最基本的数据抽象。在代码中RDD是一个抽象类&#xff0c;代表一个弹性的、不可变、可分区、里面的元素可并行计…

BottomNavigationView(自带角标)无法添加角标的解决问题

android studio的报错提示&#xff1a;java.lang.IllegalArgumentException: The style on this component requires your app theme to be Theme.MaterialComponents (or a descendant). 解决&#xff0c;改主题&#xff1a;

跨境平台做测评、采退、Lu卡、lu货要怎么做安全?

大家好&#xff0c;我是珑哥测评&#xff0c;今天和大家聊聊比较小众的圈子&#xff0c;也就是测评衍生出来的分支&#xff0c;采购和退款。因为最近也有很多客户咨询这个问题&#xff0c;由于沃尔玛风控升级了&#xff0c;很多客户下不成功的问题。 大家都知道无论是做测评还是…

BPM流程引擎适用于哪些类型企业管理系统

看到标题的童鞋们&#xff0c;估计在搜索办公软件系统时都会留意到BPM&#xff0c;那BPM到底是何方神圣&#xff1f;它与管理系统有什么区别呢&#xff1f;今天我们一一解答。 什么是BPM&#xff1f; BPM&#xff08;即业务流程管理&#xff09;&#xff0c;是企业信息化发展的…

[网络] ifconfig down掉的网口,插上网线网口灯依然亮?

1、软硬件环境 环境1&#xff1a; 硬件&#xff1a; 飞腾E2000Q ARM64 平台 YT8521SH (phy) 软件&#xff1a; linux 4.19.246 环境2&#xff1a; 硬件&#xff1a; NXP T1042 PowerPC 平台 YT8521SH (phy) 软件&#xff1a; linux 4.1.35 备注&#xff1a; 1、环境1的网…

Rdkit|分子可视化

Rdkit|分子可视化 Github&#xff1a; 地址 单个展示 从mol对象到图片&#xff1a;MolToImage(mol, size, kekulize, wedgeBonds, fitImage, …) mol&#xff1a;mol对象 size&#xff1a;图片尺寸&#xff0c;默认(300, 300) kekulize&#xff1a;是否展示kekule形式&#…

Apikit 自学日记:新建 API 请求

进入流程测试用例详情页&#xff0c;点击添加测试步骤&#xff0c;在下拉菜单中选择 添加API请求 &#xff0c;系统会自动进入API测试步骤编辑页面&#xff0c;接下来你可以编辑API的请求参数、返回结果、校验规则等内容。 设置 API 测试步骤 API测试步骤设置分为以下几个部分…

react笔记_07类组件

目录 复习展开运算符 组件什么叫做组件&#xff1f;分类类组件es6新增构造函数语法类组件渲染类组件的this指向类组件的三大属性state作用语法-初始化数据语法-修改state数据语法-获取state中的数据案例 propspropTypes属性(prop-types库)defaultProps属性 refs[1] 字符串形式的…

搞定HashMap

搞定HashMap 1.Map是个啥&#xff1f; HashMap隶属于Java中集合这一块&#xff0c;我们知道集合这块有list&#xff0c;set和map&#xff0c;这里的HashMap就是Map的实现类&#xff0c;那么在Map这个大家族中还有哪些重要角色呢&#xff1f; 上图展示了Map的家族&#xff0c;…

Cernox 温度传感器碳陶瓷基体结构

Cernox 温度传感器具有高灵敏度、稳定性好、遵循单一电阻与温度曲线&#xff0c;磁场性能优良和耐辐射等特性。适用于低温系统中1.5-375K范围内的测量。传感器在及其严格的质量控制下制造&#xff0c;并在强磁场、中子伽马辐射、热循环和机械耐久条件下证明长期稳定性。与其他可…

基于springboot+mysql+jsp高校社团管理系统

基于springbootmysqljsp高校社团管理系统 一、系统介绍二、所用技术三、功能展示三、其它系统四、获取源码 一、系统介绍 管理员&#xff1a;登录注册、个人中心&#xff08;个人信息、密码修改、注销&#xff09;、近期活动&#xff08;所有活动、文体类活动、学术类活动、公…

微服务学习1——微服务环境搭建

微服务学习1——微服务环境搭建 &#xff08;参考黑马程序员项目&#xff09; 个人仓库地址&#xff1a;https://gitee.com/jkangle/springboot-exercise.git 微服务就是将单体应用进一步拆分&#xff0c;拆成更小的服务&#xff0c;拆完之后怎么调用&#xff0c;主流的技术有…

【分布式】zabbix 6.0部署讲解

目录 一、 序章二、zabbix概念2.1 zabbix是什么&#xff1f;2.2 zabbix 监控原理2.3 zabbix 6.0 新特性2.4 zabbix 6.0 功能组件 三、zabbix 6.0 部署部署服务端3.1 部署 Nginx PHP 环境并测试3.1.1 安装nginx3.1.2 安装php3.1.3 修改 Nginx 配置3.1.4 修改 php 配置3.1.5 创建…