【问题标题】:SQL operations to Database catalog对数据库目录的 SQL 操作
【发布时间】:2018-01-14 20:01:05
【问题描述】:

我们是否能够对数据库目录执行诸如 INSERT、UPDATE、DELETE 之类的 SQL 操作(理论问题多于实践)

【问题讨论】:

  • 这不是我朋友提出模糊理论问题的地方。
  • 大多数数据库上没有。这些是通过单独的操作处理的,例如create tablealter table
  • 你应该试试看。

标签: sql database catalog


【解决方案1】:

如果一个数据库支持INFORMATION_SCHEMA,并且提供了修改数据库目录的工具,那么是的,你可以正常使用SQL操作。

例如,在PostgreSQL documentation 中您可以阅读:

系统目录是关系数据库管理系统存储架构元数据的地方,例如有关表和列的信息以及内部簿记信息。 PostgreSQL 的系统目录是常规表。您可以删除和重新创建表、添加列、插入和更新值,并以这种方式严重破坏您的系统。通常,不应手动更改系统目录,总是有 SQL 命令来做到这一点。 (例如,CREATE DATABASE 在 pg_database 目录中插入一行——实际上是在磁盘上创建数据库。)

因此,您更改目录间接创建了一个新数据库。尽管如此,使用 PostgreSQL,您可以使用 DROP、INSERT、UPDATE 等 SQL 命令直接更改目录。

某些 RDBMS 不提供这种可能性,例如 Oracle Database、IBM DB2、SQLite 或 Sybase ASE。一些 RDBMS 提供INFORMATION_SCHEMA,但它是只读的,所以你不能做任何疯狂的事情,例如 MySQL。 Its documentation 读:

虽然您可以使用 USE 语句选择 INFORMATION_SCHEMA 作为默认数据库,但您只能读取表的内容,不能对其执行 INSERT、UPDATE 或 DELETE 操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-28
    • 2016-05-08
    • 1970-01-01
    • 2016-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多