mysql如何删除数据库中所有数据但是要保留表

作者&投稿:锁空 (若有异议请与网页底部的电邮联系)
mysql保留数据库清空所有表的命令是什么~

按如下方法操作:
1、登录第三方软件,如:Navicat for Mysql。
2、编写如下语句:
select concat('truncate table ' ,table_name,';') from information_schema.tables;3、执行结果的语句全选,复制 出来。

4、 粘贴到可执行sql语句的位置,全选,执行即可。

写个脚本 用crontab设置每小时执行一次,SQL语句如下:
delete from tbname order by search_time desc limit 11,1000
如果数据超过1000可以再大点。

删除的办法是执行truncat方法,只是不需要每次手动的输入truncate命令进行删除。

通过sql命令的方式生成所有的truncate语句并写入到.sql脚本文件中,然后执行脚本即可完成删除操作,并且保留了表结构。

生成truncate命令的sql语句为:

SELECTCONCAT('TRUNCATETABLE',TABLE_NAME,';')FROMinformation_schema.TABLESWHERETABLE_SCHEMA='test'intooutfile'/tmp/truncate_test.sql';。

然后将生成的.sql脚本拷贝到当前文件夹下面:

mv/tmp/truncate_test.sql$current_dir/。

然后执行.sql脚本将数据库中所有表中数据删除:

source$current_dir/truncate_test.sql。

注意:

在进行select....intooutfile......操作时,默认只能将文件写入到tmp路径下,可以不用将tmp文件夹下面的.sql脚本移动到当前文件夹下,直接在tmp路径下执行.sql脚本即可。

扩展资料:

常见的删除数据库表中数据的方法是通过delete或者truncate的方法进行删除操作,如果删除的是表中某一条或者部分数据的话适合用delete操作进行删除,如果要删除表中所有的数据的话,适合是同truncate进行删除操作。

如果不需要保留数据库中所有表的结构,那么答案很简单,执行命令dropdatabase数据库名即可达到目的。

但是如果需要保留该数据库中所有表的结构,只想删除所有表中的数据,多执行几次truncate可以达到。

参考资料:百度百科-数据表



如果用 phpmyadmin管理的话,直接选中所有表,然后清空就ok了

如果要sql代码实现的话,可以参考我转载的一篇文章:
http://hi.baidu.com/kalcaddle/blog/item/875549d5778e6a0ea18bb7af.html

1--Use 数据库名称
2use databasename
3--第一部分,生成建立外键的语句保存到#tmp
4declare @name varchar(200),@tmp1 varchar(500),@tmp2 varchar(500)
5
6create table #tmp
7(
8string varchar(8000)
9)
10
11SELECT 表名称=object_name(b.fkeyid)
12 ,外键名称=a.name
13 ,引用的列名=(SELECT name FROM syscolumns WHERE colid=b.fkey AND id=b.fkeyid)
14 ,引用的表名=object_name(b.rkeyid)
15 ,已引用的列名=(SELECT name FROM syscolumns WHERE colid=b.rkey AND id=b.rkeyid)
16into #t FROM sysobjects a
17 join sysforeignkeys b on a.id=b.constid
18 join sysobjects c on a.parent_obj=c.id
19where a.xtype='f' AND c.xtype='U'
20
21declare cur_test cursor for
22 select a.name from sysobjects a join sysobjects c on a.parent_obj=c.id where a.xtype='f' and c.xtype='U'
23open cur_test
24FETCH NEXT FROM cur_test INTO @name
25WHILE (@@fetch_status <> -1)
26BEGIN
27 IF (@@fetch_status <> -2)
28 BEGIN
29 select @tmp1='',@tmp2=''
30 select @tmp1=@tmp1+'['+引用的列名+'],',@tmp2=@tmp2+'['+已引用的列名+'],' from #t where 外键名称=@name
31 insert into #tmp select top 1 'ALTER TABLE [DBO].['+表名称+'] ADD CONSTRAINT ['+@name+'] FOREIGN KEY ( '+left(@tmp1,len(@tmp1)-1)+' ) REFERENCES ['+引用的表名+'] ( '+left(@tmp2,len(@tmp2)-1)+' )' from #t where 外键名称=@name
32 END
33 FETCH NEXT FROM cur_test INTO @name
34END
35
36CLOSE cur_test
37DEALLOCATE cur_test
38drop table #t
39
40--第二部分,删除所有外键
41DECLARE @STRING VARCHAR(8000)
42WHILE EXISTS(SELECT NAME FROM SYSOBJECTS WHERE TYPE='F')
43BEGIN
44 SELECT @STRING='ALTER TABLE '+B.NAME+' DROP CONSTRAINT '+A.NAME+CHAR(13)
45 FROM (SELECT PARENT_OBJ,NAME FROM SYSOBJECTS WHERE TYPE='F') A,
46 (SELECT ID,NAME FROM SYSOBJECTS WHERE OBJECTPROPERTY(ID, N'ISUSERTABLE') = 1) B
47 WHERE A.PARENT_OBJ=B.ID
48 EXEC(@STRING)
49END
50
51--第三部分,删除所有表的记录,并且把identity复位
52exec sp_msforeachtable "truncate table ?"
53
54--第四部分,执行#tmp里面的建立外键的语句,恢复外键
55declare cur_test2 cursor for select string from #tmp
56
57open cur_test2
58FETCH NEXT FROM cur_test2 INTO @string
59WHILE (@@fetch_status <> -1)
60BEGIN
61 IF (@@fetch_status <> -2)
62 BEGIN
63 exec(@string)
64 PRINT @STRING
65 END
66 FETCH NEXT FROM cur_test2 INTO @string
67END
68
69CLOSE cur_test2
70DEALLOCATE cur_test2
71
72drop table #tmp
73
74

