MySQL——库的操作

1、创建数据库

语法:

CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [,
create_specification] ...]
create_specification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name

这里的CHARACTER SET表示指定数据库采用的字符集

COLLATE 表示指定数据库字符集的校验规则

2、字符集和字符集校验规则

字符集

字符集是一套符号和编码的集合。它定义了数据库可以存储哪些字符,以及如何将这些字符转换为二进制数据存储到计算机中。

通俗解释:
你可以把字符集想象成一本“密码本”。这本密码本规定了:

  • 有哪些字符:比如字母 Aa,中文 ,表情符号 😊 等。

  • 每个字符对应的编号(编码)是什么:比如在 ASCII 字符集中,字母 A 的编号是 65(二进制是 01000001

常见字符集:

  • ASCII:最早的英文字符集,包含英文字母、数字和一些控制字符,共128个字符。

  • ISO-8859-1 (Latin-1):扩展了 ASCII,加入了西欧语言字符,如 ñçö 等。

  • GB2312 / GBK / GB18030:中国国家标准,用于存储简体中文字符。GBK 是 GB2312 的扩展,GB18030 是更全面的扩展。

  • BIG5:繁体中文标准,主要用于台湾、香港等地。

  • UTF-8当今最重要的字符集。它是 Unicode 标准的一种可变长度实现,可以表示世界上几乎所有语言的字符,包括大量表情符号和特殊符号。它是国际化的首选。

为什么重要
如果字符集设置不正确,就会出现“乱码”。例如,如果你用 GBK 编码去解码一段用 UTF-8 存储的中文文本,显示出来的就是一堆无法识别的字符。

字符集校验规则

至于校验规则是在字符集内,用于比较和排序字符的一套规则。它定义了字符如何被比较、排序以及是否区分大小写和重音。

通俗解释
字符集定义了“有什么字”,而校验规则定义了“这些字怎么排顺序、怎么算相等”。
比如,有一组单词:appleAppleBanana

  • 如果使用区分大小写的校验规则,排序可能是:AppleBananaapple(根据 ASCII 码,大写字母在前)。

  • 如果使用不区分大小写的校验规则,排序可能是:appleAppleBananaa 和 A 被视为相同,按下一个字母排序)。

校验规则通常包含以下信息

  1. 是否区分大小写(Case Sensitivity)A 和 a 是否相同?

    • _cs (case sensitive):区分

    • _ci (case insensitive):不区分

  2. 是否区分重音(Accent Sensitivity)a 和 á 是否相同?

    • _as (accent sensitive):区分

    • _ai (accent insensitive):不区分

  3. 其他规则,如是否区分空格等。

常见校验规则(以 MySQL 的 utf8mb4 字符集为例)

  • utf8mb4_general_ci:一种较老的校验规则,排序精度不高但速度快。不区分大小写。

  • utf8mb4_unicode_ci:基于 Unicode 标准进行排序和比较,能更准确地处理各种语言的排序(如德语中的 ß),速度稍慢。不区分大小写。推荐使用

  • utf8mb4_0900_ai_ci:MySQL 8.0 引入的,基于更现代的 Unicode 9.0 标准,比 unicode_ci 更精确和高效。不区分重音,不区分大小写。

  • utf8mb4_bin:将每个字符直接根据其二进制编码进行比较。这意味着它区分大小写和重音A (0x41) 和 a (0x61) 是不同的。

具体使用

先来看看MySQL数据库都支持哪些字符集和校验规则

查看数据库支持的字符集

show charset;

这是表格一部分,可以在其中找到utf8字符集

查看数据库支持的字符集校验规则

show collation;

 首先创建一个数据库

注:这里创建数据库时没有指名字符集和字符集校验规则时,默认字符集就是utf8,校验规则就是

utf8_ general_ ci(utf8_general_ci不会区分大小写)

然后在库里创建一个表,并插入若干个数据,最后查询一下

这是表里现有的数据,那么如果查一下字符’a‘呢?

可以发现并没有区分大小写

那如果是进行排序呢?

结果显而易见。

然后再来创建一个数据库test_db1,这时选用utf8_bin(区分大小写)校验规则

然后来查询一下字符‘a'以及进行排序

上面还用到了两个没见过的子句

where 和 order by

where子句

功能:用来过滤行,决定哪些数据行能进入结果集。

用法:

select 列名
from 表名
where 条件表达式;

特点

  • 在数据返回之前就执行过滤。

  • 支持比较运算符(=, >, <, >=, <=, <>)、逻辑运算符(AND, OR, NOT)、范围(BETWEEN)、集合(IN)、模式匹配(LIKE)、空值判断(IS NULL)等。

order by 子句

功能:用来对结果集排序,不影响数据存储顺序,只是展示时排序。

用法:

select 列名
from 表名
order by 列名 [asc|desc];
  • asc 升序(默认)。

  • desc 降序。

特点:

  • 只能排在整个 SQL 的最后(limit 之前也可以)。

  • 可以按多个字段排序。

  • 排序规则受 collation(排序规则) 影响,比如 utf8_general_ci 大小写不敏感,utf8_bin 大小写敏感。

