当前位置: 首页 > news >正文

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;
在这里插入图片描述

  1. 创建一个使用utf字符集,并带校对规则的数据库:

create database if not exists db3 charset=utf8 collate utf8_general_ci;在这里插入图片描述

2. 字符集和校验规则

  1. 字符集:字符集其实就是一套文字符号及编码,对应的文字及编码,可以将人类可以识别的内容与计算机可以识别的信息进行互相转换。也就是说不同的字符集,它相应的文字和编码不同。比如:gbk是非常适用于中文环境,utf8中英文混合的环境,建议使用此字符集,目前使用的比较多。
  2. 校验规则:凡是涉及到字符类型比较或排序的地方,都和校验规则有关。
  3. 字符集和校验规则的关系:每个校验规则唯一对应一种字符集,但一个字符集可以对应多种校验规则,其中有一个是默认的。

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;


接下来,就来验证一下,校验规则对数据库的影响:

  1. 创建一个库w1,它的校验规则是用utf8_ general_ ci,这个是不区分字母大小写的。

create database w1 collate utf8_general_ci;

  1. 创建一个库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 备份,还原数据库

删库前要备份数据库,这是我们该做的,切记 必须备份 数据库。

备份有两种方式:

  1. 物理备份,就是先将 /var/lib/mysql 中要备份的库(目录),进行打包操作,将此包保存在一个路径下,假如原来的库被删除了,那么还原的操作就是将此包拷贝到/var/lib/mysql中,然后解包。至于/var/lib/mysql 是我的服务器中 数据库的表和库保存的路径,至于大家的情况可能不一样,所以具体还要看my.cnf的配置。
  2. 逻辑备份,这个就是MySQL的内部操作了,它是利用的备份工具:mysqldump。之所以叫逻辑备份,因为它备份的是 你创建库 以及在库中创建表的SQL语句。它的还原操作就是将原来的SQL语句再次执行一遍。
  3. 对比以上备份方式,物理备份占用的物理空间大,但是还原的快;逻辑备份占用的物理空间小,但是还原的慢。

我们主要来看逻辑备份:

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的命令提示符,这意味着可以输入命令了。注意&#xff…...

介绍并比较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 个元素中任取一个元素(通常取第一个元素)作为基准,把该元素放人最终位置后,整个数据序列被基准分割成两个子序列,所有小于基准的元素放置在前子序列中&#xff0…...

进化的隐藏水印:深度学习提升版权保护的鲁棒性

一、前言 过去几年,以网络视频为代表的泛网络视听领域的崛起,是互联网经济飞速发展最为夺目的大事件之一。泛网络视听领域不仅是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年测开的分析

国内的互联网行业发展较快&#xff0c;所以造成了技术研发类员工工作强度比较大&#xff0c;同时技术的快速更新又需要员工不断的学习新的技术。因此淘汰率也比较高&#xff0c;超过35岁的基层研发类员工&#xff0c;往往因为家庭原因、身体原因&#xff0c;比较难以跟得上工作…...

数据结构(六):冒泡排序、选择排序、插入排序、希尔排序、快速排序

数据结构&#xff08;六&#xff09;一、大O表示法二、冒泡排序三、选择排序一、大O表示法 在计算机中采用粗略的度量来描述计算机算法的效率&#xff0c;这种方法被称为“大O”表示法。 我们判断一个算法的效率&#xff0c;不能只凭着算法运行的速度&#xff0c;因为随着数据…...

C++之类与对象(上)

目录 一、类的定义 二.类的访问限定及封装 1.访问限定 2.封装 三.类的作用域和实例化 2.类的实例化 四.类的对象大小的计算 1.类成员存储方式 2.结构体内存对齐规则 五.类成员函数的this指针 1.this指针的引出 2.this指针的特性 3.C语言和C实现Stack的对比 一、类的定义 class …...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我&#xff0c;后续持续新增专题博文&#xff0c;谢谢&#xff01;&#xff01;&#xff01;】 上一篇我们讲了&#xff1a; 这一篇我们开始讲&#xff1a; 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下&#xff1a; 一、场景操作步骤 操作步…...

FastAPI 教程:从入门到实践

FastAPI 是一个现代、快速&#xff08;高性能&#xff09;的 Web 框架&#xff0c;用于构建 API&#xff0c;支持 Python 3.6。它基于标准 Python 类型提示&#xff0c;易于学习且功能强大。以下是一个完整的 FastAPI 入门教程&#xff0c;涵盖从环境搭建到创建并运行一个简单的…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

return this;返回的是谁

一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请&#xff0c;不同级别的经理有不同的审批权限&#xff1a; // 抽象处理者&#xff1a;审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息&#xff0c;对客户进行统一管理&#xff0c;可以把所有客户信息录入系统&#xff0c;进行维护和统计功能。可通过文件的方式保存相关录入数据&#xff0c;对…...

并发编程 - go版

1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程&#xff0c;系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...

Webpack性能优化:构建速度与体积优化策略

一、构建速度优化 1、​​升级Webpack和Node.js​​ ​​优化效果​​&#xff1a;Webpack 4比Webpack 3构建时间降低60%-98%。​​原因​​&#xff1a; V8引擎优化&#xff08;for of替代forEach、Map/Set替代Object&#xff09;。默认使用更快的md4哈希算法。AST直接从Loa…...

MySQL 8.0 事务全面讲解

以下是一个结合两次回答的 MySQL 8.0 事务全面讲解&#xff0c;涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容&#xff0c;并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念&#xff08;ACID&#xff09; 事务是…...

pycharm 设置环境出错

pycharm 设置环境出错 pycharm 新建项目&#xff0c;设置虚拟环境&#xff0c;出错 pycharm 出错 Cannot open Local Failed to start [powershell.exe, -NoExit, -ExecutionPolicy, Bypass, -File, C:\Program Files\JetBrains\PyCharm 2024.1.3\plugins\terminal\shell-int…...

[论文阅读]TrustRAG: Enhancing Robustness and Trustworthiness in RAG

TrustRAG: Enhancing Robustness and Trustworthiness in RAG [2501.00879] TrustRAG: Enhancing Robustness and Trustworthiness in Retrieval-Augmented Generation 代码&#xff1a;HuichiZhou/TrustRAG: Code for "TrustRAG: Enhancing Robustness and Trustworthin…...