【MySQL】基础SQL语句——库的操作

2023-09-14 21:53:52

一. 创建数据库

1.1 基础语句

最简洁的创建数据库的SQL语句是:

create database db_name;
db_name是数据库的名称

创建一个数据库,本质是在MySQL配置文件中默认的存放资源的文件中创建目录

/etc/my.cnf是MySQL的配置文件
默认存放资源的路径是/var/lib/mysql
在这里插入图片描述

所以,如果我们使用MySQL创建一个database1的数据库,那么相应的,在/var/lib/mysql/中就会创建一个database1的目录
在这里插入图片描述


接下来,介绍创建数据库的选项

create database if not exists db_name;

使用create database db_name重复创建数据库,结果如下:
在这里插入图片描述
使用create database if not exists db_name,结果如下:
在这里插入图片描述

如果使用第一种SQL语句重复创建,结果是报错
如果使用第二种SQL语句重复创建,则会忽略创建语句,不会报错
实际工作中,建议使用create database if not exists db_name 创建数据库


创建数据库时,还可以指明使用的字符集校验规则

create database db_name charset=utf8 collate=utf8_general_ci
character-set,即charset,是数据存放入数据库时使用的字符集
collation,是数据取出时使用的校验规则

同样可以在配置文件/etc/my.cnf中配置默认使用的字符集和检验规则
在这里插入图片描述

1.2 字符集和校验规则

  • 字符集
    字符集是一套用于表示和处理文本数据的编码规则。在MySQL中,字符集用于定义存储,传输和处理数据时所使用的字符集合。常见的字符集包括UTF8,GBK等。字符集主要是控制使用什么语言,比如UTF8可以使用中文
  • 检验规则
    校验规则用于定义字符集中每个字符的排序规则,决定了字符比较,排序和匹配方式。例如,在排序时是按照字母的先后顺序进行排序,还是按照字母的笔画数进行排序

查看系统默认字符集以及校验规则
show variables like 'character_set_database';
show variables like 'collation_database;'
注意单引号
在这里插入图片描述

查看数据库支持的字符集或校验规则
show charset;
show collation;

1.3 校验规则对读取数据的影响

UTF8_general_ci【不区分大小写】
UTF8_bin【区分大小写】

分别使用这两种校验规则创建两个数据库test1和test2,并建立一样的表,插入一样的数据
以下是test1的操作,test2操作相同

在这里插入图片描述

是否区分大小写,会导致不同的查询结果和排序结果

  • 查询
    在这里插入图片描述

  • 排序

二. 查看数据库

show databases;
查看所有数据库
在这里插入图片描述


show create database db_name
显示创建语句
在这里插入图片描述

  • MySQL建议关键字使用大写,但是不是必须的
  • 数据库名字的反引号,是为了防止使用的数据库名刚好是关键字
  • /*!40100 default … */ 不是注释,其含义是,如果当前MySQl版本大于4.01版本,则会执行这句语句

select database();
查看当前使用的数据库
在这里插入图片描述
表面当前正常使用test1这个数据库

三. 修改数据库

alter database db_name
其后跟修改的字符集或者校验规则

比如将test1数据库的字符集和校验规则修改为gbk
在这里插入图片描述

PS:十分不建议rename数据库,重命名数据库。原先可以rename,但之后删除了这个语句。
因为可能还有用户在使用该数据库,一旦重命名,将无法使用,上层调用接口等也将失效

四. 删除数据库及备份

4.1 删除

删除数据库的操作很简单

drop database if exists db_name

但是一旦删除数据库
数据库内部看不到对应的数据库
对应的数据库文件夹被删除,级联删除,里面的数据表全部都被删除
建议先备份,再删除

4.2 备份和还原

备份

备份的工具是在安装MySQL的同时安装的——mysqldump
使用命名:

mysqldump -P 3306 -u root -p 密码 -B 数据库名 > 数据库备份存储的文件路径
-P 3306选项是连接的mysqld服务器的端口号
-u root 选项是登录的用户
-p 密码 选项是输入密码
-B 数据库 选项是指定数据库
在这里插入图片描述

这个文件内部是对该数据库使用的所有SQL语句,包括创建数据库,使用,创建表,插入数据等


还原

还原是在mysql中执行的

source 文件路径;
在这里插入图片描述

如果只想要备份数据库中的一个表

mysqldump -P 3306 -u root -p 密码 -B 数据库名 表 > 备份的文件路径

同时备份多个数据库

mysqldump -P 3306 -u root -p 密码 -B 数据库1 数据库2 > 存储路径(文件)

PS:如果备份时没有带上-B选项,那么在恢复数据库时,要先建立空的数据库,然后使用数据库,再source还原


show processlist
查看连接情况
在这里插入图片描述

