MySQL——基础操作

news2024/9/19 10:37:35

一、数据库的创建

1.1 库的创建

在使用数据库时,最先操作的是创建一个数据库。使用语法如下:

CREATE DATABASE [IF NOT EXISTS] database_name [[DEFAULT] CHARSET=charset_name] [[DEFAULT] COLLATE=collation_name];

对上述语句进行简单说明:

  • 大写的表示关键字;
  • [ ]是可选项;
  • CHARACTER SET:指定数据库采用的字符集;
  • COLLATE:指定数据库字符集的校验规则。

我们来看一个实例:

上述即为一个最为简单的创建数据的例子。当我们创建成功时,下面会给出我们提示。

1.2 字符集与校验规则

在创建数据库时,字符集和校验规则是非常重要的设置,它们决定了数据库中能够存储的字符类型以及如何校验输入的数据。其中,字符集是一套符号和编码的规则,而校验规则是对该套符号和编码的校验,定义符号的排序和比较规则。

1.2.1 查看字符集与校验规则

当我们在创建数据库时,我们并没有指定字符集和校验规则,系统会默认给我们选择字符集与校验规则。我们可以通过查看MySQL系统变量variables中的character_set_database,可以得知系统默认的字符集。具体如下图:

类似的,通过查看系统变量variables中的collation_database,可以得知系统默认的字符集校验规则。具体如下图:

其实,默认的字符集校验规则都是与我们安装MySQL时的配置文件有关,我们也可以查看配置文件/etc/my.cnf。具体如下图:

我们可以现在Linux下通过指令:show collation 查看数据库支持所有的校验规则。具体如下图:

通过指令:show charset 来查看字符集。具体如下图:

1.2.2 字符集与校验规则的设置

在我们上面的创建数据库时,并没有指定其字符集与校验规则,那么它们会是什么呢?我们来看一下。

在Linux下,我们所安装的数据库的客户端在:/var/lib/mysql 路径下。当我们创建数据库时,对应到Linux上就是创建的一个目录,本质上是在创建一个文件。具体如下图:

从上图中能够看到有一个test1的目录,这也就是我们刚刚在mysql中创建的数据库。其中包含了一个db.opt 文件,这个文件中就包含了我们创建数据库时的字符集与校验规则。如下图:

当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则是:utf8_general_ci。

下面我们在创建数据库时自己设置字符集与校验码,具体如下图:

当然,我们可以通过查询所有的字符集与校验码进行任意设置,但是需要注意的是我们应该使用匹配的字符集与校验码!

1.2.3 校验规则对数据库的影响

我们这里再次理解一下校验规则的概念:校验规则是对该套符号和编码的校验,定义符号的排序和比较规则。为了保证读取的数据和存储的数据是一致的,因此字符集编码格式和校验规则必须是对应的。utf8编码格式的校验规则有utf8_general_ci、utf8_bin、utf8_unicode_ci等校验规则。

当然,校验规则涉及到了对数据库中是数据进行了增删查改的影响了。举个例子来说明一下:如果你的数据库需要对文本进行多语言的比较和排序,可以选择校验规则为utf8_general_ci(UTF-8编码,不区分大小写)。而需要对文本进行大小写敏感的比较和排序时,校验规则应使用utf8_ bin(区分大小写)

下面我们来结合实际例子看一下。我们在不同校验规则的数据库中创建一个表进行数据插入,在进行排序看结果就可以。

我们先来看一下校验规则为utf8_general_ci的数据库,具体如下图:

当我们想要查找name = ‘a’ 时,也就是进行比较表中的名字为 ‘a’ 的数据。运行结果如下图:

如上图,我们可以很清晰的看到,当我们在校验时,校验规则为utf8_general_ci并不区分大小写的!

我们再来看一下校验规则为utf8_ bin的数据库。具体如下图:

我们再来查看name = ‘a’的数据,看看校验时是否区分大小写。具体如下图:

我们看到,在读取校验数据时会以严格的规则来筛选数据,也就是区分大小写的。我们也可通过排序进行观察,如下图:

排序就是根据字符的ascll码进行排序的,默认是升序的。如果不区分大小写,那么结果就是a A b B c C。

二、数据库的操作

2.1 查看数据库

查看数据库也就是我们查看我们当前都创建了哪些数据库。使用语句:show databases

在Linux下,可能操作一段时间后,我们就会不知道当前处于那个数据库里面了。可通过 select database() 语句来查看你所处的数据库。具体如下图:

删除数据库时,会将数据库内的数据一同全部删除。所以不建议创建数据库后直接对数据库进行删除。

2.2 删除数据库

删除数据库的语句如下:DROP DATABASE [IF EXISTS] db_name;

2.3 修改数据库

对数据库进行修改的语句:ALTER DATABASE db_name CHARACTER SET charset_name COLLATE collation_name。注意,这里的修改并不是指的修改数据库的名字,而是修改的是字符集和校验规则。我们看实例操作:

