数据库是一些SQL对象(“数据库对象”)的命名集合。通常情况下每个数据库对象(表、函数等)只属于一个数据库,个别系统表(如ux_database
)属于整个集群,可以在集群中的每个数据库里访问。更准确地说,数据库是模式的集合,而模式包含表、函数等等。因此完整的层次是:服务器→数据库→模式→表(或者其它类型对象,如函数)。
在与数据库服务器连接的时候,应该明确连接的数据库名称,不允许在一次连接里访问多个数据库(不过没有限制一个服务器可以建立的连接数量)。数据库在物理上是相互隔离的,对它们的访问控制是在连接层次进行的。如果一个UXDB服务器实例用于承载那些应该分隔并且相互之间并不知晓的用户和项目,建议把它们放在不同的数据库里。如果项目或者用户是相互关联的,并且可以相互使用对方的资源,应该把它们放在同一个数据库里,但可能在不同的模式中。模式只是一个纯粹的逻辑结构,谁能访问某个模式由权限系统控制。
数据库使用CREATE DATABASE
(见第?6.2?节)创建,并且用DROP DATABASE
命令删除(见第?6.3?节)。要确定现有数据库的集合,可以检查系统目录ux_database
,例如
SELECT datname FROM ux_database;
uxsql程序的\l
元命令和-l
命令行选项也可以用来列出已有的数据库。
SQL标准把数据库称作“目录”(catalog),不过实际上没有区别。