可以告诉我们当前有哪些用户用户连接到我们的MySQL,如果查出某个用户不是正常登录的,很有可能你的数据库被人入侵了,如果自己的数据库比较慢时,可以使用这个指令查看数据库的连接情况

结束语

感谢你的阅读

如果觉得本篇文章对你有所帮助的话,不妨点个赞支持一下博主,拜托啦,这对我真的很重要。
在这里插入图片描述

更多推荐

mysql死锁排查及解决

MySQL死锁是在多个并发事务同时请求相同资源时发生的一种情况,其中每个事务都在等待对方释放资源,从而导致数据库无法继续执行。死锁的排查和解决通常需要以下步骤:1.检测死锁:MySQL通常会在错误日志中记录死锁信息。可以通过以下方式检测死锁:SHOWENGINEINNODBSTATUS;查找"InnoDB"部分,寻找"

Win10编译chrome

一、系统准备windows10以上版本硬盘空余空间100G以上,磁盘格式为NTFS内存8G以上,推荐32G需要科学上网卸载杀毒软件(注意重启系统)二、安装VisualStudio2022VisualStudio2022(>=17.0.0)编译chromium时需要VisualStudio的支持。在windows操作系统

Android Media3 ExoPlayer 开启缓存功能

ExoPlayer开启播放缓存功能,在下次加载已经播放过的网络资源的时候,可以直接从本地缓存加载,实现为用户节省流量和提升加载效率的作用。方法一:采用ExoPlayer缓存策略第1步:实现Exoplayer参考Exoplayer官网Releasenotes:对应关系:2.19.0(2023-07-05)--Androi

黑马JVM总结(十一)

(1)垃圾回收概述前面我们学了堆,里面有一个垃圾回收的机制(2)判断垃圾_引用计数指只要有一个对象被其他变量所引用,我们就让这个对象的计数加1,有个一变量不在引用,让它的计数减一,当这个对象的计数变为0的时候,说明没有变量引用它了,那么他就可以作为一个垃圾进行一个回收,但是引用计数存在一个弊端:存在循环引用问题:a对象

Pytorch实现MNIST字符识别

1.下载mnist.pkl.gz网址:http://www.iro.umontreal.ca/~lisa/deep/data/mnist/mnist.pkl.gz数据集文件夹路径是data2/mnist/mnist.pkl.gz2.读取数据frompathlibimportPathimportmatplotlib.py

设计模式:状态模式

目录组件代码示例源码中使用优缺点总结状态模式(StatePattern)是一种行为型设计模式,用于解决对象在不同状态下的行为变化问题。状态模式允许对象在内部状态发生改变时改变其行为,使得对象的行为可以根据状态的改变而灵活变化。在状态模式中,对象的行为会根据其内部状态的改变而变化,但对外部来说,对象的接口保持一致。状态模

设计模式之十:状态模式

状态模式通过改变对象内部的状态来帮助对象控制自己的行为。这是一张状态图,其中每个圆圈都是一个状态。最简单,第一反应的实现就是使用一个变量来控制状态值,并在方法内书写条件代码来处理不同情况。packageheadfirst.designpatterns.state.gumball;publicclassGumballMa

9、Spring之推断构造方法源码解析

推断构造方法流程图:Spring推断构造方法底层执行流程|ProcessOn免费在线作图,在线流程图,在线思维导图AutowiredAnnotationBeanPostProcessor中推断构造方法不同情况思维脑图:Spring中的一个bean,需要实例化得到一个对象,而实例化就需要用到构造方法。一般情况下,一个类只

【shell学习】企业运维工作中常用的shell脚本

本站以分享各种运维经验和运维所需要的技能为主《python零基础入门》:python零基础入门学习《python运维脚本》:python运维脚本实践《shell》:shell学习《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战《k8》暂未更新《docker学习》暂未更新《ceph学习

pytorch学习2

分类问题手写数字数据集其中,每个数字图片大小是28x28,矩阵中每个元素的大小为[0,1]区间的灰度值,将二维矩阵拉平(flat)为一维784,数据量不变,这样能忽略上下位置相关性,甚至左右位置相关性也可忽略,再插入一个维度变为[1,784]线性模型能解决吗一个简单的线性模型为:y=w*x+b但对于手写数字来说,用一个

城中村现代化治理,筑牢基层安全底座

7月21日,李强主持召开常务会议指出,在超大特大城市积极稳步实施城中村改造是改善民生、扩大内需、推动城市高质量发展的一项重要举措。基层(村社)治理是作为社会治理的一个基本单元,是城市治理的一个最后一公里,社会治理的重点在基层,难点也在基层。如何深化数字技术融合创新,推进共建共治共享基层治理全面提速,赋能区域数字经济高质

热文推荐