为什么 SQL 没有标准化的元数据查询?

问题描述 投票:0回答:1

我试图找到一种方法来查询 SQL 数据库表中的列。这似乎是一个合理的功能,但我发现它很大程度上依赖于实现。例如:

SQLite:

PRAGMA table_info(<table name>)

SQL服务器:

SELECT name FROM sys.columns WHERE object_id=OBJECT_ID('table name')

MySQL:

SHOW COLUMNS FROM database_Name.table_name

然后我发现有一个 ANSI 标准查询可以执行此操作:

select column_name from INFORMATION_SCHEMA.COLUMNS where table_name = 'table name'

但并非每个 RDBMS(包括 SQLite)都实现

INFORMATION_SCHEMA
,因此它似乎不是一个可靠的选择。

为什么没有一个我可以保证的强制标准 SQL 语句能够以与我可以保证

SELECT * FROM <table name>
适用于任何 SQL 数据库的相同方式返回元数据,例如表中的列?

sql standards
1个回答
0
投票

你问了一个好问题,但

standard
就是这样。如果公司实施了它,那么你就可以一致地依赖它,如果他们没有实施,那么你就不能。

类似于

nbk
的评论。解决方法是您可以创建一个包装器来区分不同数据库的不同命令。

© www.soinside.com 2019 - 2024. All rights reserved.