MySQL —— 库的操作
文章目录
- 1. 创建数据库
- 2. 字符集和校验规则
- 3. 数据库的基本操作
- 3.1 查看数据库
- 3.2 显示创建数据库的语句
- 3.3 修改数据库
- 3.4 删除数据库
- 3.5 备份,还原数据库
- 4. 查看数据库的连接情况
1. 创建数据库
基本语法:
create database if not exists 数据库名 选项1 选项2
- if not exists ,可有可无,比如:你创建的表和已经存在的表重名了,如果不加if not exists,就会直接报错。如果加上了 if not exists,就不会报错,也不会替换原来的表。
- 数据库名,这个没得说,看的起名就行。
- 选项一: charset = ? 指定数据库采用的字符集
- 选项二:collate ?指定数据库字符集的校验规则
例子:
1.创建一个库,指定它的字符集为utf8:
create database if not exists db2 charset=utf8;
- 创建一个使用utf字符集,并带校对规则的数据库:
create database if not exists db3 charset=utf8 collate utf8_general_ci;
2. 字符集和校验规则
- 字符集:字符集其实就是一套文字符号及编码,对应的文字及编码,可以将人类可以识别的内容与计算机可以识别的信息进行互相转换。也就是说不同的字符集,它相应的文字和编码不同。比如:gbk是非常适用于中文环境,utf8中英文混合的环境,建议使用此字符集,目前使用的比较多。
- 校验规则:凡是涉及到字符类型比较或排序的地方,都和校验规则有关。
- 字符集和校验规则的关系:每个校验规则唯一对应一种字符集,但一个字符集可以对应多种校验规则,其中有一个是默认的。
Mysql的字符集和校验规则有4个级别的默认设置:服务器级,数据库级,表级和字段级。
- 查看服务器级别的:
show variables like 'character_set_server';,这是字符集:
show variables like 'collation_server,这是查看校验规则:
- 查看数据库级别的:
show variables like ‘character_set_database’;
show variables like ‘collation_database’;
服务器级别,库级别,表级别,列级别:
- 服务器级别的字符集和校验规则,在my.cnf里可以设置,如果没有设置就是latin1和latin1_swedish_ci。
- 库级别:这个是在创建库的时候,可以在选项1和选项2中设置字符集和校验规则,如果没有设置,那么就使用系统默认的库级别字符集和校验规则。但是如果系统没有默认的,那么就使用服务器级别的字符集和校验规则。
- 表级别和列级别,都是在创建表的时候,可以填上字符集和校验规则。表如果没有设置的话,就使用库的字符集和校验规则。列级别如果没有设置的话,就使用表的字符集和校验规则。
查看数据库支持的字符集:
show charset;
查看数据库支持的校验规则:
show collation;
接下来,就来验证一下,校验规则对数据库的影响:
- 创建一个库w1,它的校验规则是用utf8_ general_ ci,这个是不区分字母大小写的。
create database w1 collate utf8_general_ci;
- 创建一个库w2,它的校验规则是用用utf8_ bin,这个是区分字母大小写的。
create database w2 collate utf8_bin;
在库w1和库w2,都创建一个表,表里面只有一个varchar,都插入"a",“b”,“A”,“B”:
use w1;
create table test1(name varchar(2));
insert into test1(name) values (“a”);
insert into test1(name) values (“b”);
insert into test1(name) values (“A”);
insert into test1(name) values (“B”);
w2和w1进行一样的操作,只不过w2中的表名为test2。
插入成功的test1和test2:
然后分别对test1和test2进行查询操作:
select * from test1 where name = “a”;

select * from test2 where name = “a”;

看到校验规则对查询的影响了吧,这里其实可以创建表的时候,设置表级别的校验规则,但是本章是讲库操作的,所以就直接设置库级别的校验规则,由于表并没有给定校验规则,所以默认使用库的校验规则。
像排序这种操作,校验规则也是有影响的:


3. 数据库的基本操作
3.1 查看数据库
show databases; 这是展示所有的库。

show tables; 这是展示库中的所有表。

当然你想展示一个库中的所有表,前提就是你得use + 想看的库的名。
3.2 显示创建数据库的语句
show create database w1;

