• 【MySQL】3. 库的操作


    库的操作

    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

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

    大写的表示关键字
    [] 是可选项
    CHARACTER SET: 指定数据库采用的字符集
    COLLATE: 指定数据库字符集的校验规则

    2. 创建数据库案例

    创建名为 db1 的数据库

    create database db1;
    
    • 1

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

    创建一个使用utf8字符集的 db2 数据库

    create database db2 charset=utf8;
    
    • 1

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

    create database db3 charset=utf8 collate utf8_general_ci;
    
    • 1

    3. 字符集和校验规则

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

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

    3.1 查看系统默认字符集以及校验规则

    mysql> show variables like 'character_set_database';
    +------------------------+-------+
    | Variable_name          | Value |
    +------------------------+-------+
    | character_set_database | utf8  |
    +------------------------+-------+
    1 row in set (0.00 sec)
    
    mysql> show variables like 'collation_database';
    +--------------------+-----------------+
    | Variable_name      | Value           |
    +--------------------+-----------------+
    | collation_database | utf8_general_ci |
    +--------------------+-----------------+
    1 row in set (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    3.2 查看数据库支持的字符集

    字符集主要是控制用什么语言。比如utf8就可以使用中文。

    mysql> show charset;
    +----------+---------------------------------+---------------------+--------+
    | Charset  | Description                     | Default collation   | Maxlen |
    +----------+---------------------------------+---------------------+--------+
    | big5     | Big5 Traditional Chinese        | big5_chinese_ci     |      2 |
    | dec8     | DEC West European               | dec8_swedish_ci     |      1 |
    | cp850    | DOS West European               | cp850_general_ci    |      1 |
    | hp8      | HP West European                | hp8_english_ci      |      1 |
    | koi8r    | KOI8-R Relcom Russian           | koi8r_general_ci    |      1 |
    | latin1   | cp1252 West European            | latin1_swedish_ci   |      1 |
    | latin2   | ISO 8859-2 Central European     | latin2_general_ci   |      1 |
    | swe7     | 7bit Swedish                    | swe7_swedish_ci     |      1 |
    | ascii    | US ASCII                        | ascii_general_ci    |      1 |
    | ujis     | EUC-JP Japanese                 | ujis_japanese_ci    |      3 |
    | sjis     | Shift-JIS Japanese              | sjis_japanese_ci    |      2 |
    | hebrew   | ISO 8859-8 Hebrew               | hebrew_general_ci   |      1 |
    | tis620   | TIS620 Thai                     | tis620_thai_ci      |      1 |
    | euckr    | EUC-KR Korean                   | euckr_korean_ci     |      2 |
    | koi8u    | KOI8-U Ukrainian                | koi8u_general_ci    |      1 |
    | gb2312   | GB2312 Simplified Chinese       | gb2312_chinese_ci   |      2 |
    | greek    | ISO 8859-7 Greek                | greek_general_ci    |      1 |
    | cp1250   | Windows Central European        | cp1250_general_ci   |      1 |
    | gbk      | GBK Simplified Chinese          | gbk_chinese_ci      |      2 |
    | latin5   | ISO 8859-9 Turkish              | latin5_turkish_ci   |      1 |
    | armscii8 | ARMSCII-8 Armenian              | armscii8_general_ci |      1 |
    | utf8     | UTF-8 Unicode                   | utf8_general_ci     |      3 |
    | ucs2     | UCS-2 Unicode                   | ucs2_general_ci     |      2 |
    | cp866    | DOS Russian                     | cp866_general_ci    |      1 |
    | keybcs2  | DOS Kamenicky Czech-Slovak      | keybcs2_general_ci  |      1 |
    | macce    | Mac Central European            | macce_general_ci    |      1 |
    | macroman | Mac West European               | macroman_general_ci |      1 |
    | cp852    | DOS Central European            | cp852_general_ci    |      1 |
    | latin7   | ISO 8859-13 Baltic              | latin7_general_ci   |      1 |
    | utf8mb4  | UTF-8 Unicode                   | utf8mb4_general_ci  |      4 |
    | cp1251   | Windows Cyrillic                | cp1251_general_ci   |      1 |
    | utf16    | UTF-16 Unicode                  | utf16_general_ci    |      4 |
    | utf16le  | UTF-16LE Unicode                | utf16le_general_ci  |      4 |
    | cp1256   | Windows Arabic                  | cp1256_general_ci   |      1 |
    | cp1257   | Windows Baltic                  | cp1257_general_ci   |      1 |
    | utf32    | UTF-32 Unicode                  | utf32_general_ci    |      4 |
    | binary   | Binary pseudo charset           | binary              |      1 |
    | geostd8  | GEOSTD8 Georgian                | geostd8_general_ci  |      1 |
    | cp932    | SJIS for Windows Japanese       | cp932_japanese_ci   |      2 |
    | eucjpms  | UJIS for Windows Japanese       | eucjpms_japanese_ci |      3 |
    | gb18030  | China National Standard GB18030 | gb18030_chinese_ci  |      4 |
    +----------+---------------------------------+---------------------+--------+
    41 rows in set (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47

    以上就是MySQL当中全部支持的字符集

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

    show collation;
    
    • 1

    在这里插入图片描述
    上述就是MySQL当中的字符校验集
    在这里插入图片描述
    我们在针对字符集和校验规则采用的是就近原则。
    若是我们在创建数据库时声明字符集和校验规则则采用声明,否则使用配置文件当中默认的规则(在/etc/my.cnf当中)

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

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

    进行查询

    # 不区分大小写的查询以及结果
    mysql> use test1;
    mysql> select * from person where name='a';
    +------+
    | name |
    +------+
    | a |
    | A |
    +------+
    2 rows in set (0.01 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    # 区分大小写的查询以及结果
    mysql> use test2;
    mysql> select * from person where name='a';
    +------+
    | name |
    +------+
    | a |
    +------+
    2 rows in set (0.01 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    结果排序

    # 不区分大小写排序以及结果:
    mysql> use test1;
    mysql> select * from person order by name;
    +------+
    | name |
    +------+
    | a |
    | A |
    | b |
    | B |
    +------+
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    # 区分大小写排序以及结果:
    mysql> use test2;
    mysql> select * from person order by name;
    +------+
    | name |
    +------+
    | A |
    | B |
    | a |
    | b |
    +------+
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    以上的对比操作显示出校验规则对数据库的影响
    我们在输入数据时对应的规则就是字符集(存入),在查看数据时对应的就是校验规则(取出)

    4. 操纵数据库

    4.1 查看数据库

    show databases;
    
    • 1

    在这里插入图片描述

    4.2 显示创建语句

    show create database 数据库名;
    
    • 1

    示例:

    mysql> show create database mytest;
    +----------+----------------------------------------------------------------+
    | Database | Create Database                                                |
    +----------+----------------------------------------------------------------+
    | mysql    | CREATE DATABASE `mytest` /*!40100 DEFAULT CHARACTER SET utf8 */|
    +----------+----------------------------------------------------------------+
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    说明:
    MySQL 建议我们关键字使用大写,但是不是必须的。
    数据库名字的反引号``,是为了防止使用的数据库名刚好是关键字
    /*!40100 default.... */ 这个不是注释,表示当前mysql版本大于4.01版本,就执行这句话(类似于判断语句)

    4.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

    说明:
    对数据库的修改主要指的是修改数据库的字符集,校验规则
    实例: 将 mytest 数据库字符集改成 gbk

    mysql> alter database mytest charset=gbk;
    Query OK, 1 row affected (0.00 sec)
    mysql> show create database mytest;
    +----------+----------------------------------------------------------------+
    | Database | Create Database                                                |
    +----------+----------------------------------------------------------------+
    | mytest   | CREATE DATABASE `mytest` /*!40100 DEFAULT CHARACTER SET gbk */ |
    +----------+----------------------------------------------------------------+
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    4.4 数据库删除

    DROP DATABASE [IF EXISTS] db_ name;
    
    • 1

    执行删除之后的结果:
    数据库内部看不到对应的数据库
    对应的数据库文件夹被删除,级联删除,里面的数据表全部被删
    注意:不要随意删除数据库

    4.5 备份和恢复 – 放在最后

    4.5.1 备份

    语法:

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

    示例:将mytest库备份到文件(退出连接)

    [root@iZ0jl69kyvg0h181cozuf5Z hacha]# mysqldump -P3306 -u root -p -B helloworld > /home/hacha/helloworld.sql
    
    • 1

    在这里插入图片描述
    那么这时我们再将helloworld数据库从MySQL当中删除
    在这里插入图片描述

    这时,可以打开看看 helloworld.sql文件里的内容,其实把我们整个创建数据库,建表,导入数据的语句都装载这个文件中。
    在这里插入图片描述

    4.5.2 还原

    将helloworld数据库还原出来

    mysql> source /home/hacha/helloworld.sql
    Query OK, 0 rows affected (0.00 sec)
    
    Query OK, 0 rows affected (0.00 sec)
    
    Query OK, 0 rows affected (0.00 sec)
    
    Query OK, 0 rows affected (0.00 sec)
    
    Query OK, 0 rows affected (0.00 sec)
    
    Query OK, 0 rows affected (0.00 sec)
    
    Query OK, 0 rows affected (0.00 sec)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    在这里插入图片描述

    4.5.3 注意事项

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

    # mysqldump -u root -p 数据库名 表名1 表名2 > D:/mytest.sql
    
    • 1

    同时备份多个数据库

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

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

    4.6 查看连接情况

    语法:

    show processlist
    
    • 1

    示例:

    mysql> show processlist;
    +----+------+-----------+------------+---------+------+----------+------------------+
    | Id | User | Host      | db         | Command | Time | State    | Info             |
    +----+------+-----------+------------+---------+------+----------+------------------+
    |  5 | root | localhost | helloworld | Query   |    0 | starting | show processlist |
    +----+------+-----------+------------+---------+------+----------+------------------+
    1 row in set (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

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

    那么到这里针对数据库的操作就全部完成啦!!!

  • 相关阅读:
    【FPGA教程案例40】通信案例10——基于FPGA的简易OFDM系统verilog实现
    【Java 进阶篇】Ajax 入门:打开前端异步交互的大门
    计算机网络——传输层
    C++继承相关应用练习
    如何在 Buildroot 中配置 Samba
    Win10系统备份的方法和步骤
    【soc】— spl&&uboot校验方法
    老师设计的库CRC计算
    解决提示CUDA内存不够,但 GPU显示还有足够的空间
    JVM虚拟机知识点(保姆级教程)
  • 原文地址:https://blog.csdn.net/weixin_60915103/article/details/136696876