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

 使用上述命令可以查看当中数据库此时有多少人正在链接,还有其他的信息都可以通过上述命令来查看:
 

 

  

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

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

相关文章

linux内核使用ppm图片开机

什么是ppm图片 PPM(Portable Pixmap)是一种用于存储图像的文件格式。PPM图像文件以二进制或ASCII文本形式存储,并且是一种简单的、可移植的图像格式。PPM格式最初由Jef Poskanzer于1986年创建,并经过了多次扩展和修改。 PPM图像…

笔记本电脑如何安装openwrt

环境: 联想E14笔记本 装机U盘 DiskImage v1.6 刷写工具 immortalwrt镜像 问题描述: 笔记本电脑如何安装openwrt 解决方案: 一、官方版 1.官网下载固件 2.BIOS关闭安全启动改为引导 3.用U盘启动进入PE系统后,需要先用PE系…

docker 清除不用的容器数据

1. 提示错误 --gpus all docker: Error response from daemon: Conflict. The container name "abc" is already in use by container "89b96853dc4d973ec932123550c17bcb77954531d0a596a3abc92dab0c621cee". You have to remove (or rename) that contai…

linux中文文件名提示(无效的编码)问题解决办法

背景说明 我们通过web客户端上传在windows上上传中文文件名的文件到linux服务器上,在linux图形化界面中打开文件所在路径,显示文件名为(无效的编码);在命令行界面输入ls命令发现乱码。 原因 Windows 的文件名中文编…

线性代数运算方法总结

线性方程组的行列式解法(克拉默法则) 首先写出方程的系数行列式,第一列x1第二列x2以此类推,然后用每个方程式的结果分别代替第一列到第列,得到每个未知数对应的代数行列式,方程的解为代数行列式比系数行列…

数组笔试题解析(下)

数组面试题解析 字符数组 (一) 我们上一篇文章学习了一维数组的面试题解析内容和字符数组的部分内容,我们这篇文章讲解一下字符数组和指针剩余面试题的解析内容,那现在,我们开始吧。 我们继续看一组字符数组的面试…

深眸科技聚焦AI+机器视觉产业化建设,加速智能制造国产替代升级

随着科技的不断发展,传统的制造生产已经无法满足现代制造业的需求,智能制造应运而生,以智能化、柔性化等生产优势,大幅提升制造效率和生产质量。智能制造是指具有信息自感知、自决策、自执行等功能的先进制造过程、系统与模式的总…

qt 正则表达式简单介绍

正则表达式即一个文本匹配字符串的一种模式,Qt中使用QRegExp类进行模式匹配.主要应用:字符串验证,搜索,替换,分割..... 正则表达式中字符及字符集 c 匹配字符本身,如a匹配a \c 跟在\后面的字符匹配字符本身,但本表中下面指定的这些字符除外。 \a 匹…

美易官方:零售销售数据提振信心

美易全球投资中心副总裁Kenny Jolin表示全球股市在经历了动荡之后逐渐恢复了稳定。最近,美国股市表现强劲,连续六天上涨,道琼斯指数也创下了新高。这一趋势不仅反映了投资者信心的恢复,也表明了全球经济正在逐渐复苏。 他说&#…

如何在jenkins容器中安装python+httprunner+pytest+git+allure(一)

背景: API接口自动化使用python语言实现,利用httprunner框架编写自动化用例场景(执行的时候还是依赖pytest),使用jenkins自动构建git上的源代码,并产生allure报告可视化展示API执行结果。 步骤 1.进入jenkins容器 注意使用roo…

WPF 基于TableControl的页面切换

文章目录 前言其它项目的UserControl切换TableControl添加按钮,隐去TableItem的Header 结论 前言 我想用WPF简单实现一个按钮视图切换的效果,但是我发现别人的实现效果非常的麻烦。 其它项目的UserControl切换 我网上找了个开源的项目,他是…

【华为OD】向一个空栈中依次存入正整数,假设入栈元素n(1<=n<=2^31-1)按顺 序依次为nx…n4、n3、n2、n1,每当元素入栈时

“”" 向一个空栈中依次存入正整数,假设入栈元素n(1<=n<=2^31-1)按顺 序依次为nx…n4、n3、n2、n1,每当元素入栈时,如果n1=n2+.…+ny(y的范围[2.x],1<

【Spring教程29】Spring框架实战:从零开始学习SpringMVC 之 服务器响应知识全面详解

目录 1 环境准备2 响应页面3 返回文本数据4 响应JSON数据5 知识点总结 欢迎大家回到《Java教程之Spring30天快速入门》&#xff0c;本教程所有示例均基于Maven实现&#xff0c;如果您对Maven还很陌生&#xff0c;请移步本人的博文《如何在windows11下安装Maven并配置以及 IDEA配…

uniapp:使用fixed定位,iOS平台的安全区域问题解决

manifest.json > 添加节点 "safearea": { //iOS平台的安全区域"background": "#1C1E22","backgroundDark": "#1C1E22", // HX 3.1.19支持"bottom": {"offset": "auto"} },已解决&#xff…

OpenAI发布了一份提示工程指南(Prompt Engineering Guide)

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版&#xff0c;欢迎购买。点击进入详情 Open AI 发布了一份很棒的提示工程指南。 以下是在 GPT-4 使用提示时获得更好结果的 6 种策略的总结:

elasticsearch|大数据|kibana的安装(https+密码)

前言&#xff1a; kibana是比较好安装的&#xff0c;但https密码就比较麻烦一些了&#xff0c;下面将就如何安装一个可在生产使用的kibana做一个简单的讲述 一&#xff0c; kibana版本和下载地址 这里我想还是强调一下&#xff0c;kibana的版本需要和elasticsearch的版本一…

下载文件 后端返回给前端 response header 响应头

当浏览器在请求资源时&#xff0c;会通过http返回头中的content-type决定如何显示/处理将要加载的数据&#xff0c;如果这个类型浏览器能够支持阅览&#xff0c;浏览器就会直接展示该资源&#xff0c;比如png、jpeg、video等格式。在某些下载文件的场景中&#xff0c;服务端可能…

代码审计中的安全测试方法

安全测试的定义和分类代码审计是一种针对软件代码的安全测试方法&#xff0c;目的是发现并修复软件中的安全漏洞。安全测试是指对软件系统进行安全性评估的过程&#xff0c;包括静态分析、动态测试、黑盒测试等多种方法。在安全测试中&#xff0c;最常用的方法之一就是代码审计…

【FunASR】Paraformer语音识别-中文-通用-16k-离线-large-onnx

模型亮点 模型文件: damo/speech_paraformer-large-vad-punc_asr_nat-zh-cn-16k-common-vocab8404-pytorchParaformer-large长音频模型集成VAD、ASR、标点与时间戳功能&#xff0c;可直接对时长为数小时音频进行识别&#xff0c;并输出带标点文字与时间戳&#xff1a; ASR模型…

vue中哪些数组的方法可以做到响应式

Vue2 中为什么直接通过数组的索引修改元素是不会触发视图更新 vue2 为什么不直接监听数组 Vue2 对于数组提供了一些变异方法 重写数组方法源码分析 定义拦截器将拦截器挂载到数组上面收集依赖 扩展&#xff1a;理解Vue2如何解决数组和对象的响应式问题 对复杂对象的处理 复杂对…