设为首页 收藏本站
查看: 574|回复: 0

[经验分享] MYSQL插入数据,修改数据,误操作怎么恢复实例

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-3-14 08:58:59 | 显示全部楼层 |阅读模式
往表里插入数据
mysql> insert into student(id,name) values(1,'xxx');
Query OK, 1 row affected (0.00 sec)

mysql> select * from student;
+----+------+-----+------+
| id | name | age | dept |
+----+------+-----+------+
|  1 | xxx  |   0 | NULL |
+----+------+-----+------+
1 row in set (0.00 sec)

id列是自增的


备份数据库
mysqldump -uroot -p -B xiaohu >/opt/xiaohu_bak.sql
过滤 查看备份数据 grep -E -v "#|\/|^$|--" /opt/xiaohu_bak.sql

备份数据注意要是备份全的数据库知识点
mysqldump -uroot -p -A   -B xiaohu >/opt/xiaohu_bak.sql  会报错为什么因为-A是备份所有数据库而你后边有指定了数据库所以报错

插入数据 批量插入


查询数据优化  这样的话就会查出你想要的字符段
mysql> select id,name from student;
+----+------+
| id | name |
+----+------+
|  1 | xxx  |
+----+------+

条件查询select id,name from student where id=你想要的id; 可以根据你的字符段的名字查询这就是name  字符串查询如(asdfsdf) 一定要加‘’否则不走索引
多条件查询
select id,name from student where id=   and和   name=   select id,name from student where id=   or或者   name=
如果要查询id大于2小于5的语句
select id,name from stundent where id>2 and id<5;


查询语句的计划如走索引 explain 判断语句走索引
mysql> explain select * from student where name='xiaohu'\G;
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: student
         type: ref
possible_keys: index_name,ind_name_dept
          key: index_name 索引的表明
      key_len: 60 索引长度
          ref: const
         rows: 1 读了一行
        Extra: Using where
1 row in set (0.01 sec)





修改表中的数据 update
mysql> update student set name='gongli' where id=2;  语法update 表名 set 改的名字  条件 哪里?
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0



注意误操作
如mysql> update student set name='gongli'  后面没加条件,那么结果就会将你所有数据的表名都改成gongli





MYSQL备份

前面的那个怎么解决呢?

log-bin一定要备份 打开就会自动生成
log-bin对修改的东西记录

恢复数据库怎么恢复 ?如何在不停库的情况下恢复?
切割  


防止数据库误操作如update
来个案例

mysql> use xiaohu;
Database changed
mysql> select * from student;
+----+--------+-----+------+
| id | name   | age | dept |
+----+--------+-----+------+
|  1 | xxx    |   0 | NULL |
|  2 | gongli |   0 | NULL |
|  6 | qqq    |   0 | NULL |
+----+--------+-----+------+
3 rows in set (0.01 sec)      现在这个数据是正确的,那么我想把第2个id改为gongli,方法前面有
那么如果我误操作呢,比如我想把第二行改了,但是忘了加条件都改成gongli
mysql  -U 这样就会防止你误操作
mysql> update student set name='gongli';
ERROR 1175 (HY000): You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column

那么怎么每次启动会自动成为-U 状态呢?
alias mysql=‘mysql -U’



案例如果把表中的数据都删除了呢?怎么办
mysql> delete from student where id=1; 逻辑删除
Query OK, 1 row affected (0.00 sec)

mysql> truncate table student;  直接清空
Query OK, 0 rows affected (0.01 sec) 这两个都是删除 表的语句,后者更快


增删改表的字段
命令语法  alter table 表明 add 字段  类型 其他;
mysql> alter table student add sex char(4);
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc student;
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int(11)     | NO   | PRI | NULL    | auto_increment |
| name  | char(20)    | NO   | MUL | NULL    |                |
| age   | tinyint(2)  | NO   | MUL | 0       |                |
| dept  | varchar(16) | YES  | MUL | NULL    |                |
| sex   | char(4)     | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)
默认会添加到最后一列

那么我想添加到 qiqi列到name列后面呢?      after后列
mysql> alter table student add qiqi int(4) after name;
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc student;
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int(11)     | NO   | PRI | NULL    | auto_increment |
| name  | char(20)    | NO   | MUL | NULL    |                |
| qiqi  | int(4)      | YES  |     | NULL    |                |
| age   | tinyint(2)  | NO   | MUL | 0       |                |
| dept  | varchar(16) | YES  | MUL | NULL    |                |
| sex   | char(4)     | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+
6 rows in set (0.00 sec)
那添加到第一行呢?
mysql> alter table student add   meng varchar(22) first;
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc student;
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| meng  | varchar(22) | YES  |     | NULL    |                |
| id    | int(11)     | NO   | PRI | NULL    | auto_increment |
| name  | char(20)    | NO   | MUL | NULL    |                |
| qiqi  | int(4)      | YES  |     | NULL    |                |
| age   | tinyint(2)  | NO   | MUL | 0       |                |
| dept  | varchar(16) | YES  | MUL | NULL    |                |
| sex   | char(4)     | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+
7 rows in set (0.00 sec)

怎么去修改表名呢? rename  表  表名 更改 更改的名字
mysql> rename  table student to student2;
Query OK, 0 rows affected (0.01 sec)


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-190486-1-1.html 上篇帖子: 修改mysql root密码 下篇帖子: MYSQL数据库查询删除创建企业基本知识
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表