• MySQL操作库


    一.创建数据库

    1. 创建数据库的方式

    create database database1;
    
    • 1

    image-20230716160242203

    带选项的创建

    create database if not exists database1;
    
    • 1
    • 如果不存在(if not exists)才创建数据库database1。

    image-20230716162145611

    2. 创建数据库时的编码问题

    与数据打交道的数据库的创建一定与编码有关系。创建数据库的时候,有两个编码集:

    1. 数据库编码集:数据库未来存储数据的编码集。
    2. 数据库校验集:支持数据库,进行字段比较使用的编码,本质也是一种读取数据库中数据的采用的编码格式。

    因此,数据库无论对数据做任何操作,都需要保证数据库的操作和编码必须是编码一致的。

    查看系统默认支持的字符集和校验集:

    show variables like 'character_set_database';
    
    • 1

    image-20230716163250563

    show variables like 'collation_database';
    
    • 1

    image-20230716163406782

    查看connection、database、server的校验集:

    show variables like 'collation_%';
    
    • 1

    image-20230716163700707

    大部分情况下,数据库的连接,数据库本身、数据库的服务器都是utf8的。在最开始的my.cnf配置中,我们把默认字符集全部配成了utf8进行统一,如果不配置,可能就会因为编码的不同导致无法正确解析数据。

    查看数据库全部的字符集

    show charset;
    
    • 1

    image-20230716163933162

    查看对照表,数据库选择的就是其中的utf8的字符集。

    查看数据库支持的字符集校验规则

    show collation;
    
    • 1

    3. 指定编码创建数据库

    当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则是:utf8_general_ci。

    两种方式:

    create database d2 charset=utf8; #指定编码格式utf8
    
    • 1

    image-20230716200505946

    create database d3 set utf8; #指定编码格式utf8
    
    • 1

    image-20230716200815758

    编码集字符集同时设置:

    create database d4 charset=utf8 collate utf8_general_ci; #既指明编码,又指明校验规则
    
    • 1

    根据字符集表以及校验表创建不同编码和校验规则的数据库

    image-20230716201340291

    4. 验证校验规则对数据库的影响

    不区分大小写

    创建一个数据库,校验规则使用utf8_ general_ ci[不区分大小写]

    create database test1 collate utf8_general_ci;
    
    • 1
    use test1;
    
    • 1
    create table person(name varchar(20));
    
    • 1

    image-20230717204517443

    由于是不区分大小写的,所以在指定查’a’的时候,utf8_ general_ ci校验规则会将’A’和’a’一并查出:

    image-20230717204907443

    区分大小写

    创建一个数据库,校验规则使用utf8_ bin[区分大小写]

    create database test2 collate utf8_bin;
    
    • 1
    use test2;
    
    • 1
    create table if not exists person(name varchar(20));
    
    • 1

    image-20230717205550620

    因此,校验规则的不同,我们查出的结果也有可能不同。

    校验规则的不同,排序的顺序也会不同:(从小到大)

    image-20230717205936435

    故忽略大小写时,大小写的排序不做区分。

    二.数据库与文件系统的关系

    创建数据库:create database db_name; 本质就是在/var/lib/mysql创建一个目录。

    删除数据库:drop database db_name; 本质就是在/var/lib/mysql删除目录。

    因此,我们可以在/var/lib/mysql上创建目录,那么数据库层面也一定会产生相应的数据库。

    image-20230716161418944

    同理,在mysql目录中删掉一个目录,数据库层面的对应数据库也会被删掉。

    当然,绝对不应该在文件系统层面创建目录从而生成对应数据库,这样是不合理的。因此mysql8.0就禁掉了这个功能,而mysql5.6支持。

    三.操纵数据库

    1. 查看数据库

    show databases;
    
    • 1

    image-20230716155403820

    如果想要确定是在哪个数据库里,可以执行:

    select database();
    
    • 1

    image-20230719130308084

    2. 删除数据库

    drop database db_name;
    
    • 1

    执行删除之后的结果:

    • 数据库内部看不到对应的数据库
    • 对应的数据库文件夹被删除,级联删除,里面的数据表全部被删

    注意:不要随意删除数据库

    3. 修改数据库

    • 对数据库的修改主要指的是修改数据库的字符集,校验规则
    alter database test2 charset=gbk collate gbk_Chinese_ci;
    
    • 1

    image-20230719130801155

    四.数据库的备份和恢复

    1.数据库的备份

     mysqldump -P3306 -u root -p 密码 -B 数据库名 > 数据库备份存储的文件路径
    
    • 1

    -B:代表选择数据库的选项。

    image-20230719135036092

    test1.sql中存储的不仅仅是test1数据库中的数据,还有历史上创建过的命令:

    image-20230719135143891

    至此就完成了对数据库test1的备份操作。

    2.数据库的恢复

    现在,将test1数据库删掉:

    image-20230719135825570

    这样,在/var/lib/mysql的路径下,一定也不存在test1目录。

    通过pwd命令,我们知道test1.sql所在的路径:

    image-20230719140336913

    然后,通过以下恢复命令:

    mysql> source /root/MySQL/test1.sql;
    
    • 1

    image-20230719140542138

    此时,就可以查看到对应test1的数据库及其内容:

    image-20230719141029717

    注意事项

    如果备份的不是整个数据库,而是其中的一张表,怎么做?

    mysqldump -u root -p 数据库名 表名1 表名2 > 路径/mytest.sql
    
    • 1

    同时备份多个数据库

    mysqldump -u root -p -B 数据库名1 数据库名2 ... > 数据库存放路径
    
    • 1

    如果备份一个数据库时,没有带上-B参数, 在恢复数据库时,需要先创建空数据库,然后使用数据库,再使用source来还原。

    五.查看连接情况

    如果在使用数据库时,出现卡顿,那么有可能访问数据库的不止你一个,所以,通过如下命令,我们可以看到User的数量及名称Id。

    show processlist;
    
    • 1

    image-20230719143408395

    这可以告诉我们当前有哪些用户连接到我们的MySQL,如果查出某个用户不是你正常登陆的,很有可能你的数据库被人入侵了。

  • 相关阅读:
    cesium态势标会(面积测量 ---- 不可修改)
    CocosCreator3.8神秘面纱 CocosCreator 项目结构说明及编辑器的简单使用
    052-第三代软件开发-系统监测
    Kylin Cube设计革新:维度自动合并的智能策略
    C#__基本的读写文件方式
    物理学专业英语(词汇整理)--------05
    开启海外“新副本”,中旭未来有几道“关卡”要闯?
    微机原理:汇编语言语句类型与格式
    java计算机毕业设计在线购物系统源程序+mysql+系统+lw文档+远程调试
    oracle定时任务的使用
  • 原文地址:https://blog.csdn.net/NEFUT/article/details/131808465