1.1 选择db1中mysql库和user表:
mysql> use db1
Database changed
mysql> select count(*) from mysql.user;
+----------+
| count(*) |
+----------+
| 9 |
+----------+
1 row in set (0.03 sec)
1.2 查看mysql库中的详细内容:
mysql> select * from mysql.db\G;
建议大家在查找的时候,一定要有针对性,不要直接*,有时候数据库比较大,几百个G也很正常。这样既浪费资源也浪费时间!
1.3 查询db从mysql.db
mysql> select db from mysql.db;
+---------+
| db |
+---------+
| test |
| test\_% |
| zhdy01 |
| zhdy02 |
| zhdy03 |
+---------+
5 rows in set (0.01 sec)
1.4 查询db和user从mysql.db
mysql> select db,user from mysql.db;
+--------+
| user |
+--------+
| |
| |
| zhdy01 |
| zhdy02 |
| zhdy03 |
+--------+
5 rows in set (0.00 sec)
1.5 模糊匹配;从mysql.db模糊查找一个ip地址。
mysql> select * from mysql.db where host like '127.0.%'\G;
2.1 在db1.t1中插入一个值为1,abc
mysql> desc db1.t1;
+-------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| id | int(4) | YES | | NULL | |
| name | char(40) | YES | | NULL | |
+-------+----------+------+-----+---------+-------+
2 rows in set (0.00 sec)
mysql> insert into db1.t1 values (1,'abc');
Query OK, 1 row affected (0.03 sec)
mysql> select * from db1.t1;
+------+------+
| id | name |
+------+------+
| 1 | abc |
+------+------+
1 row in set (0.00 sec)
2.2 更新一个表,把id为1的name全部改为aaa
mysql> update db1.t1 set name='aaa' where id =1;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from db1.t1;
+------+------+
| id | name |
+------+------+
| 1 | aaa |
+------+------+
1 row in set (0.00 sec)
2.3 删除表内的内容,并且查看一下:
mysql> delete from db1.t1 where name='aaa';
Query OK, 1 row affected (0.01 sec)
mysql> select * from db1.t1;
Empty set (0.00 sec)
2.4 删除整个表内的所有数据truncate(有时候表内的数据比较多,一个一个地删除会浪费很长时间,我们需要一次性全部搞定):
mysql> truncate db1.t1;
Query OK, 0 rows affected (0.02 sec)
mysql> select * from db1.t1;
Empty set (0.00 sec)
2.5 删除整个表db1.t1(表+ 数据)
mysql> drop table db1.t1
2.6 删除一个db1库
drop database db1;
以后尽量不要使用drop和truncate,十分危险!
如果不小心删除了一个数据库,那就是比较悲剧的事情了,如何在删除之前先备份呢?
3.1 备份mysql库到tmp目录下:
[[email protected]03 ~]# mysqldump -uroot -pzhangduanya mysql > /tmp/mysqlbak.sql
Warning: Using a password on the command line interface can be insecure.
[[email protected]03 ~]# ls /tmp/
mysqlbak.sql
3.2 创建一个mysql2数据库:
[[email protected]03 ~]# mysql -uroot -pzhangduanya -e "create database mysql2"
Warning: Using a password on the command line interface can be insecure.
3.3 从备份恢复一个数据库(注意区分,当恢复的时候只需要输入mysql即可):
[[email protected]03 ~]# mysql -uroot -pzhangduanya mysql2 < /tmp/mysqlbak.sql
Warning: Using a password on the command line interface can be insecure.
> use mysql2;
> show tables;
然后就查询到了我们恢复的表。
3.4 备份一个mysql库中的user数据表:
[root@zhdy-03 ~]# mysqldump -uroot -pzhangduanya mysql user > /tmp/user.sql
3.5 恢复一个user数据表到mysql中(这儿只需要写库的名字即可):
[root@zhdy-03 ~]# mysql -uroot -pzhangduanya mysql < /tmp/user.sql
当我们恢复的时候,加入一个数据库是存在的,首先会先drop掉,然后再次创建一个新的,数据表也是同理。
3.6 备份数据库(假如我们有很多的数据库,但是我们一个一个的去备份这样会浪费很长的时间,所以有时候我们需要一次性全部备份下来):
[root@zhdy-03 ~]# mysqldump -uroot -pzhangduanya -A > /tmp/mysql_all.sql
Warning: Using a password on the command line interface can be insecure.
[root@zhdy-03 ~]# ls /tmp/
mysql_all.sql
3.7 针对一个表结构进行备份(有时候我们并不需要表里面的数据,只是需要表结构,怎么操作呢? -d):
[[email protected]03 ~]# mysqldump -uroot -pzhangduanya -d mysql2 > /tmp/mysql2_tab.sql
Warning: Using a password on the command line interface can be insecure.
[[email protected]03 ~]# ls /tmp/
mysql2_tab.sql
其实我们使用mydqldump命令只是备份一些小的数据库,但是如果备份一个很大的数据库(几百G或者几T)就不适合了!速度非常慢,效率比较低,待会我就整理一下如何使用另外一个数据库指令备份比较大的数据库!