我们是否能够执行INSERT,UPDATE,DELETE到数据库目录等SQL操作(理论问题比实践更多)
答案 0 :(得分:1)
如果数据库支持INFORMATION_SCHEMA
并提供用于更改数据库目录的工具,那么可以,您可以正常使用SQL操作。
例如,在PostgreSQL documentation中,您可以阅读:
系统目录是关系数据库管理系统存储架构元数据的地方,例如有关表和列的信息以及内部簿记信息。 PostgreSQL的系统目录是常规表。您可以删除并重新创建表,添加列,插入和更新值,以及以这种方式严重破坏系统。通常,不应手动更改系统目录,总有SQL命令可以执行此操作。 (例如,CREATE DATABASE在pg_database目录中插入一行,并实际上在磁盘上创建数据库。)
因此,您可以更改目录以间接创建新数据库。但是,在PostgreSQL中,您可以使用SQL命令(例如DROP,INSERT,UPDATE等)直接更改目录。
某些RDBMS不能提供这种可能性,例如Oracle数据库,IBM DB2,SQLite或Sybase ASE。某些RDBMS提供INFORMATION_SCHEMA
,但它是只读的,因此您不能做任何疯狂的事情,例如MySQL。 Its documentation读为:
尽管您可以使用USE语句选择INFORMATION_SCHEMA作为默认数据库,但是您只能读取表的内容,而不能对它们执行INSERT,UPDATE或DELETE操作。