在不使用“从...中选择”的情况下检查表是否存在


176

有没有一种方法可以检查表是否存在而无需从表中选择和检查值?

也就是说,我知道我可以SELECT testcol FROM testtable检查返回的字段数,但是似乎必须有一种更直接/更优雅的方法。



@SaurabhChopra用于SQL Server,这是在询问MySql。
亚历杭德罗

Answers:


323

如果要正确,请使用INFORMATION_SCHEMA

SELECT * 
FROM information_schema.tables
WHERE table_schema = 'yourdb' 
    AND table_name = 'testtable'
LIMIT 1;

或者,您可以使用 SHOW TABLES

SHOW TABLES LIKE 'yourtable';

如果结果集中有一行,则表存在。


3
是的,这很好用,很优雅,但是仍然使用SELECT...FROM语法...我在寻找类似的东西EXISTS testtable
Ben

9
马克和我本人所说的做到这一点是正确的方法。没有“存在”类型语句MySql。MySql中的“ Exists”是一个子句,需要诸如SELECT,UPDATE或DELETE之类的操作。
doogle 2012年

@Steve第三个选项不可移植。
ta.speot。是2012年

1
@SergioTulentsev无论使用哪种标签,我都喜欢使用便携式方式而不是专有方式。
ta.speot。是2012年

1
@Filype并不是一个真正的问题,因为他只是检查查询是否成功。在表没有行的情况下,查询仍将成功,只是结果集为空。
Bill Dami 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.