操纵数据库

显示创建语句

show create database 数据库名;

说明:

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

修改数据库

语法:

ALTER DATABASE db_name
[alter_spacification [,alter_spacification]...]
alter_spacification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name

对数据库的修改主要指的是修改数据库的字符集,校验规则

这里修改一下test_db1数据库的字符集

可以看到,默认执行的语句变了

数据库删除

语法:

DROP DATABASE [IF EXISTS] db_ name;

执行删除之后的结果:

  • 数据库内部看不到对应的数据库
  • 对应的数据库文件夹被删除,级联删除,里面的数据表全部被删

注意:不要随意删除数据库

数据库备份

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

将test_db1备份到root目录下的MySQL目录里

注:这是在shell里面输入,而不是在mysql里

这下可以在相关目录里看见备份的文件了

如果再查看一下备份文件的内容呢?

会发现原来是一串之前输入过的mysql语句

那么既然已经备份了就可以删除mysql里面的库文件了

现在还原一下删除的库

这次是在mysql客户端里输入

source 相关路径/mytest.sql;

可以看到有很多语句被执行的提示

查看库里都存在的表

show tables;

查看表的结构

desc 表名;

这样删除的库就被还原了

如果备份的不是整个数据库,而是其中的一张表,怎么做?

# mysqldump -u root -p 数据库名 表名1 表名2 > 路径

同时备份多个数据库

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

如果备份一个数据库时,没有带上-B参数, 在恢复数据库时,需要先创建空数据库,然后使用数据库,再使用source来还原

查看连接情况

show processlist

可以看到目前只有我一个root用户在连接数据库

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

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

相关文章

Python ast模块(Abstract Syntax Trees,抽象语法树)介绍及使用

文章目录 核心概念 基本使用流程 常用节点类型 示例代码 实际应用场景 注意事项 `ast.literal_eval()` 功能说明 适用场景 使用示例 限制与安全特性 与 `eval()` 的对比 总结 Python 的 ast 模块( Abstract Syntax Trees,抽象语法树)允许你解析、分析和修改 Python 代码的…

C++宽度优先搜索算法:队列与优先级队列

本期我们就来深入学习一下C算法中一个很重要的算法思想&#xff1a;宽度优先搜索算法 宽度优先算法是一个应用十分广泛的算法思想&#xff0c;涉及的领域也十分繁多&#xff0c;因此本篇我们先只涉猎它的一部分算法题&#xff1a;队列/优先级队列&#xff0c;后续我们会进一步地…

类的property属性

​​Python 中的 property 特性详解​​property 是 Python 中用于​​将方法转换为属性​​的装饰器&#xff0c;它允许开发者以访问属性的方式调用方法&#xff0c;同时可以添加逻辑控制&#xff08;如数据校验、计算属性等&#xff09;。以下是其核心用法和优势&#xff1a;…

【Redis#9】其他数据结构

引言 Redis 除了我们最常用的 String、Hash、List、Set、ZSet&#xff08;Sorted Set&#xff09; 这五种基本数据结构外&#xff0c;还提供了很多高级或特殊用途的数据结构/类型 &#xff0c;它们可以满足更复杂的业务需求。 ✅ Redis 的“五大基本数据结构”回顾类型特点Stri…

AutoGen——自定义Agent

目录引子自定义 AgentCountDownAgentArithmeticAgent在自定义 Agent 中使用自定义模型客户端让自定义 Agent 声明式化Selector Group Chat示例&#xff1a;网页搜索 / 数据分析代理&#xff08;Agents&#xff09;Workflow终止条件&#xff08;Termination Conditions&#xff…

【重定向和转发的核心理解】

重定向和转发 不废话&#xff1a; “转发” 的核心定义&#xff1a; 服务端内部主导跳转、客户端无感知&#xff08;仅 1 次请求&#xff09;、浏览器 URL 不改变&#xff0c;与传统 Web 开发中 “转发” 的本质逻辑完全一致&#xff0c;只是实现载体&#xff08;Nginx 路由层 …

生成对抗网络详解与实现

生成对抗网络详解与实现0. 前言1. GAN 原理2. GAN 架构3. 损失函数3.1 判别器损失3.2 生成器损失3.4 VANILLA GAN4. GAN 训练步骤0. 前言 生成对抗网络 (Generative Adversarial Network, GAN) 是图像和视频生成中的主要方法之一。在本节中&#xff0c;我们将了解 GAN 的架构、…

FPGA硬件开发-XPE工具的使用

目录 XPE 工具概述​ XPE 使用步骤详解​ 1. 工具获取与初始化​ 2. 器件选择与配置​ 3. 电源电压设置​ 4. 资源使用量配置​ 5. 时钟与开关活动配置​ 6. 功耗计算与报告生成​ 报告解读与电源设计优化​ 常见问题与最佳实践​ 与实际功耗的差异处理​ 工具版本…

