一、基础知识。
总目录:http://www.cnblogs.com/nerxious/category/435239.html
分章节(只列出重要章节):
1、(索引)http://www.cnblogs.com/nerxious/archive/2012/12/29/2839134.html;
2、(连接查询)http://www.cnblogs.com/nerxious/archive/2012/12/29/2839397.html;
3、(数据备份与还原)http://www.cnblogs.com/nerxious/archive/2013/01/07/2849126.html;
二、其他数据库的操作。
2.1、查看数据库具体table的大小,以及条目总数。查看数据库_name = school table_name = student的条目总数+大小。
select table_name, data_length+index_length, table_rows from information_schema.tables where table_schema='school' AND table_name='student';
select table_name, concat(round((data_length+index_length)/1024/1024, 2), 'MB'), table_rows from information_schema.tables where table_schema='school' AND table_name='student';
下面的是带上单位的。且还计算了index的大小。
2.2、查看数据库的某个database的大小。
select SUM(DATA_LENGTH)+SUM(INDEX_LENGTH) from information_schema.tables where table_schema='school';
select concat(round((SUM(DATA_LENGTH)+SUM(INDEX_LENGTH))/1024/1024, 2), 'MB') from information_schema.tables where table_schema='school';
下面的是带上单位的SQL语句。可以计算出数据库的大小。
三、关于数据库备份的详细解释。
关于数据库备份,还要2篇自己总结的文章一并贴到下面:
SQLite数据库的导入和导出
>>导出
(1)整体的导出:
sqlite3 data.db
>.output data.sql
>.dump
这样就将整个db文件导出成了sql文件。sql文件,是一系列sql语句,并有数据的插入。
或者是将data.db直接导出为data1.db:
sqlite3 data.db ".dump" |sqlite3 data1.db
这个实际上只是做了一个备份。
(2)单个表格的导出:
sqlite3 data.db "select * from data_txt_table" > data_txt_table.txt
将data.db中的表格data_txt_table导入到*.txt文件中去,下图就是导出的类似格式。
SQLite数据库的导入和导出 - 东九_西十二 - 东九_西十二的博客
sqlite3 -html data.db "select * from data_txt_table" > data_txt_table.html
就是将数据库中的表格导出为html格式的文件
<<导入
(1)整体的导入:
先创建一个新数据库,比如是mydb.db。然后将先前生成的sql文件全部导入进来。
sqlite3 mydb.db
>.read dd.sql
(2)单个表格导入:
先判断导入文件的数据分割的格式,比如上面截图中所示,分割的格式是" | "
sqlite> .separator "|"
sqlite> .import data_txt_table.txt data_txt_table
这样就成功导入了。
参考:
sqlite的数据导入 导出
SQLite表结构和数据的导入导出
基本的使用方法总结:
mysql数据库的备份笔记。
1 导出所有库
系统命令行
mysqldump -uusername -ppassword --all-databases > all.sql
2 导入所有库
mysql命令行
mysql>source all.sql;
3 导出某些库
系统命令行
mysqldump -uusername -ppassword --databases db1db2 > db1db2.sql
4 导入某些库
mysql命令行
mysql>source db1db2.sql;
5 导入某个库
系统命令行
mysql -uusername -ppassword db1 < db1.sql;
或mysql命令行
mysql>source db1.sql;
导入数据库时,也要注意编码问题,具体可以参考下面这个链接,数据库备份编码相关
备份的*.sql文件里使用的编码,要与数据库设置的编码完全一致。
6 导出某些数据表
系统命令行
mysqldump -uusername -ppassword db1 table1 table2 > tb1tb2.sql
7 导入某些数据表
系统命令行
mysql -uusername -ppassword db1 < tb1tb2.sql
或mysql命令行
mysql>
user db1;
source tb1tb2.sql;
8 mysqldump字符集设置
mysqldump -uusername -ppassword --default-character-set=gb2312 db1 table1 > tb1.sql
注意:
1)对于某些情况下,需要设置数据库的字符集,要不然会出现乱码;
2)一定分开处理正式运行环境的数据库,和test的数据库,最好是在test数据库上操作后,再去操作正式运行的数据库;
3)对于某些版本的mysql,上面3中的命令导出的*.sql文件里的内容的开头如下:
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `g17_00` /*!40100 DEFAULT CHARACTER SET utf8 */;
USE `g17_00`;
--
-- Table structure for table `auth_group`
--
上面这个文件我是从g17_00数据库导出的。如果再对该文件执行mysql -uusername -ppassword db1 < db1.sql; 实际上最后生成的
数据还是g17_00。这个对于g17_00的备份和还原,这个是合理的。
但是如果我是想把g17_00完全复制到g17_01,那么我就必须要改上面*.sql文件开头中的g17_00为g17_01,这样最后通过该sql文件导入的结果就是将g17_00复制为g17_01了。
4)上面3)举的例子是备份一整个数据库,其实还可以针对某个表进行备份。
四、MySql中关于表的备份和复制。
1、
CREATE TABLE targetTable LIKE sourceTable; INSERT INTO targetTable SELECT * FROM sourceTable;
2、
show create table runoob_tbl;
create table ***;// 创建表clone_tbl
mysql> INSERT INTO clone_tbl (runoob_id,
-> runoob_title,
-> runoob_author,
-> submission_date)
-> SELECT runoob_id,runoob_title,
-> runoob_author,submission_date
-> FROM runoob_tbl;
具体参考:
MySQL复制表