MySql模糊刪除表或表數據

模糊查詢表名 拼接成sql 得到drop語句手動執行即可

SELECT
	CONCAT( 'drop table ', table_name, ';' )
FROM
	# 數據爲所有數據庫的表 show table不能作爲表數據被查詢
	information_schema.TABLES
WHERE
	table_name LIKE 'act_%' AND table_schema='當前數據庫名稱';

如下並未成功運行 DROP一個表可以通過 多個不行 好像DROP不能同時執行多個

好像是mysql的限制 如下方式SELECT 語句可正常操作 MySQL生成數據庫設計表格

把語句通過GROUP_CONCAT合成一個結果 使用EXECUTE執行

SELECT @sql :=
# 關閉外鍵約束檢查
CONCAT('SET foreign_key_checks = 0;'
# 如果group_concat查詢結果不完整 需要修改mysql配置文件中的group_concat_max_len值
	,GROUP_CONCAT(
		CONCAT( 'DROP TABLE IF EXISTS ', table_name) SEPARATOR ';'
	)
# 開啓外鍵約束檢查
,';SET foreign_key_checks = 1;') FROM
	information_schema.TABLES
WHERE
	table_name LIKE 'act_%' AND table_schema='當前數據庫名稱';
# 預編譯
PREPARE _sql FROM @sql;
EXECUTE _sql;

表數據刪除操作把如上腳本換成DELETE FROM語句即可

group_concat參考 https://dev.mysql.com/doc/refman/8.0/en/group-by-functions.html#function_group-concat

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章