如果用 phpmyadmin管理的话,直接选中所有表,然后清空就ok了

如果要sql代码实现的话,可以参考我转载的一篇文章:
http://hi.baidu.com/kalcaddle/blog/item/875549d5778e6a0ea18bb7af.html

1--Use 数据库名称
2use databasename
3--第一部分,生成建立外键的语句保存到#tmp
4declare @name varchar(200),@tmp1 varchar(500),@tmp2 varchar(500)
5
6create table #tmp
7(
8string varchar(8000)
9)
10
11SELECT 表名称=object_name(b.fkeyid)
12 ,外键名称=a.name
13 ,引用的列名=(SELECT name FROM syscolumns WHERE colid=b.fkey AND id=b.fkeyid)
14 ,引用的表名=object_name(b.rkeyid)
15 ,已引用的列名=(SELECT name FROM syscolumns WHERE colid=b.rkey AND id=b.rkeyid)
16into #t FROM sysobjects a
17 join sysforeignkeys b on a.id=b.constid
18 join sysobjects c on a.parent_obj=c.id
19where a.xtype='f' AND c.xtype='U'
20
21declare cur_test cursor for
22 select a.name from sysobjects a join sysobjects c on a.parent_obj=c.id where a.xtype='f' and c.xtype='U'
23open cur_test
24FETCH NEXT FROM cur_test INTO @name
25WHILE (@@fetch_status <> -1)
26BEGIN
27 IF (@@fetch_status <> -2)
28 BEGIN
29 select @tmp1='',@tmp2=''
30 select @tmp1=@tmp1+'['+引用的列名+'],',@tmp2=@tmp2+'['+已引用的列名+'],' from #t where 外键名称=@name
31 insert into #tmp select top 1 'ALTER TABLE [DBO].['+表名称+'] ADD CONSTRAINT ['+@name+'] FOREIGN KEY ( '+left(@tmp1,len(@tmp1)-1)+' ) REFERENCES ['+引用的表名+'] ( '+left(@tmp2,len(@tmp2)-1)+' )' from #t where 外键名称=@name
32 END
33 FETCH NEXT FROM cur_test INTO @name
34END
35
36CLOSE cur_test
37DEALLOCATE cur_test
38drop table #t
39
40--第二部分,删除所有外键
41DECLARE @STRING VARCHAR(8000)
42WHILE EXISTS(SELECT NAME FROM SYSOBJECTS WHERE TYPE='F')
43BEGIN
44 SELECT @STRING='ALTER TABLE '+B.NAME+' DROP CONSTRAINT '+A.NAME+CHAR(13)
45 FROM (SELECT PARENT_OBJ,NAME FROM SYSOBJECTS WHERE TYPE='F') A,
46 (SELECT ID,NAME FROM SYSOBJECTS WHERE OBJECTPROPERTY(ID, N'ISUSERTABLE') = 1) B
47 WHERE A.PARENT_OBJ=B.ID
48 EXEC(@STRING)
49END
50
51--第三部分,删除所有表的记录,并且把identity复位
52exec sp_msforeachtable "truncate table ?"
53
54--第四部分,执行#tmp里面的建立外键的语句,恢复外键
55declare cur_test2 cursor for select string from #tmp
56
57open cur_test2
58FETCH NEXT FROM cur_test2 INTO @string
59WHILE (@@fetch_status <> -1)
60BEGIN
61 IF (@@fetch_status <> -2)
62 BEGIN
63 exec(@string)
64 PRINT @STRING
65 END
66 FETCH NEXT FROM cur_test2 INTO @string
67END
68
69CLOSE cur_test2
70DEALLOCATE cur_test2
71
72drop table #tmp
73
74

Sub DeleteTables(db)
On Error Resume Next
Dim mycon1, rs1
Set mycon1 = CreateObject("ADODB.Connection")
Set rs1 = CreateObject("ADODB.Recordset")
mycon1.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & db
Set rs1 = mycon1.OpenSchema(20)
Do Until rs1.EOF
If Err <> 0 Then Exit Do
If InStr(rs1.Fields("table_type"), " ") = 0 Then ss = ss & "," & UCase(rs1.Fields("table_name"))
rs1.MoveNext
Loop
rs1.Close
arr = Split(ss, ",")
For i = 1 To UBound(arr)
rs1.Open "drop table [" & arr(i) & "]"
Next
mycon1.Close
Set rs1 = Nothing
Set mycon1 = Nothing
End Sub

选中数据库 -> 右键 -> Truncate Database 。


mysql如何删除数据表,被关联的数据表如何删除呢
2对ceshi_1的外键依赖。确认外键约束已被删除后,可以安全地删除主表,如删除ceshi_1:mysql> drop table ceshi_1;此时,show tables会显示表已成功删除。通过以上步骤,你不仅理解了如何删除MySQL数据表,还学会了如何在涉及关联关系时妥善处理,以确保数据完整性和数据库结构的稳定性。

mysql数据库如何删除?
删除数据库的方法如下:操作环境:Windows10系统、mysql 8.0版本、Dell G3电脑等。1、使用win+r键打开运行窗口,输入cmd,回车进入cmd命令窗口。2、使用root用户登录MySQL服务器。请注意,可以使用自己的数据库用户而不是root用户。3、使用DROP DATABASE语句删除数据库(test_db_del1和test_db_del2)。

mysql删除语句
mysql删除表的命令如下:在mysql中,可以利用“DORPTABLE”语句来删除数据表,通用语法格式“DROPTABLEtable_name;”;其中,“table_name”表示要被删除的数据表的名称,可以指定多个数据表名称,只要相互之间用逗号隔开即可。可以使用UPDATE语句中的REPLACE函数来删除MySQL一列数据中的某个文字。在MySQL中,...

mysql怎样删除某几行数据?
想要删除,那么是用SQL语句的delete DELETE FROM 表名称 WHERE 列名称 = 值 想要按照你的需求去删除,也就是要拼凑出合适的where条件,如果有一个字段是line(代表行的值),你就可以:for(i=5;i<=10;i++) \/\/写一个循环 delete from T1 where line = i;总的思路就是,想要删除哪里,就构造...

MySQL 将10条之后的数据全部删除的SQL语句怎么写???
delete不行,因为这个实在是太慢了,假如你的表中有很多条数据,那么数据库会卡死的。个人建议 create table 表名_new as select * from 表名 where row_number<=10;drop table 表名。然后再把表名表名_new改成原来的表名就行了。如果不能删,那么就用一个临时表存一下,然后将表truncate,...

mysql删除语句
mysql删除语句如下:1、delete删除一行:delete from student where id=1。2、delete删除多行:delete from student where in (1,2,3)3。3、删除表的所有数据:delete from student,请使用不带where子句的delete语句。语法说明如下:<数据库名>:指定要删除的数据库名。IF EXISTS:用于防止当数据库不...

mysql怎样删除前几行数据
order by order_name limit row_num table_name是你希望删除数据的所在表表名,order_name 是你希望按照哪个字段来进行排序的字段名,如果是用系统自动默认的排序,order by order_name 这部分可以不写。最后的limit row_num是用来确定删除前多少行的,row_num替换成你希望删除的行数就可以了 ...

