PostgreSQL学习手册(数据库管理)

标签: postgresql 学习 数据库 | 发表时间:2012-05-21 10:12 | 作者:Stephen_Liu
出处:http://www.cnblogs.com/

一、概述:

    数据库可以被看成是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元命令列出现有的表空间。

本文链接

相关 [postgresql 学习 数据库] 推荐:

PostgreSQL学习手册(数据库管理)

- - 博客园_首页
    数据库可以被看成是SQL对象(数据库对象)的命名集合,通常而言,每个数据库对象(表、函数等)只属于一个数据库. 不过对于部分系统表而言,如pg_database,是属于整个集群的. 更准确地说,数据库是模式的集合,而模式包含表、函数等SQL对象. 因此完整的对象层次应该是这样的:服务器、数据库、模式、表或其他类型的对象.

PostgreSQL 数据库维护

- - BlogJava-qileilove
  在PostgreSQL中,使用delete和update语句删除或更新的数据行并没有被实际删除,而只是在旧版本数据行的物理地址上将该行的状态置为已删除或已过期. 因此当数据表中的数据变化极为频繁时,那么在一段时间之后该表所占用的空间将会变得很大,然而数据量却可能变化不大. 要解决该问题,需要定期对数据变化频繁的数据表执行VACUUM操作.

PostgreSQL数据库完美备份恢复

- - Linux - 操作系统 - ITeye博客
PostgreSQL自带一个客户端pgAdmin,里面有个备份,恢复选项,也能对数据库进行备份 恢复(还原),但最近发现数据库慢慢庞大的时候,经常出错,备份的文件过程中出错的几率那是相当大,手动调节灰常有限. 所以一直寻找完美的备份恢复方案. 梦里寻他千百度,伊人却在灯火阑珊处...其实PostgreSQL内置不少的工具,寻找的备份恢复方案就在其中:pg_dump,psql.

CitusDB发布提高PostgreSQL数据库性能的开源工具

- - TechCrunch 中国
数据库分析初创公司CitusDB今天发布CSTORE,一款针对PostgreSQL的纵列储存插件,试图抢占甲骨文的奶酪. 这款开源工具是该公司面向PostgreSQL的第一款工具,从今天开始就可以免费下载. “在批量加载数据的分析工作中,使用纵列储存的优势非常明显,”CitusDB在其 官方博客中这么写道,暗示用户使用这款工具可以达到更好的数据库性能.

PostgreSQL数据库、表空间、角色及用户

- - 数据库 - ITeye博客
转自:http://blog.chinaunix.net/uid-354915-id-3499975.html. 1、通过pgAdmin创建数据库TestDb1:. 打开数据库TestDb1看到建库脚本:. 在目录——PostgreSQL(pg_catalog)——数据表——pg_database中可以查看多了一个数据库TestDb1:.

Pivotal开源基于PostgreSQL的数据库Greenplum

- - 博客园_新闻
近日,Pivotal 宣布开源大规模并行处理(MPP)数据库 Greenplum,其架构是针对大型分析型数据仓库和商业智能工作负载专门设计的. 借助 MPP 这种高性能的系统架构,Greenplum 可以将 TB 级的数据仓库负载分解,并使用所有的系统资源并行处理单个查询. Greenplum 数据库基于 PostgreSQL 开源技术.

基于PostgreSQL的开源分布式数据库:Greenplum

- - 标点符
Pivotal宣布开源大规模并行处理(MPP)数据库Greenplum,其架构是针对大型分析型数据仓库和商业智能工作负载专门设计的. 借助MPP这种高性能的系统架构,Greenplum可以将TB级的数据仓库负载分解,并使用所有的系统资源并行处理单个查询. Greenplum数据库基于PostgreSQL开源技术.

PostgreSQL学习手册(性能提升技巧)

- - 博客园_首页
一、使用EXPLAIN:. PostgreSQL为每个查询都生成一个查询规划,因为选择正确的查询路径对性能的影响是极为关键的. PostgreSQL本身已经包含了一个规划器用于寻找最优规划,我们可以通过使用EXPLAIN命令来查看规划器为每个查询生成的查询规划. PostgreSQL中生成的查询规划是由1到n个规划节点构成的规划树,其中最底层的节点为表扫描节点,用于从数据表中返回检索出的数据行.

PostgreSQL学习手册(函数和操作符<一>)

- - 博客园_首页
常用的逻辑操作符有: AND、 OR和 NOT. 其语义与其它编程语言中的逻辑操作符完全相同. 下面是PostgreSQL中提供的比较操作符列表:. 比较操作符可以用于所有可以比较的数据类型. 所有比较操作符都是双目操作符,且返回boolean类型. 除了比较操作符以外,我们还可以使用BETWEEN语句,如:.

PostgreSQL学习手册(常用数据类型)

- - 开源软件 - ITeye博客
    下面是PostgreSQL所支持的数值类型的列表和简单说明:. -32768 到 +32767. -2147483648 到 +2147483647. -9223372036854775808 到 9223372036854775807. 1 到 +2147483647. 1 到 9223372036854775807.