是否有一种很简单的方法可以从MySQL数据库中删除所有表,忽略可能存在的任何外键约束?
我正在为Oracle数据库编写一些迁移脚本,并且希望Oracle有类似MySQL的IF EXISTS构造.
具体来说,每当我想在MySQL中删除表时,我都会这样做
DROP TABLE IF EXISTS `table_name`;
Run Code Online (Sandbox Code Playgroud)
这样,如果表不存在,DROP则不会产生错误,脚本可以继续.
Oracle是否有类似的机制?我意识到我可以使用以下查询来检查表是否存在
SELECT * FROM dba_tables where table_name = 'table_name';
Run Code Online (Sandbox Code Playgroud)
但是把它与a绑在一起的语法DROP正在逃避我.
如何使用命令提示符删除Windows MySQL中的所有表?我想这样做的原因是我们的用户可以访问数据库drop,但是没有权限重新创建数据库本身,因此我们必须手动删除表.有没有办法一次性删除所有表?请记住,大多数表都与外键链接,因此必须按特定顺序删除它们.
如何在oracle中删除所有用户表?
我有约束的问题.当我禁用所有它仍然是不可能的.
Create Table: CREATE TABLE `fuinfo` (
`fid` int(10) unsigned NOT NULL,
`name` varchar(40) NOT NULL,
`email` varchar(128) NOT NULL,
UNIQUE KEY `email` (`email`),
UNIQUE KEY `fid` (`fid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
Run Code Online (Sandbox Code Playgroud)
我想放下独特的钥匙email,怎么样?
我试图删除数据库中的所有表,除了一个,我最终得到以下错误:
无法删除或更新父行:外键约束失败
当然,我可以试错,看看那些关键约束是什么,并最终删除所有表但我想知道是否有一种快速方法强制删除所有表(因为我将能够重新插入那些我不想删除).
谷歌针对某些建议使用以下方法的网站:
mysql> SET foreign_key_checks = 0;
mysql> drop table ...
mysql> SET foreign_key_checks = 1;
Run Code Online (Sandbox Code Playgroud)
简短的回答是它没有真正做到这一点,因为我最终收到了同样的错误,而我能够删除更多的表.我已经在Stack Overflow上看到了将所有外键链接到某个表的方法,但这样做太费时了,除非我编写所有脚本(在没有其他选项的情况下这是可行的)
数据库是4.1所以我无法使用 DROP DATABASE
想法?
如何删除所有具有前缀的表myprefix_?
注意:需要在phpMyAdmin中执行它
它没有在文档中明确提到(http://dev.mysql.com/doc/refman/6.0/en/drop-table.html).我问,因为我刚刚在Rails项目中看到了一个奇怪的数据库迁移,开发人员在删除表之前删除了所有索引,这似乎没必要.
是否可以一次性从表中删除所有NOT NULL约束?
我有一个包含很多NOT NULL约束的大表,我正在寻找比单独删除它们更快的解决方案.
我将所有功能都保存在一个文本文件中'CREATE OR REPLACE FUNCTION somefunction'.因此,如果我添加或更改某些功能,我只需将文件提供给psql.
现在,如果我向现有函数添加或删除参数,它会创建一个具有相同名称的重载,并按照确切的顺序删除所有参数类型中的原始I类型,这是一种单调乏味的操作.
是否有某种通配符,我可以使用DROP具有给定名称的所有函数,所以我可以添加DROP FUNCTION行到我的文件的顶部?
sql-drop ×10
mysql ×6
constraints ×2
foreign-keys ×2
indexing ×2
oracle ×2
postgresql ×2
sql ×2
command-line ×1
database ×1
dynamic-sql ×1
innodb ×1
notnull ×1
phpmyadmin ×1
plpgsql ×1