回答
DROP VIEW [IF EXISTS]
view_name [, view_name] ...
[RESTRICT | CASCADE]
DROP VIEW
移除一個或多個視圖。您必須擁有每個視圖的DROP
權限。如果任何在參數列表中命名的視圖不存在,MySQL將返回一個錯誤,指出其名稱不能刪除的不存在的視圖,但它也會刪除列表中存在的所有視圖。
IF EXISTS
子句可防止不存在的視圖發生錯誤。當給出該子句時,將爲每個不存在的視圖生成一個NOTE
。請參閱第12.7.5.41節「SHOW WARNINGS Syntax」。
RESTRICT
和CASCADE
,如果給出,將被解析並忽略。
試試這個未經測試的代碼
DECLARE VIEW_NAME VARCHAR(31);
DECLARE VIEW_NAMES CURSOR
FOR
SELECT table_name
FROM information_schema.views;
WHERE table_schema = 'DB_Name'
OPEN VIEW_NAMES;
REPEAT
FETCH VIEW_NAMES INTO VIEW_NAME;
DROP VIEW VIEW_NAME
UNTIL done END REPEAT;
CLOSE VIEW_NAMES;
END;
這將刪除所有在服務器上的意見,而不是在一個分貝:) – 2012-02-01 22:00:56
謝謝,iv更新腳本 – CloudyMarble 2012-02-02 05:26:36
下面是一個Ruby方法,將你想要做什麼:
# @param [Array] databases, e.g. ['db1', 'db2']
def drop_all_views(databases)
views = ActiveRecord::Base.connection.execute("SELECT CONCAT(TABLE_SCHEMA,'.',TABLE_NAME) FROM information_schema.TABLES WHERE TABLE_TYPE = 'VIEW' AND TABLE_SCHEMA IN('#{databases.join("', '")}');")
views = views.to_a.flatten
# Then drop all of those views from their respective databases
views.each do |v|
ActiveRecord::Base.connection.execute("DROP VIEW IF EXISTS #{v};")
end
end
我一直在使用這一個:
/* DROP ALL VIEWS */
SET @views = NULL;
SELECT GROUP_CONCAT(table_schema, '.', table_name) INTO @views
FROM information_schema.views
WHERE table_schema = @database_name; -- Your DB name here
SET @views = IFNULL(CONCAT('DROP VIEW ', @views), 'SELECT "No Views"');
PREPARE stmt FROM @views;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
最好的答案在這裏,謝謝。 – 2014-05-21 22:50:18
不錯的腳本,thx。並且因爲GROUP_CONCAT,像SET GLOBAL group_concat_max_len = 1000000;可能是有用的。 – 2016-06-15 19:49:59
我不得不'設置@@ group_concat_max_len = 100000;'這個工作!如果您有100個視圖,並且架構名稱和視圖名稱長度超過10個字符,則您可以輕鬆傳遞默認的1024個限制。 – Fx32 2017-11-09 12:35:25
- 1. 如何從MYSQL數據庫中刪除所有視圖?
- 2. 如何使用存儲過程刪除mysql數據庫中的所有視圖?
- 3. 刪除了所有MySQL數據庫,包括mysql,如何恢復?
- 4. 使用單個查詢從數據庫中刪除所有行?
- 5. 使用mysql命令刪除多個數據庫
- 6. MySQL刪除沒有查詢的數據?
- 7. 使用PHP regex去除/刪除MySQL查詢中的所有值?
- 8. 如何使用命令行從MAMP中刪除數據庫
- 9. 如何查詢數組中的所有值的MYSQL數據庫
- 10. MySQL查詢,刪除所有空格
- 11. 如何使用〜/ .my.cnf從腳本中刪除mysql數據庫?
- 12. 從數據庫中刪除所有信息(MySQL)
- 13. 從mysql數據庫的所有表中刪除一條記錄
- 14. 如何從mysql數據庫中刪除不在數組中的所有元素?
- 15. 如何使用VB.NET從MySQL數據庫查詢數據
- 16. 如何使JavaScript函數從MySQL數據庫中刪除錶行
- 17. MySQL - 刪除從子查詢
- 18. 如何從mysql命令行恢復mysql xml數據庫文件?
- 19. MySQL的程序來刪除數據庫中的所有數據
- 20. 從MySQL數據庫中刪除一行
- 21. 從MySQL數據庫中刪除權限
- 22. 從MySQL數據庫中刪除ID
- 23. MySQL從數據庫中刪除行
- 24. 從MySQL數據庫中刪除記錄
- 25. 從mysql數據庫中刪除行
- 26. 自動從Mysql數據庫中刪除
- 27. Sqlite3數據庫軌道如何從命令行中刪除所有記錄
- 28. 如何使用AJAX刪除HTML行並從MySQL數據庫中刪除條目?
- 29. 如何使用子查詢中刪除/更新查詢在MySQL
- 30. 使用Python從MySQL數據庫中刪除舊數據
我認爲他是詢問如何以自動化的方式全部放棄。不是如何手動查找和寫入任意數量視圖的drop語句。 – Cerin 2013-05-24 15:10:01