【注意】为了保证数据库的稳定性和安全性,大多数数据库系统都不支持对库名的修改操作。如果确实需要修改库名,通常需要先备份数据库,然后创建新的库,并将所有相关的对象从旧库迁移到新库。 下面我们看一下数据库的删除和备份。

2.4 数据库删除和备份

 我们在数据库备份时,要使用专门的数据库备份软件。这里我们直接使用 mysqldump 进行备份。备份语句如下:

mysqldump -P3306 -u root -p 密码 -B 数据库名 > 数据库备份存储的文件路径

这时候我们就生成了备份文件。不妨打开备份文件看看里面的内容,如下图:

通过上图我们也能看出来,备份的文件中就是保存了我们在创建该数据库时的所有指令。例如建数据库、创建表、插入数据等SQL语句。

对数据库进行备份后,就可以将原有的数据库进行删除了。建议:如果非要删除数据库,一般情况下建议先备份,后删除。

接下来我们看怎么将备份的数据库文件进行恢复。恢复的语句:source 备份文件所在的路径。具体如下:

我么不仅仅可以备份整个数据库,还可以备份数据库中的表。语句如下:

mysqldump -u root -p 数据库名 表名1 表名2 > 所要备份的路径

其备份原理和恢复的原理都一样,这里就不再过多解释。当然,我们也可以同时备份多个数据库。语句如下:

mysqldump -u root -p -B 数据库名1 数据库名2 ... > 数据库存放路径

2.5 显示创建语句

我们也可查看当时创建数据库时所用到的语句。可使用:show create database 数据库名 进行查看。具体如下图:

【注意】

  • MySQL 建议我们关键字使用大写,但是不是必须的;
  • 数据库名字的反引号 ``, 是为了防止使用的数据库名刚好是关键字;
  • /*!40100 default.... */ 这个不是注释,表示当前 mysql 版本大于 4.01 版本,就执行这句话。

2.6 查看连接情况

有时候我们在使用数据库时,感觉到卡顿。可以查看当前都有谁在操作这个数据库。可使用show processlist命令可以查看当前正在运行的进程列表。具体实例如下图:

这个列表包含了数据库中所有正在运行的查询、操作和其他活动。以下是一些常见的属性:

  1. Id:进程的唯一标识符。
  2. User:正在运行这个进程的用户。
  3. Host:正在运行这个进程的主机。
  4. db:正在使用的数据库。
  5. Command:正在运行的命令或操作。
  6. Time:进程开始运行的时间。
  7. State:进程的状态,例如“Sleeping”、“Running”、“Writing”等。
  8. Info:有关进程的其他信息,例如正在执行的SQL语句、正在等待的锁等。

这些属性可以帮助你了解数据库中正在运行的活动,以及它们的状态和进度。例如,如果你发现某个查询正在运行很长时间,你可能需要检查它的SQL语句,看看是否有优化的空间。或者,如果你发现数据库正在等待锁,你可能需要检查是否有并发问题。

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

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

相关文章

【秋招笔试题】讨厌冒泡排序

题解&#xff1a;免费的操作是分别在奇偶下标进行排序&#xff0c;收费的操作会改变他们下标的奇偶性&#xff0c;那么直接统计在排序后有多少元素的下标发生变化了即可。 #include <iostream> #include <vector> #include <algorithm> #include "map&…

猫头虎 分享:Python库 XGBoost 的简介、安装、用法详解入门教程

猫头虎 分享&#xff1a;Python库 XGBoost 的简介、安装、用法详解入门教程 &#x1f3af; ✨ 引言 今天猫头虎收到一位粉丝的提问&#xff1a;“猫哥&#xff0c;我在项目中需要用到 XGBoost&#xff0c;可是对它的了解不够深入&#xff0c;不知道从哪开始&#xff0c;能否详…

线性查找表的应用:用户登录注册程序

线性查找表是很简单的数据结构和算法。网站的用户登录注册时是基本的功能。本文首先给出线性查找表的基本实现&#xff0c;然后给出在用户登录注册的程序流程图&#xff0c;并将线性查找表应用到用户查询这一具体任务&#xff0c;并基于 Python 语言在控制台实现用户注册、登录…

ComfyUI使用Flux模型

ComfyUI是一个强大的用户界面&#xff0c;支持多种图像处理和生成模型&#xff0c;而Flux是一系列由Black Forest Labs开发的扩散模型。 准备工作 1. 下载所需文件 下载地址&#xff1a; comfyanonymous/flux_text_encoders at main (hf-mirror.com)https://hf-mirror.com/…

django企业开发实战-学习小结

写在前面 初次阅读此书是三年前&#xff0c;当时没经历过完整的项目 觉得这书就是扯淡 后来经历过项目加班与毒打 今天再翻开此书 觉得实乃不可多得之物 花些时间啃下来吧 需求 需求文档 写文档&#xff0c;列举需要实现的功能&#xff0c;详细列举&#xff0c;不考虑技术实…

Leetcode Hot 100刷题记录 -Day6(滑动窗口)

无重复字符的最长子串 问题描述&#xff1a; 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长子串的长度。 示例 1: 输入: s "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc"&#xff0c;所以其长度为 3。示例 2: 输入: s …

