首先先来说一下MySQL中常见的操作:
-
清屏 system clear;
-
如果你使用的是腾讯云的Ubuntu,登陆的时候用户名可能是ubuntu,进入后可以使用 sudo -i 切换为高级用户
一、创建数据库
create database db_name;
示例:
mysql> create database love_diary;
Query OK, 1 row affected (0.01 sec)mysql> show databases;
+--------------------+
| Database |
+--------------------+
| helloworld |
| information_schema |
| love_diary |
| mysql |
| performance_schema |
| sys |
+--------------------+
6 rows in set (0.00 sec)
其中, show databases; 可以查看所有的数据库,以此来验证我们的操作是否成功。
二、删除数据库
drop database db_name;
在创建或删除数据库时,还可以指定数据库的字符集和校验规则,现在先不着急看如何在使用SQL句柄时指定,下面先来了解一下什么是字符集和校验规则
三、字符集和校验规则
创建数据库时,如果不指定编码集,系统会使用默认的编码集,这样的编码集有两个:
1.数据库字符集:数据库存储时使用的规则(将各种字符转换为二进制格式的规则)。
2.数据建库校验集:数据库如何对文本数据进行比较和排序的规则(如A和B哪个排在前面)。
3.1 查看系统默认字符集以及校验规则
show variables like 'character_set_database';
show variables like 'collation_database';
以上是我的MySQL默认的编码集,每个人的可能大同小异,基本都是 utf8
3.2 查看数据库支持的字符集
show charset;
3.3 查看数据库支持的字符集校验规则
show collation;
3.4 指定编码集
create database db_name charset = utf8;
create database db_name character set utf8;
create database db_name collate utf8_general_ci;
3.4 校验规则对数据库的影响
3.4.1 不区分大小写
创建一个数据库,校验规则使用utf8_ general_ ci[不区分大小写]
mysql> create database test1 collate utf8_general_ci;// 指定校验规则
Query OK, 1 row affected, 1 warning (0.00 sec)
mysql> use test1; // 使用数据库
Database changed
mysql> create table person(name varchar(20));// 新建 table
Query OK, 0 rows affected (0.03 sec)
mysql> insert into person values('a');
Query OK, 1 row affected (0.01 sec)
mysql> insert into person values('A');
Query OK, 1 row affected (0.01 sec)
mysql> insert into person values('b');
Query OK, 1 row affected (0.00 sec)
mysql> insert into person values('B');
Query OK, 1 row affected (0.00 sec)
mysql> select * from person where name='a';// 查询表中name='a'的数据成员
+------+
| name |
+------+
| a |
| A |
+------+2 rows in set (0.00 sec)
可以看到如果使用不区分大小写的校验规则,那么在查询 'a' 时,不论是 'A' 还是 'a' ,系统都会列出。下面来看看使用区分大小写的校验规则。
3.4.2 区分大小写
mysql> create database test2 collate utf8_bin;
Query OK, 1 row affected, 1 warning (0.01 sec)
mysql> use test2;
Database changed
mysql> create table person(name varchar(20));
Query OK, 0 rows affected (0.03 sec)
mysql> insert into person values('a');
Query OK, 1 row affected (0.00 sec)
mysql> insert into person values('A');
Query OK, 1 row affected (0.00 sec)
mysql> insert into person values('b');
Query OK, 1 row affected (0.01 sec)
mysql> insert into person values('B');
Query OK, 1 row affected (0.01 sec)
mysql> select * from person where name='a';
+------+
| name |
+------+
| a |
+------+
1 row in set (0.00 sec)
当使用区分大小写的校验规则时,查出来的数据就是严格遵循大小写的。
四、 操纵数据库
4.1 查看数据库
4.1.1 查看所有数据库
show databases;
4.1.2 查看当前使用的数据库
select database();
4.1.4 查看创建库时的语句
show create database db_name \G
\G 代替 ; 可以省略不必要的符号,如果不使用 \G ,则相对凌乱:
4.3 进入库
use db_name;
4.4 修改库
可以修改数据库的字符集:
mysql> alter database test1 charset=gbk;
Query OK, 1 row affected (0.01 sec)
也可以修改校验集:
mysql> alter database test1 collate utf8_bin;
Query OK, 1 row affected, 1 warning (0.01 sec)
五、备份和恢复
5.1 备份库
在Linux命令行可输入以下命令:
root@VM-12-10-ubuntu:/home/flash/MySQL# mysqldump -P3306 -uroot -p -B test1 > test1.sql
Enter password:
root@VM-12-10-ubuntu:/home/flash/MySQL# ll
total 16
drwxr-xr-x 2 root root 4096 Sep 8 19:36 ./
drwxr-x--- 8 flash flash 4096 Sep 7 21:32 ../
-rw-r--r-- 1 root root 2040 Sep 8 19:36 test1.sql
备份后的文件可以指定路径,既可以使用绝对路径,也可以使用相对路径。
5.2 恢复
恢复就是在MySQL中了,现在先删除 test1 这个数据库:
mysql> drop database test1;
Query OK, 1 row affected (0.03 sec)
再使用以下命令恢复:
mysql> source /home/flash/MySQL/test1.sql
可以发现,MySQL中重新生成了 test1 这个 database:
5.3 备份表
备份表时可以不使用 -B 选项,该选项是为了指明数据库,备份表可以使用以下命令:
mysqldump -uroot -p db_name 表名1 表名2 > 路径/文件名;
六、查看连接情况
与 WiFi 类似,MySQL如果有多个用户使用时也会卡顿,可以使用以下命令查看当前使用 MySQL 的用户:
show processlist;