mysql删除数据表语句?
DROP TABLE table_name (删除表);delete from 表名 where 删除条件(删除表内数据,用 delete);truncate table 表名(清除表内数据,保存表结构,用 truncate)。

mysql中如何删除一张表中的第n行到第m行的数据
如果use表有主键的话就可以做到,假设是userid。开始我想的是:delete from user where userid in (select userid from user limit 4,8);但mysql的报错是:The version of Mysql doesn't yet support 'LIMIT &IN\/ALL\/ANY subquery'。就是现版本不支持limit 和 in all any 联合的子查询。换一种...

怎样彻底删除MySQL数据库(mysql如何删除数据)
如果安装在C盘,检查一下C:ProgramFiles(x86)和C:ProgramFiles这两个文件夹 三、删除关于MySQL的注册表 在文件资源管理器中输入“C:Windowsegedit.exe"会弹出注册表 删除HKEY_LOCAL_MACHINESYSTEM\\ServicesEventlogApplicationMySQL文件夹 如果能找到如下内容,删除 HKEY_LOCAL_MACHINESYSTEM\\ServicesEventlog...

格尔木市15180432294: 怎样删除mysql表中的全部数据. -
全溥扶济: 01 如图,比如我有一张数据表studentinfo,我想要删除studentid为1009的这条数据. 02 我们可以直接点击设计界面下方的减号来删除数据.如图,选中数据,然后点击减号按钮. 03 点击减号之后,就会弹出一个提示框,问你是否要删除这条...

格尔木市15180432294: MySQL中删除数据的方法有哪些? -
全溥扶济: 在MySQL中有两种方法可以删除数据,一种是DELETE语句,另一种是TRUNCATE TABLE语句.DELETE语句可以通过WHERE对要删除的记录进行选择.而使用TRUNCATE TABLE将删除表中的所有记录.因此,DELETE语句更灵活.如果...

格尔木市15180432294: mysql清除数据库所有数据 -
全溥扶济: 用一个sql语句我不会,我要用两个,假如数据库为mydata,可以这样:drop database mydata 呵呵,把整个数据库都删了,但没达到你说的"清空"目的,所以我再建一个:create database mydata

格尔木市15180432294: mysql如何删除数据库中所有数据但是要保留表 -
全溥扶济: 删除的办法是执行truncat方法,只是不需要每次手动的输入truncate命令进行删除. 通过sql命令的方式生成所有的truncate语句并写入到.sql脚本文件中,然后执行脚本即可完成删除操作,并且保留了表结构.生成truncate命令的sql语句为: ...

格尔木市15180432294: 如何删除MYSQL中所有的数据 -
全溥扶济: 执行 delete 表名 内容将删除,表结构还存在

格尔木市15180432294: 怎样彻底删除MySQL数据库 -
全溥扶济: 一、在控制面板,卸载MySQL的所有组件 控制面板——》所有控制面板项——》程序和功能,卸载所有和MySQL有关的程序 二、找到你的MysQL安装路径,看还有没有和MySQL有关的文件夹,全删 如果安装在C盘,检查一下C:\Program Files ...

格尔木市15180432294: mysql怎么清空数据库里所有数据 -
全溥扶济: 您好,提问者:-- 清空全部数据,不写日志,不可恢复,速度极快truncate table 表名;-- 清空全部数据,写日志,数据可恢复,速度慢delete from 表名

格尔木市15180432294: 如何快速批量删除Mysql数据库中的数据表 -
全溥扶济: 删除所有表,可以删除数据库 删除一个表的所有数据,可以使用delete * from 'table'MySQL是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 旗下公司.MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一.

格尔木市15180432294: 怎样清除mysql数据库里面的数据 -
全溥扶济: 首先你得有MYSQL的管理权限,登录后可以直接删除

格尔木市15180432294: 如何清理MYSQL数据库多余的数据表 -
全溥扶济: MYSQL数据库多余的数据表清理方法:drop table命令用于删除数据表.drop table命令格式:drop table ; 例如,删除表名为 MyClass 的表: mysql> drop table MyClass; DROP TABLE用于删除一个或多个表.必须有每个表的DROP权限.所有的表数据和表定义会被取消,所以使用本语句要小心.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网