注意:/ *…… * /,这个不是注释,它的意思是 如果当前的mysql的版本大于4.01,就执行此语句。
3.3 修改数据库
alter database 数据库名 + 选项1 选项2
这个主要是对数据库的字符集,校验规则进行修改,选项1 是 charset,选项2 是collocate。
比如:修改数据库的字符集,就修改w1数据库,上面可以看到它的字符集是utf8
alter database w1 charset=gbk

3.4 删除数据库
删除数据库的操作,尽量不要干,传说中的删库跑路就是这。但是Linux批量删除文件就是 rm -f /*,这就是将根目录下的所有文件删除。如果还是利用文件删除,无非就是删除一个目录,因为数据库在Linux视角下就是一个目录。
drop database 数据库名
执行删除之后的结果:
- 数据库内部看不到对应的数据库
- 对应的数据库文件夹被删除,级联删除,里面的数据表全部被删
3.5 备份,还原数据库
删库前要备份数据库,这是我们该做的,切记 必须备份 数据库。
备份有两种方式:
- 物理备份,就是先将 /var/lib/mysql 中要备份的库(目录),进行打包操作,将此包保存在一个路径下,假如原来的库被删除了,那么还原的操作就是将此包拷贝到/var/lib/mysql中,然后解包。至于/var/lib/mysql 是我的服务器中 数据库的表和库保存的路径,至于大家的情况可能不一样,所以具体还要看my.cnf的配置。
- 逻辑备份,这个就是MySQL的内部操作了,它是利用的备份工具:mysqldump。之所以叫逻辑备份,因为它备份的是 你创建库 以及在库中创建表的SQL语句。它的还原操作就是将原来的SQL语句再次执行一遍。
- 对比以上备份方式,物理备份占用的物理空间大,但是还原的快;逻辑备份占用的物理空间小,但是还原的慢。
我们主要来看逻辑备份:
mysqldump –u 用户名称 –h 主机名称 –p密码 待备份的数据库名称[tbname, [tbname…]]> 数据库备份存储的文件路径+备份文件名称.sql
比如:对数据库w1进行备份:
mysqldump -uroot -p w1>w1.sql;
注意:mysqldump是备份工具,它的使用是在Linux命令行中的,可不敢在MySQL命令行里使用哈。
上面语句的意思就是在当下目录备份w1为w1.sql;

先来看看w1.sql里面是什么东东:
-- MySQL dump 10.13 Distrib 5.6.51, for Linux (x86_64)
--
-- Host: localhost Database: w1
-- ------------------------------------------------------
-- Server version 5.6.51/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;--
-- Table structure for table `test1`
--DROP TABLE IF EXISTS `test1`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `test1` (`name` varchar(2) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;--
-- Dumping data for table `test1`
--LOCK TABLES `test1` WRITE;
/*!40000 ALTER TABLE `test1` DISABLE KEYS */;
INSERT INTO `test1` VALUES ('a'),('A'),('b'),('B');
/*!40000 ALTER TABLE `test1` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;-- Dump completed on 2023-02-21 17:40:47
- 以/* !开头、*/结尾的语句为可执行的MySQL注释,这些语句可以被MySQL执行,但在其他数据库管理系统中被作为注释忽略,这可以提高数据库的可移植性;
- 文件开头指明了备份文件使用的MySQLdump工具的版本号10.13 ;接下来是备份账户的名称和主机信息,以及备份的数据库的名称;最后是MySQL服务器的版本号,5.6.51。
- 然后抛开/ *…… * /,看到内容大多数都是SQL语句。
先去把w1库删除了:
drop database w1;
show databases;
可以看到没有w1库了。
还原w1库:
- 还原w1库前,先得创建一个w1的空库,这样才能使用source进行还原:create database w1;
- 有了w1空库后,在MySQL命令行输入:use w1;source w1.sql;这样就还原成功了:

- 可以查看一下,w1库中的表test1:

没有问题。
以上是备份一个单个库,但是还有其他的使用情况:
- 情况1:备份一个库,就是上面讲的例子。
- 情况2:备份一个库中的一张表,或多张表。
- 情况3:备份多个库。
我们来看情况2:我先创建一个库hh1,里面创建两张表:
创建库:

创建表:

在表中插入数据:

