【发布时间】:2018-01-14 20:01:05
【问题描述】:
我们是否能够对数据库目录执行诸如 INSERT、UPDATE、DELETE 之类的 SQL 操作(理论问题多于实践)
【问题讨论】:
-
这不是我朋友提出模糊理论问题的地方。
-
大多数数据库上没有。这些是通过单独的操作处理的,例如
create table和alter table。 -
你应该试试看。
我们是否能够对数据库目录执行诸如 INSERT、UPDATE、DELETE 之类的 SQL 操作(理论问题多于实践)
【问题讨论】:
create table和alter table。
如果一个数据库支持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 操作。
【讨论】: