MySQL学习(1)——基础库操作

欢迎来到博主的专栏:MySQL学习
博主ID:代码小豪

文章目录

    • 数据库原理
    • 基础库操作
      • 增删数据库
      • 数据库编码与校验规则
      • 验证不同的校验规则对于库中数据的影响
    • 备份与恢复数据库

数据库原理

mysql版本:mysql8.0
操作系统:ubuntu22.4
为了减少由于环境配置以及权限限制带来的使用问题,博主建议大家使用root账号操作。

mysql -uroot -p

如果在安装MySQL时,注册了用户密码,那就使用注册的密码登录,如果没有注册密码,那就直接按下回车免密登录。

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

我们程序有时候是需要保存数据的,比如游戏,需要保存用户的账号数据,而这些数据是不能只保存在内存当中的,因为程序一关闭,数据就丢失了。那么为了长期保存这些数据,通常我们会将这些数据保存在磁盘当中,即文件的形式保存。

那么为什么我们不选择用文件,而是用数据库呢?这是因为文件的数据,如何查找、如何读取、如何修改。这些操作都需要用户自己去编写代码。这会导致开发周期延长。换句话说也是怕麻烦(hh)。

实际上MySQL也是将数据保存在文件当中,这一点我们会在后面体现。但是数据库的本质并不是文件‌。数据库是一个存储和管理数据的系统,它通过特定的格式将数据存储在文件中,但数据库的功能远不止于此。数据库不仅提供数据的存储功能,还具备数据管理、查询优化、数据安全等多种高级功能。这些功能使得数据库与简单的文件存储有本质的区别‌

基础库操作

增删数据库

查看数据库

show databases;

查看当前存在的数据库
在这里插入图片描述

但是实际上除了使用指令查看外,我们还可以进入到目录/var/lib/mysql/中查看,此时该路径下的目录文件,就是一个数据库
在这里插入图片描述

创建数据库

create databases [if not exists] db_name;

db_name是创建的数据库的名字,[]中的是可选选项,表示创建db_name之前判断一下是否存在同名数据库

比如,我们创建一个名为test的数据库,可以输入create database test;或者create database if not exists test;

在这里插入图片描述

但是实际上我们创建的数据库是需要携带编码集和校验规则的的,首先编码集不仅规定了数据如何存储,也规定了数据如何读取,这就好比如果你用中文写了一篇文章,那么读这篇文章的人就要会中文才行。如果不会中文怎么读取呢?而校验集则是规定了字符的排序规则和比较规则,比如你写一个字符串比较的算法,是不是首先要规定字符串比较的方式啊?比如字典序之类的。因此校验规则影响字符串的比较、排序结果以及索引行为。

创建一个使用utf8字符集的数据库

create database db_name charset=utf8;

创建一个使用utf8字符集,并带校对规则的数据库。

create database db_name charset=utf8 collate utf8_general_ci;

如果没有指定编码集合校对规则,那么该数据库使用的就是默认的编码集和校对规则。通过修改配置文件可以修改默认等的编码集合校对规则。

删除数据库

DROP DATABASE [IF EXISTS] db_ name;

比如我们将刚刚创建的test数据库删除。使用drop database test或者drop database if exists test
在这里插入图片描述

数据库编码与校验规则

查看所有编码和校验规则

show charset;

使用show cahrset;可以查看MySQL支持的所有编码集和对应的校验规则
在这里插入图片描述

查看单一数据库使用的编码集和校验规则
使用SQL语句SHOW CREATE DATABASE your_database_name;

比如我们创建一个test1数据库,在我的机器上,默认使用的编码集是utf-8,使用的校验规则也是utf-8对应的校验规则。因此test1的编码集应为utf-8,校验规则为utf-8对应的校验规则
在这里插入图片描述

虽然上图没有显示校验规则,这是因为如果我们使用utf8默认的校验规则,MySQL不显示校验规则,不过test1使用的依旧是utf-8的对应默认校验规则。

如果创建的校验规则不是编码集的默认规则,那么就会显示出来,比如我们创建test3,使用utf8和utf8_bin校验规则(默认的校验规则是utf8mb3_general_cl)。

在这里插入图片描述

这里再补充一个由于版本差异导致情况,在MySQL8.0以上版本,使用utf8作为编码集,实际上使用的utf8mb3。

验证不同的校验规则对于库中数据的影响

在前面的文章中,博主创建了相同编码集,不同校验规则规则的两个库,分别是test1(utf8,utf8_gergenalci)和test3(utf8,utf8_bin)。现在忽略建表,插入数据,搜索数据等操作(后面会讲),我们向test1和test3插入(‘A’‘a’‘B’‘b’‘C’c’)。观察不同校验规则下,对于排序,搜索有什么影响。

图片描述
test1中对于字符'a'的搜索结果

图片描述
test3中对于字符'a'的搜索结果

可以发现,在test1中搜索’a’的结果有两个,而在test3中只有一个,这是因为utf8_gergenalci校验规则不区分大小写。而utf8_bin校验规则区分大小写。

接下来看看数据的排序情况。

图片描述
test1中的排序情况

图片描述
test3中的排序情况

可以看到test1的排序顺序是按照字典序来的,而test3的排序顺序则是按照ASCII码值排序的。

实际上做这么多,其实就是想说明一件事,在MySQL中,使用不同的校验规则,会带来不同的使用结果。

备份与恢复数据库

备份数据库

mysqldump -P[端口号] -u root -p 密码 -B 数据库名 > 数据库备份存储的文件路径

备份数据库的指令并非在MySQL程序中使用,而是在linux终端中使用,使用命令时,需要指明备份的数据库所在的mysqld的端口号,需要备份的数据库,以及备份的数据保存的路径。

比如我们将数据库test1备份到/root/MySQL/test1.sql中,首先我们查看一下mysqld的端口号(一般是3306,可以通过配置文件修改)

在这里插入图片描述

输入指令mysqldump -P 3306 -uroot -p -B test1 > /root/MySQL/test1.sql接着会提示你输入密码,如果是免密登录的话直接按下回车就行。
在这里插入图片描述

我们查看一下test1.sql,可以发现MySQL备份的数据库其实是记录下恢复数据库需要使用的SQL语句。

在这里插入图片描述

恢复数据库
恢复数据库则需要我们在mysql程序中使用SQL语句。

source [数据库所在路径];

那么我们打开mysql,把数据库test1先删除,接着将备份的数据库/root/MySQL/test1.sql给恢复。输入指令``resource /root/MySQL/test1.sql
在这里插入图片描述

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

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

相关文章

C++法则12:右值引用的核心目的:支持移动语义(Move Semantics)

C法则12:右值引用的核心目的:支持移动语义(Move Semantics) 右值引用(Rvalue Reference)是C11引入的最重要特性之一,其主要设计目的就是支持移动语义(Move Semantics)。 …

【LLM学习笔记4】使用LangChain开发应用程序(上)

目录 前言一、模型、提示和解析器(model、prompt、parsers)二、储存三、模型链四、基于文档的问答1.使用向量存储查询2. 结合表征模型和向量存储使用检索问答链回答问题 前言 在前面两部分,我们分别学习了大语言模型的基础使用准则&#xff…

Negative Contrastive Estimation Negative Sampling

