区分 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 信息,包括 view
和 table
:
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'
是否有命令确定给定关系是 table
还是 view
?
我使用的试错法是:
SHOW CREATE VIEW table_name
如果它是 table
,而不是 view
,我的数据库软件(DBeaver 中的 Presto)会给我一个错误:
Relation
table_name
is atable
, not aview
我认为此错误是来自内部 运行 的类似命令,以审查我的查询。如果它是 view
,该命令当然有效。
以下将显示有关所有可用 table 的 table 信息,包括 view
和 table
:
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'