mysql怎么删除一个表
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql怎么删除一个表相关的知识,希望对你有一定的参考价值。
参考技术A 1、可以直接使用drop命令,SQL语句为 DROP TABLE 。2、使用php脚本删除数据表:PHP使用 mysqli_query 函数来删除 MySQL 数据表。该函数有两个参数,在执行成功时返回 TRUE,否则返回 FALSE。语法mysqli_query(connection,query,resultmode)。
3、当你不再需要该表时, 用 drop;当你仍要保留该表,但要删除所有记录时, 用 truncate;当你要删除部分记录时, 用 delete。
4、drop table table_name : 删除表全部数据和表结构,立刻释放磁盘空间,不管是 Innodb 和 MyISAM。实例,删除学生表:drop table student。
5、truncate table table_name : 删除表全部数据,保留表结构,立刻释放磁盘空间 ,不管是 Innodb 和 MyISAM。实例,删除学生表:truncate table student。
6、delete from table_name : 删除表全部数据,表结构不变,对于 MyISAM 会立刻释放磁盘空间,InnoDB 不会释放磁盘空间。实例,删除学生表:delete from student。
7、delete from table_name where xxx : 带条件的删除,表结构不变,不管是 innodb 还是 MyISAM 都不会释放磁盘空间。实例,删除学生表中姓名为 "张三" 的数据:delete from student where T_name = "张三"。
MySQL使用DROP TABLE命令删除表怎么恢复?
前言
今天同事勿删除了一个测试环境表,因为刚好在跑重要的数据,重新跑又比较麻烦,所以尝试看能不能通过恢复数据的方式进行数据恢复,如果你也是重要数据一定要切记“不要慌,慌也没用”。
百度过一些例子,哪些例子比较适合表刚刚创建后被删除,就能完全恢复,本篇文章适合那种创建很长时间,表在被删除的。
开始操作
第一步:先连接数据库
mysql -uroot
第二步:在Mysql执行,看有没有开发日志备份
show variables like \'log_bin\'
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin | ON |
+---------------+-------+
这里返回ON表示开启了,如果是OFF表示关闭,如果是OFF这篇文章可以不用看了,对你没有任何帮助
第三步:继续在MySQL执行,查看日志备份路径
show variables like \'%datadir%\'
+---------------+------------------------+
| Variable_name | Value |
+---------------+------------------------+
| datadir | /usr/local/mysql/data/ |
+---------------+------------------------+
第四步:去/usr/local/mysql/data/
路径查看列表可以使用ll
命令
这里可以看到很多,MySQL的日志文件,命名都是由mysql-bin.0000xx,不过这些文件都是二进制的,需要用mysql的工具才能看出来到底是什么。
第五步:查看二进制文件具体SQL
mysqlbinlog -v --base64-output=decode-rows /usr/local/mysql/data/mysql-bin.0000xx |grep -i -A 50 -B 50 \'误删除的表名\' >> 0xx.sql
上面这个命令的意思是指定SQL日志的二级制文件,将二级制文件解析成SQL语句,输出到0xx目录,多个自行更改
因为作者这里表创建的时间比较长,所以我不知道具体是在那个文件,只能全部查看,如果你知道那个时间可以查看指定的就好了。
这个文件有规律,就写了一个小java实例用来生成
public static void main(String[] args)
for (int i = 1; i <= 48; i++)
String format = String.format("%02d", i);
String s = "mysqlbinlog -v --base64-output=decode-rows /usr/local/mysql/data/mysql-bin.0000"+format+" |grep -i -A 50 -B 50 \'误删除的表名\' >> 0"+format+".sql";
System.out.println(s);
给这些命令复制到shell命令执行,就可以在当前目录下生成0x.sql文件。将文件下载到本地
第六步:查看生成的SQL文件
如果是一个文件可以肉眼查看,因为作者生成了48个文件,肉眼看比较麻烦,所有又写了一个java实例,通过io查找命令
public static void main(String[] args) throws Exception
//这里输入你自己的表名称
String tableName = "表名称";
//这里输入你到处的日志路径
File file = new File("C:\\\\Users\\\\Lenovo\\\\Desktop\\\\数据恢复");
File[] files = file.listFiles();
for (File file1 : files)
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file1)));
String line = null;
System.out.println("<<<<<<<<<<<<<<<< 正在读取"+file1.getName()+"文件 >>>>>>>>>>>>>>>>");
while ((line = br.readLine()) != null)
if(line.indexOf(tableName) == -1)
continue;
System.out.println(line+";");
这段代码java执行成功后,控制台会有很多SQL语句,数据无价,最好还是肉眼筛选,看是否有需要的SQL语句数据,将数据复制到数据库执行
第七步:执行SQL
这个就不多说了,相信你也会了~!
以上是关于mysql怎么删除一个表的主要内容,如果未能解决你的问题,请参考以下文章
mysql批量删除,已经获得id,条件是另一个表,不存在的就删除,请问sql语句怎么写?