一、mysqldump
1、导出一个数据库的结构
mysqldump -d dbname -uroot -p > dbname.sql
2、导出多个数据库的结构
mysqldump -d -B dbname1 dbname2 -uroot -p > dbname.sql
3、导出一个数据库中数据(不包含结构)
mysqldump -t dbname -uroot -p > dbname.sql
4、导出多个数据库中数据(不包含结构)
mysqldump -t -B dbname1 dbname2 -uroot -p > dbname.sql
5、导出一个数据库的结构以及数据
mysqldump dbname -uroot -p > dbname.sql
6、导出多个数据库的结构以及数据
mysqldump -B dbname1 dbname2 -uroot -p > dbname.sql
7、导出一个数据库中一个表的结构
mysqldump -d dbname1 tablename -uroot -p > tablename.sql
8、导出一个数据库中多个表的结构
mysqldump -d -B dbname1 --tables tablename1 tablename2 -uroot -p > tablename.sql
9、导出一个数据库中一个表的数据(不包含结构)
mysqldump -t dbname1 tablename -uroot -p > tablename.sql
10、导出一个数据库中多个表的数据(不包含结构)
mysqldump -t -B dbname1 --tables tablename1 tablename2 -uroot -p > tablename.sql
11、导出一个数据库中一个表的结构以及数据
mysqldump dbname1 tablename -uroot -p > tablename.sql
12、导出一个数据库中多个表的结构以及数据
mysqldump -B dbname1 --tables tablename1 tablename2 -uroot -p > tablename.sql
13、只导出存储过程和函数(不导出结构和数据,要同时导出结构的话,需要同时使用-d)
mysqldump -R -ndt dbname -u root -p > dbname.sql
14、只导出事件
mysqldump -E -ndt dbname -u root -p > dbname.sql
15、不导出触发器(触发器是默认导出的–triggers,使用–skip-triggers屏蔽导出触发器)
mysqldump --skip-triggers dbname1 -u root -p > dbname.sql
16、导入数据
mysql -u root -p
use dbname;
source dbname.sql
17、总结一下:
-d 结构(--no-data:不导出任何数据,只导出数据库表结构)
-t 数据(--no-create-info:只导出数据,而不添加CREATE TABLE 语句)
-n (--no-create-db:只导出数据,而不添加CREATE DATABASE 语句)
-R (--routines:导出存储过程以及自定义函数)
-E (--events:导出事件)
--triggers (默认导出触发器,使用--skip-triggers屏蔽导出)
-B (--databases:导出数据库列表,单个库时可省略)
--tables 表列表(单个表时可省略)
①同时导出结构以及数据时可同时省略-d和-t
②同时 不 导出结构和数据可使用-ntd
③只导出存储过程和函数可使用-R -ntd
④导出所有(结构&数据&存储过程&函数&事件&触发器)使用-R -E(相当于①,省略了-d -t;触发器默认导出)
⑤只导出结构&函数&事件&触发器使用 -R -E -d
二、mysql 字符集
1、mysql 字符集
mysql 字符集分五个层级:服务器级别;数据库级别;表级别、列级别;连接级别
2、使用下面的命令查看当前数据库的字符集设置:
SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
+--------------------------+--------------------+
| Variable_name | Value |
+--------------------------+--------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| collation_connection | utf8mb4_unicode_ci |
| collation_database | utf8mb4_unicode_ci |
| collation_server | utf8mb4_unicode_ci |
+--------------------------+--------------------+
看上面这张表:
character_set_server:默认的内部操作字符集
character_set_database:当前选中数据库的默认字符集
character_set_client:客户端来源数据使用的字符集
character_set_connection:连接层字符集
character_set_results:查询结果字符集
character_set_system:系统元数据(字段名等)字符集
character_set_filesystem:系统文件存储字符集
以collation_开头的同上面对应的变量,用来描述字符集排序
2、在mysql配置中修改字符集
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
character-set-client-handshake=False
上面的配置:
第一项修改数据库及服务器的字符集设置,对应的是 character_set_database、character_set_server 两项;
第二项修改数据库及服务器的字符集排序规则,对应的是 collation_database、collation_server 两项;
第三项忽略掉客户端的字符集设置,默认使用服务器的设置,涉及 character_set_client、character_set_connection、character_set_results、collation_connection 这几项;
3、修改已经存在的数据库、表、字段的字符集:
由于已经存在的数据库及表使用的是创建时的字符集设置,不会随着配置的改变而改变,所以,在有些情况下,需要手动修改已经存在的数据库、表、字段的字符集
修改Database字符集:ALTER DATABASE database_name CHARACTER SET = 字符集名称 COLLATE 字符集排序规则名称;
修改Table字符集:ALTER TABLE table_name CONVERT TO CHARACTER SET 字符集名称 COLLATE 字符集排序规则名称;
修改column字符集:ALTER TABLE table_name CHANGE column_name column_name VARCHAR(191) CHARACTER SET 字符集名称 COLLATE 字符集排序规则名称 NOT NULL;
4、查看mysql所支持的全部字符集
show character set;