• 『MySQL快速上手』-③-库的操作


    在这里插入图片描述

    1.创建数据库

    语法格式如下:

    CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [,
    create_specification] ...]
    
    create_specification:
    [DEFAULT] CHARACTER SET charset_name
    [DEFAULT] COLLATE collation_name
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    说明:

    • 大写的表示关键字SQL指令是大小写忽略的,小写也没问题);

    • [] 是可选项;

    • CHARACTER SET: 指定数据库采用的字符集

    • COLLATE: 指定数据库字符集的校验规则

    2.创建数据库案例

    • 创建数据库,命名为db1
    create database db1
    
    • 1

    说明:

    当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集utf8,校验规则是:utf8_ general_ ci。这由MySQL的配置文件决定。

    • 查看MySQL配置文件
    cat /etc/my.cnf
    
    • 1

    在这里插入图片描述

    • 创建一个使用utf8字符集db2 数据库;
    create database db2 charset=utf8;
    
    • 1
    • 创建一个使用utf8字符集,并带校对规则的 db3 数据库;
    create database db3 charset=utf8 collate utf8_general_ci;
    
    • 1

    3.字符集和校验规则

    • 查看系统默认字符集以及校验规则
    show variables like 'character_set_database';
    show variables like 'collation_database';
    
    • 1
    • 2

    在这里插入图片描述

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

    3.2 校验规则对数据库的影响

    我们可以从下面这个示例中看出校验规则对数据库的影响。

    1. 创建一个数据库,校验规则使用utf8_ general_ ci(不区分大小写);
    create database test1 collate utf8_general_ci;
    
    • 1
    use test1;
    
    • 1
    create table person(name varchar(20));
    
    • 1
    insert into person values('a');
    insert into person values('A');
    insert into person values('b');
    insert into person values('B');
    
    • 1
    • 2
    • 3
    • 4
    1. 创建一个数据库,校验规则使用utf8_ bin(区分大小写);
    create database test2 collate utf8_bin;
    
    • 1
    use test2;
    
    • 1
    create table person(name varchar(20));
    
    • 1
    insert into person values('a');
    insert into person values('A');
    insert into person values('b');
    insert into person values('B');
    
    • 1
    • 2
    • 3
    • 4

    3.2.1 进行查询

    • 不区分大小写的查询以及结果
    use test1;
    
    • 1
    select * from person where name='a';
    
    • 1

    在这里插入图片描述

    • 区分大小写的查询以及结果;
    use test2;
    
    • 1
    select * from person where name='a';
    
    • 1

    在这里插入图片描述

    3.2.2 进行排序

    • 不区分大小写排序以及结果:
    use test1;
    
    • 1
    select * from person order by name;
    
    • 1

    在这里插入图片描述

    • 区分大小写排序以及结果:

    在这里插入图片描述

    4.字符集和检验规则的作用

    数据库中的字符集(Character Set)和字符集校验规则(Collation)是用于定义和管理数据库中文本数据存储和比较的重要设置。它们的作用如下:

    1. 字符集(Character Set):

      • 定义了数据库中可以存储的字符集合,包括字母、数字、符号等。
      • 确定了数据库如何存储和表示不同字符和符号。
      • 不同的字符集支持不同的字符编码方式,如UTF-8、UTF-16、ISO-8859-1等。
      • 可以影响文本数据的存储空间和性能。
    2. 字符集校验规则(Collation):

      • 确定了文本数据的比较和排序方式,即如何对文本数据进行比较、搜索和排序。
      • 根据字符集校验规则,相同的字符可能在排序时被视为不同。
      • 支持不同语言和文化的排序规则,以确保文本数据的正确比较和排序。
      • 不同的字符集校验规则可能会影响查询结果的顺序和比较操作的行为。

    这些设置对数据库的正确性、性能和多语言支持非常重要。以下是一些具体作用:

    • 数据完整性:字符集和字符集校验规则有助于确保数据存储的一致性和正确性。它们防止了不同字符之间的混淆,确保数据正确存储和检索。

    • 多语言支持:不同语言使用不同的字符集和校验规则,因此数据库必须支持多种字符集和校验规则,以适应不同语言的数据。

    • 搜索和排序:字符集校验规则决定了文本数据的搜索和排序方式。它们确保文本数据按照正确的规则进行比较和排序,以获得正确的查询结果。

    • 存储空间效率:不同字符集和编码方式可以影响数据存储的空间效率。例如,某些字符集需要更多的存储空间来表示特定字符。

    • 数据交互:当与其他系统或应用程序进行数据交互时,字符集和字符集校验规则的一致性非常重要,以确保数据正确传输和解释。

    总之,字符集和字符集校验规则是数据库中用于管理文本数据的关键设置,它们影响了数据的正确性、性能和多语言支持,因此在创建和维护数据库时需要特别注意。

    5.操纵数据库

    5.1 查看数据库

    show databases;
    
    • 1

    在这里插入图片描述

    5.2 显示创建语句

    show create database 数据库名;
    
    • 1

    在这里插入图片描述
    说明:

    • 数据库名字的反引号``,是为了防止使用的数据库名刚好是关键字
    • /*!40100 default… */ 这个不是注释,表示当前mysql版本大于4.01版本,就执行这句话;

    5.3 修改数据库

    语法格式如下:

    ALTER DATABASE db_name
    [alter_spacification [,alter_spacification]...]
    
    alter_spacification:
    [DEFAULT] CHARACTER SET charset_name
    [DEFAULT] COLLATE collation_name
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 对数据库的修改主要指的是修改数据库的字符集,校验规则

    案例——将test1数据库字符集改成gbk

    alter database test1 charset=gbk;
    
    • 1

    在这里插入图片描述

    5.4 数据库删除

    语法格式如下:

    DROP DATABASE [IF EXISTS] db_ name;
    
    • 1

    执行删除之后的结果:

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

    6.备份与恢复

    6.1 备份

    语法格式如下:

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

    案例——将test1库备份到文件

    • 首先退出mysql;

    • test1备份到 ./test1.sql

    $ mysqldump -P3306 -u root -p -B test1 > ./test1.sql
    
    • 1
    • 查看备份文件test1.sql;
    • test1.sql 文件里的内容,其实把我们整个创建数据库,建表,导入数据的语句都装载这个文件中;
    $ cat ./test1.sql
    
    • 1

    在这里插入图片描述

    6.2 还原

    • 登入MySQL,删除test1
    drop database test1;
    
    • 1
    show databases;
    
    • 1

    在这里插入图片描述

    • 还原;
    source ./test1.sql;
    
    • 1
    show databases;
    
    • 1

    在这里插入图片描述

    6.3 注意事项

    • 如果备份的不是整个数据库,而是其中的一张表,怎么做?
    $ mysqldump -u root -p 数据库名 表名1 表名2 > 备份文件路径
    
    • 1
    • 同时备份多个数据库
    $ mysqldump -u root -p -B 数据库名1 数据库名2 ... > 备份文件路径
    
    • 1
    • 如果备份一个数据库时,没有带上-B参数, 在恢复数据库时,需要先创建空数据库,然后使用数据库,再使用source来还原;

    7.查看数据库连接情况

    语法:

    show processlist
    
    • 1

    在这里插入图片描述
    可以告诉我们当前有哪些用户连接到我们的MySQL,如果查出某个用户不是你正常登陆的,很有可能你的数据库被人入侵了。以后大家发现自己数据库比较慢时,可以用这个指令来查看数据库连接情况。

    在这里插入图片描述

  • 相关阅读:
    【bugfix】error in chunk.js from uglifyjs
    河南工程学院2022级新生周赛(五)题解
    计算机基本知识1
    不就是Java吗之数组的定义和使用
    linux 进程通信 C程序案例
    类和对象的深度剖析
    类与对象的创建
    野生程序员的成长之路(续)--团队需要什么样的管理者?
    ros1-gazebo创建世界和机器人模型
    Educational Codeforces Round 154 (Rated for Div. 2)A~C
  • 原文地址:https://blog.csdn.net/gllll_yu/article/details/134264181