mysql 数据库 关于库的基本操作
库的操作
如果想到 mysql 客户端当中数据 系统当中的命令的话,直接输入的话,会被认为是 mysql 当中的命令。
所以,在mysql 当中执行系统当中的命令的话,要在系统命令之前带上 ststem ,表示系统命令:
但是不是所有命令都是可以使用的,只能使用部分命令。
创建/删除 数据库
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: 指定数据库字符集的校验规则
IF NOT EXISTS : 表示的是 如果当前没有这个要创建的数据库,才会对这个数据库进行创建。
创建名为 db1 的数据库:
create database db1;
其实上述创建数据库的本质其实就是在 指定存储数据库文件的目录当中,创建一个目录。
删除一个数据库:
drop database db_name;
而,删除一个数据库其实本质也就是 在指定存储数据库文件的路径当中删除某一个目录。
所以,其实你在 指定目录当中直接删除掉 指定的目录 文件,也可以达到把这个数据库目录删除的目的。但是我们不建议及这样做,我们还是推荐使用 数据库当中的 drop databases 命令来删除一个数据库。
数据库的 编码集 和 校验集
因为各种语言的不同,所以在计算机表示语言的编码格式不同,所以,数据库当中规定,使用某一种编码格式来 存储数据之时,就必须用 同一种编码格式来取出数据。
而数据库的编码集,是数据库在存储数据之时,使用的编码格式。
数据库的 校验集,是用户在使用数据库进行数据的 增删改查的过程当中,对于用户使用的编码格式,和数据库当中存储的数据的编码格式做效验的作用。
数据库的 校验集,支持数据库 进行字段的比较使用的编码。本质也是一种 读取数据库当中读数据采用的编码格式。
总结:
数据库对数据做的任何操作,都必须保证操作当中使用的编码 和 存储数据所使用的编码必须是一样的。
查看当前数据库当中有什么表:
show tables;
查看数据库本身的编码集:
show variables like 'character_set_database';
可以发现我们当前数据库的编码格式是 latin1 这个编码格式的。
查看你数据库的校验集:
show variables like 'collation_database';
查看其他的校验集:
show variables like 'collation_%';
由上述可以看到,链接 和 服务器当中使用的 是 utf-8 的编码格式。
还可以查看数据库支持的所有的字符集:
show charset;
使用上述的命令,可以查看到当前数据库所支持的字符集编码格式。
查看数据库支持的 校验集 编码格式:
show collation;
指定 编码格式 和 校验规则 创建数据库
上述创建数据库的方式是直接进行创建,那么就会使用的默认的创建方式,这个默认的编码格式是在数据库的配置文件当中进行设置的。
那么,如果我们想要指定编码格式来 创建数据库的话,可以像如下方式来进行操作:
create database d1 charset=utf8;
像上述的方式就是以 utf-8 的方式来创建 d1 这个数据库。
除了使用上述的方式,还可以使用下述的方式定义数据库的编码格式:
create database d2 character set utf8;
上述是指明数据库的编码格式,我们还可以指明数据库的校验规则:
create database d3 charset=utf8 collate utf8_general_ci;
如果想要查看数据库的编码格式 和 校验规则的话,需要查看这个数据库目录当中的 db.opt 这个配置文件。
你可以看到,d3 这个数据库的 编码格式 和 校验格式 都是 utf-8 的。
数据库的校验规则对数据库的影响
区分大小写 于 不区分大小写
我们分别使用 utf8_general_ci 和 utf8_bin 两种校验规则,和 utf-8 的同一种编码规则来分别创建两个数据库:
create database test1 collate utf8_general_ci;create database test2 collate utf8_bin;
此时这两个数据库的 编码格式是一样的,但是 校验规则是不一样的:
然后我们对两个数据库当中进行 建表的操作:
在 test1 数据库当中建立一个 person 表:
查看 test1 当中的全部表:
查看 Perosn的 表结构:
向 test1 数据库当中的person 表插入一些值:
此时,我们查询 perosn 表当中 name='a' 的字段的话,发现不管是 'a' 还是 'A' 都被查找出来了:
说明,utf8_general_ci 这个校验规则是不区分大小写的。
同样的,我们在 test2 数据库当中也创建一个person表;
还是插入一些 大小写的 数据:
此时查询 name='a' 的字段,发现只查找出了 'a' 的字段:
说明,utf8_bin 是区分大小的写的。
区分大小写 于 不区分大小写排序以及结果
test2 当中对 name 进行排序输出:
test1 当中对 name 进行排序输出:
因为 在 ascll 表当中,大写字符的 ascll 码值 是要小于 小写字符的 ascll 码值的,所以,在区分大小写的 text2 数据库的当中,排序结果就是按照 升序来 排列的。
但是,在 text1 数据库使用的 校验规则 是不区分大小写的,所以,对于 'a' 和 'A' 两个字符是一个字符,所以直接进行输出。
上述的例子,告诉我们一件事情:
数据库的校验集是会影响我们的查询,比较结果的。
库的 删改查
查看数据库
show databases;
显示创建语句
show create database 数据库名;
例子:
mysql> show create database mytest;
+----------+----------------------------------------------------------------+
| Database | Create Database |
+----------+----------------------------------------------------------------+
| mysql | CREATE DATABASE `mytest` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+----------------------------------------------------------------+
- MySQL 建议我们关键字使用大写,但是不是必须的。
- 数据库名字的反引号``,是为了防止使用的数据库名刚好是关键字。
- /*!40100 default.... */ 这个不是注释,表示当前mysql版本大于4.01版本,就执行这句话。
数据库删除
DROP DATABASE [IF EXISTS] db_ name;
需要注意的是:如果我们直接对一个数据库进行删除的话,相当于是把这个数据库的目录直接删除掉了,那么在这个数据库当中存储的数据,也就直接被我们删除掉了。
所以我们是不建议直接删除数据库这样的操作的。
执行删除之后的结果:
- 数据库内部看不到对应的数据库。
- 对应的数据库文件夹被删除,级联删除,里面的数据表全部被删。
修改数据库
ALTER DATABASE db_name
[alter_spacification [,alter_spacification]...]alter_spacification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name
- 对数据库的修改主要指的是修改数据库的字符集,校验规则。
比如:修改 test2 数据库的 编码集 和 校验集:
查看 test2 数据库的 编码集 和 校验集:
数据库的备份和恢复
如果是在 Linux 当中我们想对 一个文件进行的备份的话,其实就是把这个文件拷贝一份。文件夹的话,就是使用 zip 等等命令压缩的一下,打个包,备份一下。
但是,如果是在数据库当中进行上述方式进行备份的话,那么如果这个数据库是在 版本5.7 创建的话,打包备份到其他 数据库版本,比如是 5.0 ,那么可能这个数据库就因为环境的不兼容,所以就不能使用了。
所以,像上述这种直接打包数据库的文件的操作我们是完全不推荐的。
在现如今的数据库版本当中,对于数据库名字的修改命令已经没有了。这是因为,如果你修改了数据库的名字,同时有别人正在访问这个数据库的话,那么别人来说体验就极其不好了。
mysqldump 工具 和 source
但是,对于数据的文件的备份在数据库当中是命令来实现的:
对于 mysqldump 这个工具,在安装 mysql 之时就已经安装了。
# mysqldump -P3306 -u root -p 密码 -B 数据库名 > 数据库备份存储的文件路径
- -P:要使用的端口号;
- -u:要使用的用户
- -p:用户对应的密码
- -B:要拷贝的数据库名,然后使用 ">" 指定这个数据库要拷贝到的 文件路径,也就是 重定向到这个路径当中。
比如现在我们要拷贝这个 test1 的这个数据库:
如上所示的操作,就会帮我们把 test1 数据库的内容拷贝到 test1.sql 这个文件当中。
但是,在这个 test1.sql 文件当中存储的其实是我们曾经对 test1 的各种操作的命令,还有一些配置文件等等,我们使用 vim 打开这个拷贝过后的文件:
这些都是我们曾经对 test1 这个数据库当中曾经使用的过的 有效操作。
所以,以后当有别人拷贝了上述的 test1.sql 这个拷贝过后的文件的话,即使在对方的mysql 当中是没有 test1 这个数据库的,但是可以通过这个 test1.sql 文件,直接创建出一个 于test1相同的数据库出来:
使用 下述的命令来使用上述的 test1.sql 文件创建一个新的 数据库出来:
source 备份文件所在路径;
此时就相当于是 使用 test1.sql 文件当中的 保存的 有效操作的命令,就可以创建出一个 和 原本test1 数据库相同的数据库出来。
注意:如果上述在使用 mysqldump 工具之时,没有使用 -B 选项指定 数据库,那么他会默认在当前 use 的数据库当中记录 有效操作,但是在这些操作当中是不会记录 create 数据库这个操作的。所以,此时请先创建一个数据库,在使用 source 命令还原数据库。
备份的不是整个数据库,而是其中的一张表:
mysqldump -u root -p 数据库名 表名1 表名2 > D:/mytest.sql
同时备份多个数据库:
mysqldump -u root -p -B 数据库名1 数据库名2 ... > 数据库存放路径
查看当中数据库的链接情况
show processlist
使用上述命令可以查看当中数据库此时有多少人正在链接,还有其他的信息都可以通过上述命令来查看:
相关文章:

