区分 table 和视图的命令

Command to distinguish a table from a view

是否有命令确定给定关系是 table 还是 view

我使用的试错法是:

SHOW CREATE VIEW table_name

如果它是 table,而不是 view,我的数据库软件(DBeaver 中的 Presto)会给我一个错误:

Relation table_name is a table, not a view

我认为此错误是来自内部 运行 的类似命令,以审查我的查询。如果它是 view,该命令当然有效。

以下将显示有关所有可用 table 的 table 信息,包括 viewtable

SELECT * FROM information_schema.tables

有关详细信息,请参阅 Information Schema

在SQL服务器中,您可以使用Sys.Objects中的列'Type'来区分Table或视图。如果列类型中的值是 'V' 那么它是一个视图,否则如果列类型中的值是 'U' 那么它是一个 table

要检查它是否是 table 使用下面的查询

SELECT DISTINCT NAME, O.TYPE FROM SYS.OBJECTS O WHERE O.NAME LIKE 'Prefix%' AND O.TYPE='U'

要检查它是否是一个视图,请使用下面的查询

SELECT DISTINCT NAME, O.TYPE FROM SYS.OBJECTS O WHERE O.NAME LIKE 'Prefix%' AND O.TYPE='V'