1. 基本概念与问题背景 1.1 大规模分类问题 在自然语言处理中,给定上下文 c c c预测单词 w w w的条件概率为: P ( w ∣ c ) exp ⁡ ( s θ ( w , c ) ) ∑ w ′ ∈ V exp ⁡ ( s θ ( w ′ , c ) ) P(w|c) \frac{\exp(s_\theta(w,c))}{\sum_{w\in V…

Flink SQL Connector Kafka 核心参数全解析与实战指南

Flink SQL Connector Kafka 是连接Flink SQL与Kafka的核心组件,通过将Kafka主题抽象为表结构,允许用户使用标准SQL语句完成数据读写操作。本文基于Apache Flink官方文档(2.0版本),系统梳理从表定义、参数配置到实战调优…

vscode内嵌浏览器实时预览vue项目

安装插件 web Preview 启动vue项目 打开预览 ctrl shift p 之后输入并选择 Open Web Preview 即可看到预览窗口,但此时明明我的页面是有内容的,但是窗口却空白的。 因为默认访问端口是3000,我们将其修改为vue项目默认的5173端口即可。 点…

计算机网络:(四)物理层的基本概念,数据通信的基础知识,物理层下面的传输媒体

计算机网络:(四)物理层的基本概念,数据通信的基础知识,物理层下面的传输媒体 前言一、物理层的基本概念1. 什么是物理层2. 物理层的核心使命3. 物理层的四大特性 二、数据通信的基础知识1. 数据通信系统的基本模型1.1 …

Linux系统性能优化

目录 Linux系统性能优化 一、性能优化概述 二、性能监控工具 1. 基础工具 2. 高级工具 三、子系统优化策略 1. CPU优化 2. 内存优化 3. 磁盘I/O优化 4. 网络优化 四、资源限制优化 1. ulimit 2. cgroups(控制组) 五、安全与注意事项 六、…

【streamlit streamlit中 显示 mermaid 流程图有两种方式】

streamlit中显示mermaid 流程图有两种方式 mermaind示例 code """ flowchart LRmarkdown["This **is** _Markdown_"]newLines["Line1Line 2Line 3"]markdown --> newLinesmarkdown["This **is** _Markdown_"]newLines[&quo…

Rust调用 DeepSeek API

Rust 实现类似 DeepSeek 的搜索工具 使用 Rust 构建一个高效、高性能的搜索工具需要结合异步 I/O、索引结构和查询优化。以下是一个简化实现的框架: 核心组件设计 索引结构 use std::collections::{HashMap, HashSet}; use tantivy::schema::{Schema, TEXT, STORED}; use …

Unity3D仿星露谷物语开发69之动作声音

1、目标 Player动作时产生的声音,比如砍倒树木、砸石头。 2、修复NPC快速行进的bug(与本节无关) 修改NPCMovement.cs脚本的MoveToGridPositionRoutine方法。 确保npcCalculatedSpeed的速度不少于最慢速度。 原代码: 修改后的…

【Node.js 的底层实现机制】从事件驱动到异步 I/O

简介 Node.js 作为 JavaScript 后端运行环境,其核心优势在于高并发处理能力和非阻塞 I/O 模型。 特点: 高并发处理:单线程事件循环高效处理大量并发连接I/O 密集型任务:非阻塞 I/O 模型避免线程切换开销,不适合 CPU…

nginx服务器配置时遇到的一些问题

京东云 CentOS 8.2 64位 Nginx配置文件修改后需要重启或重载服务的原因以及不重启的后果: ​​工作进程不主动重读配置​​: Nginx采用master-worker多进程架构。master进程读取配置文件并管理worker进程,worker进程处理实际请求。修改配置…

【论文阅读 | CVPR 2024 |Fusion-Mamba :用于跨模态目标检测】

论文阅读 | CVPR 2024 |Fusion-Mamba :用于跨模态目标检测 1.摘要&&引言2.方法2.1 预备知识2.2 Fusion-Mamba2.2.1 架构特征提取与多模态融合(FMB模块)FMB的应用与输出2.2.2 关键组件3.2.2.1 SSCS 模块:浅层跨模态特征交互…

Nginx-Ingress-Controller自定义端口实现TCP/UDP转发

背景1 使用deployment部署一个http服务,配合使用ingresstls的解析在ingress终止。 apiVersion: networking.k8s.io/v1 kind: Ingress metadata:annotations:name: test.comnamespace: rcs-netswitch-prod spec:defaultBackend:service:name: rcs-netswitch-prodpo…

基于Vue.js的图书管理系统前端界面设计

一、系统前端界面设计要求与效果 (一)系统功能结构图 设计一个基于Vue.js的图书管理系统前端界面。要充分体现Vue的核心特性和应用场景,同时结合信息管理专业的知识。要求系统分为仪表盘、图书管理、借阅管理和用户管理四个主要模块&#x…

Perplexity AI:对话式搜索引擎的革新者与未来认知操作系统

在信息爆炸的数字时代,传统搜索引擎提供的海量链接列表已无法满足用户对高效、精准知识获取的需求。Perplexity AI作为一款融合人工智能与实时网络检索的对话式搜索引擎,正通过技术创新重新定义人们获取信息的方式。这家成立于2022年的硅谷初创企业&…

第七讲 信号

1. 信号铺垫 信号: Linux 系统提供的, 简单轻量的, 用于向指定进程发送特定事件, 让接受信号进程做识别和对应处理实现进程控制的一种异步通信机制. 1~31 普通信号 34 ~ 64 实时信号 信号概览 下面是Linux系统中所有标准信号的名称及其对应的数字: SIGHUP (1…

2025年渗透测试面试题总结-2025年HW(护网面试) 02(题目+回答)

安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 2025年HW(护网面试) 02 1. 有趣的挖洞经历 2. 高频漏洞及修复方案 3. PHP/Java反序列化漏洞 4. 服务器入…

Odoo 18进阶开发:打造专业级list,kanban视图Dashboard

🎯 项目概述 在现代企业级应用中,数据可视化已成为提升用户体验的关键要素。Odoo 18 作为领先的企业资源规划系统,为开发者提供了强大的视图定制能力。本教程将带您深入了解如何在list(列表)视图和Kanban(…

LabVIEW仪表检测

依托LabVIEW 图形化开发平台,集成 NI、Keysight、Fluke 等硬件,构建自动化仪表检测工装系统。方案覆盖从二维码识别、程序烧写、多维度校准到数据管理的全流程自动化检测,解决传统人工检测中效率低下(单卡检测效率提升 62.5%&…