如何批量删除数据库中同一字段开头的表?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何批量删除数据库中同一字段开头的表?相关的知识,希望对你有一定的参考价值。

数据库中有织梦的数据dede_开头
还有其他discuz程序的数据表pre_开头
现在需要彻底删掉数据库中织梦的表
如何批量删除?求删除代码 谢谢!!!!!

--SQL批量删除数据表中指定字段对应的所有约束
--定义要操作的数据表名变量
declare @TableName nvarchar(250)
set @TableName=\'数据表名\'
--定义要操作的字段名变量
declare @ColumnName nvarchar(250)
set @ColumnName=\'字段名\'
--定义当前查询的约束变量
declare @ConstraintName varchar (250)
--声明读取数据表中指定字段对应的所有约束列表游标
declare mycursor cursor for select name from sysobjects left join sysconstraints on sysconstraints.constid=sysobjects.id where parent_obj=OBJECT_ID(\'\'+@TableName+\'\') and colid=(select colid from syscolumns where id=OBJECT_ID(\'\'+@TableName+\'\') and OBJECTPROPERTY(id, N\'IsUserTable\') = 1 and upper(name)=upper(@ColumnName))
--打开游标
open mycursor
--从游标里取出数据赋值到主键约束名称变量中
fetch next from mycursor into @ConstraintName
--如果游标执行成功
while (@@fetch_status=0)
begin
--删除当前找到的约束
--print \'当前删除语句\'+\'ALTER TABLE [\'+@TableName+\'] DROP CONSTRAINT [\'+@ConstraintName+\']\'
exec (\'ALTER TABLE [\'+@TableName+\'] DROP CONSTRAINT [\'+@ConstraintName+\']\')
print \'已成功删除数据表[\'+@TableName+\']字段[\'+@ColumnName+\']对应的约束[\'+@ConstraintName+\']\'
--用游标去取下一条记录
fetch next from mycursor into @ConstraintName
end
--关闭游标
close mycursor
--撤销游标
deallocate mycursor
参考技术A 删除语句的where条件中:这些数据所在的列名 like ‘dede_%’ 就可以了本回答被提问者采纳 参考技术B select 'drop table '||t.table_name' purge;' from user_tables t
where t.table_name like 'dede_';

把查询结果粘贴出来执行就行了。。
其他的情况只需要修改where条件即可。
参考技术C 删除语句的where条件中:这些数据所在的列名 like ‘dede_%’ 就可以了
delete from table_aa where 列名 like 'dede_%';

如何批量删除mysql某个字段的某个值?

如何批量删除mysql某个字段的某个值

比如现在有个mysql数据库叫test,里面有30个表段,这30个表段里有一半的表段含有一个叫acid的字段,我现在想批量删除这个acid字段里值为2的数据,该怎么来写这个查询?


求大神解答!

SELECT
concat(
'delete from ',
a.table_schema,
'.',
a.table_name,
' where ',
a.column_name,
'=2;'
)
FROM
information_schema. COLUMNS a
WHERE
a.column_name = 'acid'
AND EXISTS (
SELECT
1
FROM
information_schema. TABLES b
WHERE
a.table_name = b.table_name
AND b.table_type = 'BASE TABLE'
);
把执行结果放到sql工具里边执行就可以了
参考技术A 第一步:查询出所有用户表。
第二步:查询每一个表里是否有指定字段,有则更新,没有就略过。
update test.表名 acid="" where acid=2 这样写就可以了
这条语句的执行顺序是,先查询出acid等于2的记录,
然后更新他们的acid字段为空字符(或者null等其他参数)。

以上是关于如何批量删除数据库中同一字段开头的表?的主要内容,如果未能解决你的问题,请参考以下文章

急!如何批量删除数据库中以特定字符开头和结尾的字符串

如何批量删除mysql某个字段的某个值?

怎么使用SQL语句批量删除多个表的相同字段

如何批量删除数据库里某个表里的多条记录

MSSQL 中,怎么批量删除 _WA _sys 开头自动创建的索引

批量删除 mysql 数据表