Mysql库操作

Mysql库操作_第1张图片

一:库的操作

1:创建数据库

mysql> create database test1;
Query OK, 1 row affected (0.00 sec)

mysql> create database test2 charset=utf8;
       create database test2 character utf8;

Query OK, 1 row affected (0.00 sec)

mysql> create database test3 charset=utf8 collate=utf8_general_ci;
       create database test3 character utf8 collate=utf8_general_ci;
Query OK, 1 row affected (0.00 sec)

上面的字符集2种方式都可以

一共创建了3个数据库:

  • test1创建时没有指定字符集和校验集,会采用数据库默认字符集和校验规则。
  • test2创建时指定了字符集为utf8。
  • test3创建时指定了字符集和校验规则。

 2:字符集和校验规则

2.1:概念

字符集:数据库存储数据的编码集。

校验规则:数据库进行字段比较所用的编码集,也就是读取数据库时采用的编码集。

2.2:查看系统默认的字符集和校验规则

Mysql库操作_第2张图片

Mysql库操作_第3张图片

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

show charset;
show collation

2.4:查看当前数据库采用的字符集和校验规则

cd /var/lib/mysql/数据库名

cat db.opt

我们再创建一个数据库,使用的校验规则采用区分大小写。

test3:

test4:

因此我们可以得出结论,创建数据库的字符集和校验集采用就近原则,如果不指定,就采用数据库默认的字符集和校验集。

 2.5:字符集和校验集对数据库的影响

Mysql库操作_第4张图片Mysql库操作_第5张图片

可以看到test3采用的不区分大小写,查询出来的a大小写都有。

Mysql库操作_第6张图片

而对test4进行查询只能查到小写的。

因此字符集是存储时采用的一种编码格式,校验集是在读取数据库时进行字段比较时采用的一种编码规则。

3:查看数据库

mysql> show databases;//查看有什么数据库
+---------------------+
| Database            |
+---------------------+
| information_schema  |
| README_TO_RECOVER_A |
| jfhelloworld        |
| mysql               |
| performance_schema  |
| sys                 |
| test1               |
| test2               |
| test3               |
| test4               |
+---------------------+
10 rows in set (0.00 sec)

mysql> show create database test1;//查看创建数据库时的语句
+----------+----------------------------------------------------------------+
| Database | Create Database                                                |
+----------+----------------------------------------------------------------+
| test1    | CREATE DATABASE `test1` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+----------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> select database();//查看当前正在使用哪个数据库
+------------+
| database() |
+------------+
| test4      |
+------------+
MySQL 建议我们关键字使用大写,但是不是必须的。
数据库名字的反引号 ``, 是为了防止使用的数据库名刚好是关键字

/*!40100 default.... */ 这个不是注释,表示当前mysql版本大于4.01版本,就执行这句话  

 4:修改数据库

mysql> alter database test3 collate utf8_bin;#修改校验规则
Query OK, 1 row affected (0.00 sec)

5:删除数据库

#删除数据库————本质是在/var/lib/mysql中删除一个目录
#不建议直接删除数据库,建议备份后删除
mysql> drop database database1;
Query OK, 0 rows affected (0.01 sec)

 6:备份数据库

mysql> mysqldump -P 3306 -u root -p -B test3 > /home/wjw/test3.sql;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'mysqldump -P 3306 -u root -p -B test3 > /home/wjw/test3.sql' at line 1
注意,备份数据库的时候不能在mysql中使用,因为这是一个操作系统的bash。所以要退出数据库连接再使用。

 我们先进入/var/lib/mysql目录下

使用指令

# mysqldump -P3306 -u root -p 密码 -B 数据库名 > 数据库备份存储的文件路径
[root@hcss-ecs-efdb mysql]# mysqldump -P 3306 -uroot -p -B test3 > /home/wjw/test3.sql
Enter password: 
打开备份的文件
Mysql库操作_第7张图片
可以看到备份其实是把我们整个创建数据库,建表,导入数据的语句都装载这个文
件中。

7:还原数据库

bash: test3.sql: line 1: syntax error near unexpected token `('
bash: test3.sql: line 1: `-- MySQL dump 10.13  Distrib 5.7.43, for Linux (x86_64)'

 报错是因为还原指令是mysql的语句,不是bash。所以要先连接到数据库才行。

mysql> source /home/wjw/test3.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)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected, 1 warning (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 1 row affected (0.00 sec)

Database changed
Query OK, 0 rows affected (0.01 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.01 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, 5 rows affected (0.01 sec)
Records: 5  Duplicates: 0  Warnings: 0

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, 1 warning (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)

实际上备份和恢复都是采用query的形式,也就是备份query语句,通过query再重新创建。

8:备份一个或多个表或者多个数据库

#仅备份几张张表
mysqldump -u root -p 数据库名 表名1 表名2 > D:/mytest.sql

#同时备份多个数据库
mysqldump -u root -p -B 数据库名1 数据库名2 ... > 数据库存放路径

9:查看数据库连接情况

Mysql库操作_第8张图片

记住是在mysql中查询。

你可能感兴趣的:(mysql,数据库)