我正在使用MySQL数据库将SQL脚本导入phpMyAdmin。我需要检查脚本顶部是否存在数据库,如果不存在则返回。
我知道如何检查数据库是否存在:
SELECT EXISTS(SELECT * FROM information_schema.schemata WHERE schema_name = 'MyDatabase')
但是当这个值为零时我不知道如何返回。我试过这个:
IF NOT (SELECT EXISTS(SELECT * FROM information_schema.schemata WHERE schema_name = 'MyDatabase')) THEN
BEGIN
RETURN
END;
END IF;
这会引发错误:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF NOT (SELECT EXISTS(SELECT * FROM information_schema.schemata WHERE ' at line 1
我还需要检查该数据库中的表是否存在,如果不存在则返回。我再次知道如何检查表是否存在:
SELECT EXISTS(SELECT * FROM information_schema.tables WHERE table_schema = 'MyDatabase' AND table_name = 'MyTable')
但此时我不知道如何退出脚本。
我发现我可以在脚本的顶部放置一个USE
语句,如果该表不存在,将导致它抛出错误:
USE `MyDatabase`;
这种方法效果很好,但知道如何使用条件语句仍然很好。
答案 0 :(得分:0)
您可以将其与if语句一起使用。
SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'DBName'
喜欢:
IF SCHEMA_NAME = '' THEN
--do this--
ELSE
-do this--