【MYSQL】数据库操作基础笔记

一、基础知识。

总目录: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复制表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值