CentOS 7.9 RAID 10 实验报告

文章目录CentOS 7.9 RAID 10 实验报告一、实验概述1.1 实验目的1.2 实验环境1.3 实验拓扑二、实验准备2.1 磁盘准备2.2 安装必要软件三、RAID 10阵列创建3.1 创建RAID 10阵列3.2 创建文件系统并挂载3.3 保存RAID配置四、性能基准测试4.1 初始性能测试4.2 创建测试数据集五、故障…

机器人逆运动学进阶:李代数、矩阵指数与旋转流形计算

做机器人逆运动学&#xff08;IK&#xff09;的时候&#xff0c;你迟早会遇到矩阵指数和对数这些东西。为什么呢&#xff1f;因为计算三维旋转的误差&#xff0c;不能简单地用欧氏距离那一套&#xff0c;那只对位置有效。旋转得用另一套方法——你需要算两个旋转矩阵之间的差异…

计算机视觉(opencv)实战十八——图像透视转换

图像透视变换详解与实战在图像处理中&#xff0c;透视变换&#xff08;Perspective Transform&#xff09; 是一种常见的几何变换&#xff0c;用来将图像中某个四边形区域拉伸或压缩&#xff0c;映射到一个矩形区域。常见应用场景包括&#xff1a;纠正拍照时的倾斜&#xff08;…

【飞书多维表格插件】

coze中添加飞书多维表格记录插件 添加单条记录 [{"fields":{"任务详情":"选项1","是否完成":"未完成"}}]添加多条记录 [{"fields":{"任务详情":"选项1","是否完成":"已完…

Java基础 9.14

1.Collection接口遍历对象方式2-for循环增强增强for循环&#xff0c;可以代替iterator选代器&#xff0c;特点&#xff1a;增强for就是简化版的iterator本质一样 只能用于遍历集合或数组package com.logic.collection_;import java.util.ArrayList; import java.util.Collectio…

数据结构(C语言篇):(十三)堆的应用

目录 前言 一、堆排序 1.1 版本一&#xff1a;基于已有数组建堆、取栈顶元素完成排序 1.1.1 实现逻辑 1.1.2 底层原理 1.1.3 应用示例 1.1.4 执行流程 1.2 版本二&#xff1a;原地排序 —— 标准堆排序 1.2.1 实现逻辑 1.2.2 底层原理 1.2.3 时间复杂度计算…

4步OpenCV-----扫秒身份证号

这段代码用 OpenCV 做了一份“数字模板字典”&#xff0c;然后在银行卡/身份证照片里自动找到身份证号那一行&#xff0c;把每个数字切出来跟模板比对&#xff0c;最终输出并高亮显示出完整的身份证号码&#xff0c;下面是代码解释&#xff1a;模块 1 工具箱&#xff08;通用函…

冯诺依曼体系:现代计算机的基石与未来展望

冯诺依曼体系&#xff1a;现代计算机的基石与未来展望 引人入胜的开篇 当你用手机刷视频、用电脑办公时&#xff0c;是否想过这些设备背后共享的底层逻辑&#xff1f;从指尖轻滑切换APP&#xff0c;到电脑秒开文档&#xff0c;这种「无缝衔接」的体验&#xff0c;其实藏着一个改…

前端基础 —— C / JavaScript基础语法

以下是对《3.JavaScript(基础语法).pdf》的内容大纲总结&#xff1a;---&#x1f4d8; 一、JavaScript 简介 - 定义&#xff1a;脚本语言&#xff0c;最初用于表单验证&#xff0c;现为通用编程语言。 - 应用&#xff1a;网页开发、游戏、服务器&#xff08;Node.js&#xff09…

springboot 二手物品交易系统设计与实现

springboot 二手物品交易系统设计与实现 目录 【SpringBoot二手交易系统全解析】从0到1搭建你的专属平台&#xff01; &#x1f50d; 需求确认&#xff1a;沟通对接 &#x1f5e3; &#x1f4ca; 系统功能结构&#xff1a;附思维导图 ☆开发技术&#xff1a; &#x1f6e…

【Android】可折叠式标题栏

在 Android 应用开发中&#xff0c;精美的用户界面可以显著提升应用品质和用户体验。Material Design 组件中的 CollapsingToolbarLayout 能够为应用添加动态、流畅的折叠效果&#xff0c;让标题栏不再是静态的元素。本文将深入探讨如何使用 CollapsingToolbarLayout 创建令人惊…

Debian13下使用 Vim + Vimspector + ST-LINK v2.1 调试 STM32F103 指南

1. 硬件准备与连接 1.1 所需硬件 STM32F103C8T6 最小系统板ST-LINK v2.1 调试器连接线&#xff08;杜邦线&#xff09; 1.2 硬件连接 ST-LINK v2.1 ↔ STM32F103C8T6 连接方式&#xff1a;ST-LINK v2.1 引脚STM32F103C8T6 引脚功能说明SWDIOPA13数据线SWCLKPA14时钟线GNDGND共地…