一、概述:
数据库可以被看成是SQL对象(数据库对象)的命名集合,通常而言,每个数据库对象(表、函数等)只属于一个数据库。不过对于部分系统表而言,如pg_database,是属于整个集群的。更准确地说,数据库是模式的集合,而模式包含表、函数等SQL对象。因此完整的对象层次应该是这样的:服务器、数据库、模式、表或其他类型的对象。
在与数据库服务器建立连接时,该连接只能与一个数据库形成关联,不允许在一个会话中进行多个数据库的访问。如以postgres用户登录,该用户可以访问的缺省数据库为postgres,在登录后如果执行下面的SQL语句将会收到PostgreSQL给出的相关错误信息。
复制代码 代码如下:
postgres=# SELECT * FROM MyTest."MyUser".testtables;
ERROR: cross-database references are not implemented: "otherdb.otheruser.sometable"
LINE 1: select * from otherdb.otheruser.sometable
在PostgreSQL中,数据库在物理上是相互隔离的,对它们的访问控制也是在会话层次上进行的。然而模式只是逻辑上的对象管理结构,是否能访问某个模式的对象是由权限系统来控制的。
执行下面的基于系统表的查询语句可以列出现有的数据库集合。
复制代码 代码如下:
SELECT datname FROM pg_database;
注:psql应用程序的\l元命令和-l命令行选项也可以用来列出当前服务器中已有的数据库。
二、创建数据库:
在PostgreSQL服务器上执行下面的SQL语句可以创建数据库。
复制代码 代码如下:
CREATE DATABASE db_name;
在数据库成功创建之后,当前登录角色将自动成为此新数据库的所有者。在删除该数据库时,也需要该用户的特权。如果你想让当前创建的数据库的所有者为其它角色,可以执行下面的SQL语句。
复制代码 代码如下:
CREATE DATABASE db_name OWNER role_name;
三、修改数据库配置:
PostgreSQL服务器提供了大量的运行时配置变量,我们可以根据自己的实际情况为某一数据库的某一配置变量指定特殊值,通过执行下面的SQL命令可以使该数据库的某一配置被设置为指定值,而不再使用缺省值。
复制代码 代码如下:
ALTER DATABASE db_name SET varname TO new_value;
这样在之后基于该数据库的会话中,被修改的配置值已经生效。如果要撤消这样的设置并恢复为原有的缺省值,可以执行下面的SQL命令。
复制代码 代码如下:
ALTER DATABASE dbname RESET varname;
四、删除数据库:
只有数据库的所有者和超级用户可以删除数据库。删除数据库将会删除数据库中包括的所有对象,该操作是不可恢复的。见如下删除SQL命令:
复制代码 代码如下:
DROP DATABASE db_name;
五、表空间:
在PostgreSQL中,表空间表示一组文件存放的目录位置。在创建之后,就可以在该表空间上创建数据库对象。通过使用表空间,管理员可以控制一个PostgreSQL服务器的磁盘布局。这样管理员就可以根据数据库对象的数据量和数据使用频度等参照来规划这些对象的存储位置,以便减少IO等待,从而优化系统的整体运行性能。比如,将一个使用频繁的索引放在非常可靠、高效的磁盘设备上,如固态硬盘。而将很少使用的数据库对象存放在相对较慢的磁盘系统上。下面的SQL命令用于创建表空间。
复制代码 代码如下:
CREATE TABLESPACE fastspace LOCATION '/mnt/sda1/postgresql/data';
需要说明的是,表空间指定的位置必须是一个现有的空目录,且属于PostgreSQL系统用户,如postgres。在成功创建之后,所有在该表空间上创建的对象都将被存放在这个目录下的文件里。
在PostgreSQL中只有超级用户可以创建表空间,但是在成功创建之后,就可以允许普通数据库用户在其上创建数据库对象了。要完成此操作,必须在表空间上给这些用户授予CREATE权限。表、索引和整个数据库都可以放在特定的表空间里。见如下SQL命令:
复制代码 代码如下:
CREATE TABLE foo(i int) TABLESPACE space1;
此外,我们还可以通过修改default_tablespace配置变量,以使指定的表空间成为缺省表空间,这样在创建任何数据库对象时,如果没有显示指定表空间,那么该对象将被创建在缺省表空间中,如:
复制代码 代码如下:
SET default_tablespace = space1;
CREATE TABLE foo(i int);
与数据库相关联的表空间用于存储该数据库的系统表,以及任何使用该数据库的服务器进程创建的临时文件。
要删除一个空的表空间,可以直接使用DROP TABLESPACE命令,然而要删除一个包含数据库对象的表空间,则需要先将该表空间上的所有对象全部删除后,才可以再在删除该表空间。
要检索当前系统中有哪些表空间,可以执行以下查询,其中pg_tablespace为PostgreSQL中的系统表。
复制代码 代码如下:
SELECT spcname FROM pg_tablespace;
我们还可以通过psql程序的\db元命令列出现有的表空间。
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
- 雨林唱片《赏》新曲+精选集SACD版[ISO][2.3G]
- 罗大佑与OK男女合唱团.1995-再会吧!素兰【音乐工厂】【WAV+CUE】
- 草蜢.1993-宝贝对不起(国)【宝丽金】【WAV+CUE】
- 杨培安.2009-抒·情(EP)【擎天娱乐】【WAV+CUE】
- 周慧敏《EndlessDream》[WAV+CUE]
- 彭芳《纯色角3》2007[WAV+CUE]
- 江志丰2008-今生为你[豪记][WAV+CUE]
- 罗大佑1994《恋曲2000》音乐工厂[WAV+CUE][1G]
- 群星《一首歌一个故事》赵英俊某些作品重唱企划[FLAC分轨][1G]
- 群星《网易云英文歌曲播放量TOP100》[MP3][1G]
- 方大同.2024-梦想家TheDreamer【赋音乐】【FLAC分轨】
- 李慧珍.2007-爱死了【华谊兄弟】【WAV+CUE】
- 王大文.2019-国际太空站【环球】【FLAC分轨】
- 群星《2022超好听的十倍音质网络歌曲(163)》U盘音乐[WAV分轨][1.1G]
- 童丽《啼笑姻缘》头版限量编号24K金碟[低速原抓WAV+CUE][1.1G]