mysql 数据库 关于库的基本操作
库的操作 如果想到 mysql 客户端当中数据 系统当中的命令的话,直接输入的话,会被认为是 mysql 当中的命令。 所以,在mysql 当中执行系统当中的命令的话,要在系统命令之前带上 ststem ,表示系统命令: 但是…...

【通用】Linux,VSCode,IDEA,Eclipse等资源相对位置
正文 不论是 IDEA、Linux、VSCode、cmd等等吧,都遵循这个规则: 如果以斜杠开头,表示从根开始找: IDEA的根是classpath(classpath就是项目被编译后,位于 target下的 classes文件夹,或者位于ta…...

音视频技术开发周刊 | 323
每周一期,纵览音视频技术领域的干货。 新闻投稿:contributelivevideostack.com。 Meta牵头组建开源「AI复仇者联盟」,AMD等盟友800亿美元力战OpenAI英伟达 超过50家科技大厂名校和机构,共同成立了全新的人工智能联盟。以开源为旗号…...

STM32在CTF中的应用和快速解题
题目给的是bin文件,基本上就是需要我们手动修复的固件逆向。 如果给的是hex文件,我们可能需要使用MKD进行动态调试 主要还是以做题为目的 详细的可以去看文档:https://pdf1.alldatasheet.com/datasheet-pdf/view/201596/STMICROELECTRONIC…...

SaaS 电商设计 (五) 私有化部署-实现 binlog 中间件适配
一、 背景 具体的中间件私有化背景在上文 SaaS 电商设计 (二) 私有化部署-缓存中间件适配 已有做相关介绍.这里具体讨论的场景是通过解析mysql binlog 来实现mysql到其他数据源的同步.具体比如:在电商的解决方案业务流中经常有 ES 的使用场景,用以解决一些复杂的查询和搜索商品…...

Android APP 常见概念与 adb 命令
adb 的概念 adb 即 Android Debug Bridge 。在窗口输入 adb 即可显示帮助文档。adb 实际上就是在后台开启一个 server,会接收 adb 的命令然后帮助管理,控制,查看设备的状态、信息等,是开发、测试 Android 相关程序的最常用手段。…...

菜鸟学习日记(python)——函数
函数是组织好的,用来实现某些功能的代码块,它可以重复使用。 函数能提高应用的模块性,和代码的重复利用率。Python提供了许多内建函数,比如print()。但我们也可以自己创建函数,这被叫做用户自定义函数。 定义函数 用…...

垃圾回收 (GC) 在 .NET Core 中是如何工作的?
提起GC大家肯定不陌生,但是让大家是说一下GC是怎么运行的,可能大多数人都不太清楚,这也很正常,因为GC这东西在.NET基本不用开发者关注,它是依靠程序自动判断来释放托管堆的,我们基本不需要主动调用Collect(…...

Appium 图像识别技术 OpenCV
在我们做App自动化测试的时候,会发现很多场景下元素没有id、content-desc、text等等属性,并且有可能也会碰到由于开发采用的是自定义View,View中的元素也无法识别到,很多的自动化测试框架对此类场景束手无策。Appium在V1.9.0中有给…...

产品Axure的元组件以及案例
前言 产品<Axure的安装以及组件介绍-CSDN博客经过上文我们可以知道我们Axure是一款适用于网站、移动应用和企业软件的交互式原型设计工具。它可以帮助用户创建高保真的交互式原型,包括线框图、流程图、模型、注释和规格等,以便与客户、开发人…...

智能优化算法应用:基于头脑风暴算法3D无线传感器网络(WSN)覆盖优化 - 附代码
智能优化算法应用:基于头脑风暴算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于头脑风暴算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.头脑风暴算法4.实验参数设定5.算法结果6.…...
flutter Pageview组件
PageView组件说明 组件说明PageView,PageController的源码简单demo 组件说明 属性说明scrollDirection滑动反向 Axis.vertical上下滑动 Axis.horizontal左右滑动reverse是否反转 true从最后一个记0controllerPageController见下文physics滚动方式pageSnapping是否有…...

如何用 Cargo 管理 Rust 工程系列 丙
以下内容为本人的学习笔记,如需要转载,请声明原文链接 微信公众号「ENG八戒」https://mp.weixin.qq.com/s/viSsCaFR2x9hZOvo1PoRqA 添加依赖项 前面已经提到过在 cargo 配置文件 Cargo.toml 中如何手动添加工程依赖项,cargo 同样提供了 add …...
Vue学习笔记-Vue3中的provide与inject
作用 provide和inject用于实现祖孙间的数据通信 用法 导入:import {provide,inject} from vue 使用: provide:祖组件使用该方法提供数据(可以给任意后代组件,但一般用于孙组件及其后代组件,因为父子间的…...

2021年数维杯国际大学生数学建模A题新冠肺炎背景下港口资源优化配置策略求解全过程文档及程序
2021年数维杯国际大学生数学建模 A题 新冠肺炎背景下港口资源优化配置策略 原题再现: 2020年初,新型冠状病毒(COVID-19)在全球迅速蔓延。根据世界卫生组织2021年7月31日的报告,新冠病毒疫情对人类的影响可能比原先预…...

【css】css实现文字两端对齐效果:
文章目录 一、方法1:二、方法2:三、注意: 一、方法1: 给元素设置 text-align: justify;text-align-last: justify;并且加上text-justify: distribute-all-line; 目的是兼容ie浏览器 p{width: 130px;text-align: justify;text-alig…...
ElasticSearch指南 - Mapping - Metadata fields
Metadatas - fields 每份doc都有关联它的metadata数据, 例如_index 和 _id字段. 这些metadatas字段的一些行为能在创建mapping的时候被定制化. 表示唯一性的metadatas字段 _index 表示doc属于哪个index _id doc的id 源doc的metadatas字段 _source doc的原始json字符串 _s…...
12.15每日一题(备战蓝桥杯摘花生)
12.15每日一题(备战蓝桥杯摘花生) 题目 摘花生 Hello Kitty想摘点花生送给她喜欢的米老鼠。 她来到一片有网格状道路的矩形花生地(如下图),从西北角进去,东南角出来。 地里每个道路的交叉点上都有种着一株花生苗,上…...

VUE-脚手架搭建
文章目录 一、概述二、前提准备1. 安装 node-js2. npm 镜像设置3. 安装 vs-code 三、脚手架搭建1. Vue-2 搭建1. Vue-3 搭建 一、概述 官网:http://cn.vuejs.org/ vue 有两个大版本,分别是 vue-2 和 vue-3,目前新项目的话用 vue-3 的会比较多…...
ArcGIS Pro SDK根据Xml/Json文件反向生成几何
需求: geometry文件导出后的xml,在另一台电脑上反向生成geometry 解决方案: 点 MapPoint minPointImport MapPointBuilderEx.FromXml(xml); 线 包络线 Envelope envelopeImport EnvelopeBuilderEx.FromXml(xml); 面 var geometryB…...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill
视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...

基于Java+VUE+MariaDB实现(Web)仿小米商城
仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意:运行前…...
为什么要创建 Vue 实例
核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...
6️⃣Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙
Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙 一、前言:离区块链还有多远? 区块链听起来可能遥不可及,似乎是只有密码学专家和资深工程师才能涉足的领域。但事实上,构建一个区块链的核心并不复杂,尤其当你已经掌握了一门系统编程语言,比如 Go。 要真正理解区…...
用神经网络读懂你的“心情”:揭秘情绪识别系统背后的AI魔法
用神经网络读懂你的“心情”:揭秘情绪识别系统背后的AI魔法 大家好,我是Echo_Wish。最近刷短视频、看直播,有没有发现,越来越多的应用都开始“懂你”了——它们能感知你的情绪,推荐更合适的内容,甚至帮客服识别用户情绪,提升服务体验。这背后,神经网络在悄悄发力,撑起…...