退出mysql,使用mysqldump对hh1的表u1进行备份,不备份u2:
基本语法:mysqldump -u root -p 数据库名 表名1 表名2 > 路径+文件名.sql
mysqldump -uroot -p hh1 u1>hh1.sql
备份成功后,进入sql服务,因为这里还是只备份了一个库,所以在 备份前还需要创建一个新的空库 hh1;然后use hh1后,输入source hh1.sql;这样就完成了备份。

然后来看情况3,备份多个库:
基本语法: mysqldump -u root -p -B 数据库名1 数据库名2 ... > 数据库存放路径+文件名.sql
注意,这里有一个选项非常重要,那就是 -B,这个选项其实在备份一个单库时也可以用,如果在单库备份里也加上-B参数,那么就不需要像上面那样建立一个空库。
比如:
我备份w1,w2 库:mysqldump -uroot -B -p w1 w2>w12.sql;
删除w1,w2 库后,再进行备份:直接在mysql命令行上输入,source w12.sql;
这样就备份成功了。
以上是关于备份还原的基本操作。
4. 查看数据库的连接情况
基本语法:
show processlist

可以看到,当前数据库只有我在使用,我新起一个窗口,连接mysql:

发现,这里连接用户变为2个了。
作用:就是可以告诉我们当前有哪些用户连接到我们的MySQL,如果查出某个用户不是你正常登陆的,很有可能你的数据库被人入侵了。以后大家发现自己数据库比较慢时,可以用这个指令来查看数据库连接情况。
相关文章:
MySQL —— 库的操作
文章目录1. 创建数据库2. 字符集和校验规则3. 数据库的基本操作3.1 查看数据库3.2 显示创建数据库的语句3.3 修改数据库3.4 删除数据库3.5 备份,还原数据库4. 查看数据库的连接情况1. 创建数据库 基本语法: create database if not exists 数据库名 选项…...
修改shell的命令提示符
以下内容源于C语言中文网的学习与整理,非原创,如有侵权请告知删除。 一、命令提示符格式 从虚拟控制台登陆后,或者从桌面环境的终端进入shell后,就可以看见shell的命令提示符,这意味着可以输入命令了。注意ÿ…...
介绍并比较Apache Hive支持的文件格式
Apache Hive 支持几种熟知的Hadoop使用的文件格式,Hive也能加载并查询其他Hadoop组件创建的不同文件格式,如Pig或MapReduce。本文对比Hive不同文件格式,如:TextFile, SequenceFile, RCFile, AVRO, ORC,Parquet,Clouder…...
C语言之文件操作
目录 一、什么是文件? 二、C语言如何操作文件 1.操作方式 2.文件指针 2.1 定义文件指针 2.2文件的打开与关闭 2.3文件的顺序读写 2.3文件的随机读写 总结 一、什么是文件? 在电脑磁盘的上的文件。在程序设计中,分为两种:程序…...
Linux->父子进程初识和进程状态
目录 前言: 1. 父子进程创建 2. 进程状态 R(running)状态: S(sleep)状态: D(disk sleep)状态: T(stopped)状态: X(dead)和Z(zombie)状态: 孤儿进程: 前言: 本篇主要讲解关…...
【Linux学习笔记】5.Linux 用户和用户组管理
前言 本章介绍Linux的用户和用户组管理。 Linux 用户和用户组管理 Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。 用户的账号一方面可以…...
茂名市 2021 年高中信息技术学科素养展评
没事干,发一下去年去比赛的题目。 目录 第一题 30分 第二题 30分 第一题 30分 题目: “姐姐,乘除法运算太难了,有什么办法能熟练掌握吗?”今年 读小学四年级的表弟向李红求救。为了提高表弟的运算能力,…...
【软件测试】测试人不躺平,进军高级自动化测试自救,你的不一样结局......
目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 随着测试从业年龄的…...
win10环境下安装java开发环境安装java
一:环境介绍 安装系统版本:win10 java版本:java SE 17 二:下载Java安装包 官网下载Java安装包:Java Downloads | Oracle 中国 选择需要的Java版本进行下载,如果没有要选择的版本,可以选择最新…...
【华为OD机试模拟题】用 C++ 实现 - 开心消消乐(2023.Q1)
最近更新的博客 华为OD机试 - 入栈出栈(C++) | 附带编码思路 【2023】 华为OD机试 - 箱子之形摆放(C++) | 附带编码思路 【2023】 华为OD机试 - 简易内存池 2(C++) | 附带编码思路 【2023】 华为OD机试 - 第 N 个排列(C++) | 附带编码思路 【2023】 华为OD机试 - 考古…...
opencv图像融合
大家好,我是csdn的博主:lqj_本人 这是我的个人博客主页: lqj_本人的博客_CSDN博客-微信小程序,前端,python领域博主lqj_本人擅长微信小程序,前端,python,等方面的知识https://blog.csdn.net/lbcyllqj?spm1011.2415.3001.5343哔哩哔哩欢迎关注…...
没有经验的时候,怎么搞定面试?
在之前的面试技巧,如何写简历上面,我讲了一些方法,希望大家重 视起来。核心其实就一点:他们想要你表现什么能力,以及你在 这个能力之外还有什么。 看清楚这句话的含义,你就可以做到百发百中。具体怎么训练&…...
整数保序的离散化(C/C++)
目录 1. 离散化的概念 1.1 离散化的运用思路 1.2 离散化的方法 1.2.1 排序 1.2.2 确定一个元素离散化后的结果 1.3 案例分析 1.3.1 1.3.2 区间和 (来源:Acwing) 1. 离散化的概念 离散化,把无限空间中有限的个体映射到有限的…...
python--排序总结
1.快速排序 a.原理 快速排序的基本思想是在待排序的 n 个元素中任取一个元素(通常取第一个元素)作为基准,把该元素放人最终位置后,整个数据序列被基准分割成两个子序列,所有小于基准的元素放置在前子序列中࿰…...
进化的隐藏水印:深度学习提升版权保护的鲁棒性
一、前言 过去几年,以网络视频为代表的泛网络视听领域的崛起,是互联网经济飞速发展最为夺目的大事件之一。泛网络视听领域不仅是21世纪以来互联网领域的重要基础应用、大众文化生活的主要载体,而且在推动中国经济新旧动能转化方面也发挥了重…...
Jenkins配置项目教程
在上一篇[Jenkins的使用教程](https://blog.csdn.net/weixin_43787492/article/details/129028131?spm1001.2014.3001.5501)中我介绍了如何创建一个项目 Jenkins在创建项目中提供了很多功能供我们选择,这里我将对配置项目做一个较完整的介绍Jenkins配置项目0、所有…...
C++多继承,虚继承部分总结与示例
tags: C OOP 写在前面 写一下多继承, 虚继承的一些部分, 包括一些例子. 多继承 简介 多继承是指从多个直接基类中产生派生类的能力. 多继承的派生类继承了所有父类的属性, 所以会带来一些复杂的问题. 示例1: 多继承用法与调用顺序 #include <string> #include <…...
程序员35岁以后就没有出路了吗?听听京东10年测开的分析
国内的互联网行业发展较快,所以造成了技术研发类员工工作强度比较大,同时技术的快速更新又需要员工不断的学习新的技术。因此淘汰率也比较高,超过35岁的基层研发类员工,往往因为家庭原因、身体原因,比较难以跟得上工作…...
数据结构(六):冒泡排序、选择排序、插入排序、希尔排序、快速排序
数据结构(六)一、大O表示法二、冒泡排序三、选择排序一、大O表示法 在计算机中采用粗略的度量来描述计算机算法的效率,这种方法被称为“大O”表示法。 我们判断一个算法的效率,不能只凭着算法运行的速度,因为随着数据…...
C++之类与对象(上)
目录 一、类的定义 二.类的访问限定及封装 1.访问限定 2.封装 三.类的作用域和实例化 2.类的实例化 四.类的对象大小的计算 1.类成员存储方式 2.结构体内存对齐规则 五.类成员函数的this指针 1.this指针的引出 2.this指针的特性 3.C语言和C实现Stack的对比 一、类的定义 class …...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...
UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...
网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...
selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖
在Vuzix M400 AR智能眼镜的助力下,卢森堡罗伯特舒曼医院(the Robert Schuman Hospitals, HRS)凭借在无菌制剂生产流程中引入增强现实技术(AR)创新项目,荣获了2024年6月7日由卢森堡医院药剂师协会࿰…...








