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

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

 

  

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录二刷 | 二叉树 | 110.平衡二叉树

代码随想录二刷 | 二叉树 | 110.平衡二叉树 题目描述解题思路递归迭代 代码实现递归法迭代法 题目描述 110.平衡二叉树 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉…

奥比中光 Femto Bolt相机ROS配置

作者: Herman Ye Auromix 测试环境: Ubuntu20.04/22.04 、ROS1 Noetic/ROS2 Humble、X86 PC/Jetson Orin、Kinect DK/Femto Bolt 更新日期: 2023/12/12 注1: Auromix 是一个机器人爱好者开源组织。 注2: 由于笔者水平有…

FL Studio水果软件最新版本号V21.0.3.3517内置中文补丁,可以切换成中文界面。

FL Studio 21.0.3.3517 Producer Edition 全称Fruity Loops Studio 21 Producer Edition ,就是大家熟悉的水果编曲软件,一个全能的音乐制作软件,包括编曲、录音、剪辑和混音等诸多功能,让你的电脑编程一个全能的录音室。FL Studio…

关于响应式布局,你需要了解的知识点

什么是响应式布局? 响应式布局,就是根据不同设备展示不同的布局,以免更方便用户浏览页面。 举个很简单的例子,我们在电脑上浏览网页,屏幕非常大,这时候可能采用的是如下图所示的布局方式。这种布局方式很宽…

C++类和对象(3)

目录 再谈构造函数 构造函数体赋值 初始化列表 【注意】 explicit关键字 Static成员 概念 特性 友元 友元函数 友元类 内部类 概念 特性: 匿名对象 拷贝对象时的一些编译器优化 再谈构造函数 构造函数体赋值 在创建对象时,编译…

后端打印不了trace等级的日志?-SpringBoot日志打印-Slf4j

在调用log变量的方法来输出日志时,有以上5个级别对应的方法,从不太重要,到非常重要 调用不同的方法,就会输出不同级别的日志。 trace:跟踪信息debug:调试信息info:一般信息warn:警告…

炒股怎么做杠杆?安全正规的融资融券了解一下!

加杠杆炒股是指放大投资资金进行股票交易,比如自有资金100万,向证券公司融资100万,那么投资者炒股的本金就有200万。当股市行情好的时候可以放大我们的收益! 目前我国股票加杠杆通过融资融券来实现,这个是唯一安全正规…

网络协议 - DNS 相关详解

网络协议 - DNS 相关详解 DNS简介域名层级结构域名服务器 DNS 解析流程为什么DNS通常基于UDP DNS 查询dig 查询host查询nslookup查询whois查询在线工具查询 DNS 调度原理地理位置调度不准确规则变更生效时间不确定高可用 DNS 安全相关什么是DNS劫持什么是DNS污染为什么要DNS流量…

电源适配器老化测试方法分享 电源测试系统助力老化测试

电源适配器老化测试是指对适配器进行高负荷、长时间的运行测试,从而评估电源适配器的性能、稳定性和可靠性。通过老化测试可以检测电源适配器长时间的使用情况,从而指导适配器的设计和研发,提高电源适配器的质量。由于老化测试要求长时间运行…

innovus:ccopt_design流程

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 ccopt完整的流程包括如下几个步骤: spec文件可以只创建一次,无需多次创建。 1)clustering阶段 set_ccopt_property balance_mode cluster …

camunda流程引擎——Java集成Camunda(上)(笔记)

目录 一、以一个处理流程开始1.1 后端1.2 前端1.3 执行 二、Camunda的补充2.1 使用方式2.2 可视化平台的Cockpit2.3 流程相关数据2.4 表介绍2.5 前端集成Modeler 三、用Java集成Camunda3.1 集成配置3.2 自动部署3.2.1 修改process.xml位置3.2.2 多进程引擎配置与多租户 3.3 历史…

《Java 核心技术·卷I (第11版)》笔记

文章目录 第1章 Java程序设计概述1.1 Java程序设计平台1.2 Java “白皮书” 的关键术语1.2.1 简单性1.2.2 面向对象1.2.3 分布式1.2.4 健壮性1.2.5 安全性1.2.6 体系结构中立1.2.7 可移植性1.2.8 解释型1.2.9 高性能1.2.10 多线程1.2.11 动态性 1.3 Java applet 与 Internet1.4…

线性回归在数据库中的应用

简介 今天看到微信群有人问,如何知道数据库一年的磁盘增量?如果没有研究过统计学,IT人员对于这个问题就只能靠经验了去断定了。没经验的往往都是回复扩容越大越好。当然未来的事情我们是无法预料的。本博主就通过简单的线性回归做一个计算&am…

XS9922B-国产cvi协议,满足国内车载视频传输领域国产化降本需求

XS9922B 是一款 4 通道模拟复合视频解码芯片,支持 HDCCTV 高清协议和 CVBS 标 清协议,视频制式支持 720P/1080P 高清制式和 960H/D1 标清制式。芯片将接收到的高清 模拟复合视频信号经过模数转化,视频解码以及 2D 图像处理之后,转…

CVE-2023-49371|RuoYi 若依后台管理系统存在SQL注入漏洞

0x00 前言 RuoYi是一个后台管理系统,基于经典技术组合(Spring Boot、Apache Shiro、MyBatis、Thymeleaf)主要目的让开发者注重专注业务,降低技术难度,从而节省人力成本,缩短项目周期,提高软件安…

相信99%的朋友都没有注意到的数据库时间类型的问题

文章目录 创建表SQL实例小测试知识点小测试可以怎样处理只有查询有问题吗?MySQL时间 很多时候,程序运行起来没有问题,并不代表程序就精确,例如创建时间多一秒少一秒这种事情,很多时候是没有人注意到这个问题。 当然&am…

C++/语法@初始化列表

目录 初始化列表特征疑惑区别必在初始化列表中初始化的三种成员变量1、引用成员变量程序例子:运行结果: 2、const成员变量程序例子:运行结果: 3、自定义类型成员(没有默认构造函数的类)程序例子&#xff1a…

【LeetCode:2132. 用邮票贴满网格图 | 二维前缀和 + 二维差分和】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

【docker 】Dockerfile指令学习

学习文档地址 上篇文章:【docker 】基于Dockerfile创建镜像 Dockerfile指令文档地址 .dockerignore 文件 Dockerfile指令 常见的指令 Dockerfile 指令说明FROM指定基础镜像,用于后续的指令构建。MAINTAINER指定Dockerfile的作者/维护者。&#xff…

伦敦金投资者的本质其实是风险管理者

长期在市场中可以稳定盈利的投资者,他们的秘密是什么?很多人以为,肯定是他有别人所没有的交易策略。其实并不是,交易技术固然很重要,但在持续盈利的问题上,技术所占的重要性是次要的,而主要的是…