10:Logic软件原理图中添加电源与GND

Logic软件原理图中添加电源与GND

“品牌VS套路:华为、格行、中兴随身WiFi谁才是真良心?“

咱们打工人月末有三光&#xff0c;工资花光&#xff0c;流量用光&#xff0c;话费剩光光。 不过除了工资没办法解决&#xff0c;剩下两个还能抢救一下 提起这个事情的起因是我发现现在的互联网平台到处都是推销随身WiFi的&#xff0c;什么零月租、几百G流量不限速不限量啥的&…

Cortex-A7支持的内存类型详解及配置举例

0 参考资料 Introduction to memory protection unit management on STM32 MCUs.pdf ARM ArchitectureReference Manual ARMv7-A and ARMv7-R edition.pdf 1 Cortex-A7支持的内存类型详解 1.1 内存类型 ARM架构处理器支持的内存类型分为三种&#xff0c;分别是Normal memory&…

airflow看不到任务日志解决方案

1. 基础信息 airflow 版本&#xff1a;2.5.3 2. 问题现象 airflow web-server 界面&#xff0c;看到某些任务的具体运行日志&#xff0c;只有少量日志&#xff0c;如下图所示&#xff1a; 具体日志内容如下&#xff1a; na-fudao-data-airflow-test-2-21.alibji.zybang.com…

某视频云平台存在未授权窃取用户凭据漏洞

我和你一样&#xff0c;历经破碎、痛苦的生活&#xff0c;却未垮掉&#xff0c;每一日都从承受的苦难中&#xff0c;再一次将额头浸入光明 漏洞详情&#xff1a; 某视频云平台存在未授权访问漏洞&#xff0c;攻击者可以直接访问平台的API接口文档&#xff0c;从而获取系统的A…

【大模型】Reflextion解读

前言&#xff1a;一种大模型强化学习技术&#xff0c;将传统的梯度更新时的参数信号替换成上下文的语言总结&#xff0c;过程和人类反思相似。区别与RLHF&#xff0c;Reflextion是agent自我反思&#xff0c;RLHF是人类反馈。 目录 1. 基础知识1.1 强化学习1.2 大模型Agent 2. 创…

Upload-LABS通关攻略【1-20关】

Pass-01 第一关是前端JS绕过 上传一个php文件显示只能上传特定后缀名的文件 这里将1.php改为1.jpg直接进行抓包&#xff0c;在数据包中将jpg改为php放行 文件上传成功&#xff0c;邮件图片新建页面打开 可以访问到1.php文件&#xff0c;则一句话密码上传成功 使用蚁剑 进行连接…

探秘DevSecOps黄金管道,安全与效率的完美融合

软件应用的安全性已成为企业和用户关注的焦点&#xff0c;DevSecOps作为一种将安全融入开发和运维全过程的理念和实践&#xff0c;旨在消除传统开发模式中安全被后置处理的弊端。DevSecOps黄金管道&#xff08;Golden Pipeline&#xff09;是实现这一理念的核心框架&#xff0c…

蜂鸣器奏乐

一、粗略了解简谱 拍号&#xff1a;如图&#xff0c;“2”表示一个小节有2拍&#xff0c;“4”表示4分音符为一拍 终止线表示歌曲结束 注意&#xff1a;以下音符都按以四分音符为一拍计算拍数 四分音符&#xff1a; 唱一拍 二分音符&#xff1a; 某一个音右边有一个小横线&…

OpenAI GPT3 Search API not working locally

题意&#xff1a;"OpenAI GPT-3 搜索 API 在本地无法工作" 问题背景&#xff1a; I am using the python client for GPT 3 search model on my own Jsonlines files. When I run the code on Google Colab Notebook for test purposes, it works fine and returns …

文件上传漏洞详解(持续更新…)

第一关 步骤一&#xff0c;打开第一关先点击浏览上传一个jpg格式的图片 步骤二&#xff0c;打开BP修改jpg为php然后放包 步骤三&#xff0c;右键打开图像 成功解析 步骤四&#xff0c;打开蚁剑 第一关还是蛮简单的 第二关 步骤一&#xff0c;打开第二关先点击浏览上传一个j…

leetcode637. 二叉树的层平均值,广度优先搜索BFS

leetcode637. 二叉树的层平均值 给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差 10-5 以内的答案可以被接受。 给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差 10-5 以内的答案可以被接受。…

跑通llama-factory

1.在ubuntu下安装环境 git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory pip install -e “.[torch,metrics]” pip install --no-deps -e . 在本地windows&#xff0c;打开http://0.0.0.0:7863/&#xff0c;总是显示无法打开界面。 之后在…

!!学习整理知识模块——关于【如何本地搭建Whisper语音识别模型】/请按需收藏!!

成长路上不孤单&#x1f60a;【14后&#xff0c;C爱好者&#xff0c;持续分享所学&#xff0c;如有需要欢迎收藏转发&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#xff01;&#xff01;&#xff01;&#xff01;&#xff…