PostgreSQL教程(十三):数据库管理详解_PostgreSQL

一、概述:

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

时间: 2024-09-30 18:44:25

PostgreSQL教程(十三):数据库管理详解_PostgreSQL的相关文章

AngularJS入门教程之控制器详解_AngularJS

AngularJS 控制器 AngularJS 控制器 控制 AngularJS 应用程序的数据.  AngularJS 控制器是常规的 JavaScript 对象. AngularJS 控制器 AngularJS 应用程序被控制器控制. ng-controller 指令定义了应用程序控制器. 控制器是 JavaScript 对象,由标准的 JavaScript 对象的构造函数 创建. AngularJS 实例 <!DOCTYPE html> <html> <head>

AngularJS入门教程之过滤器详解_AngularJS

在这一步你将学习到如何创建自己的显示过滤器. 请重置工作目录: git checkout -f step-9 现在转到一个手机详细信息页面.在上一步,手机详细页面显示"true"或者"false"来说明某个手机是否具有特定的特性.现在我们使用一个定制的过滤器来把那些文本串图形化:√作为"true":以及×作为"false".来让我们看看过滤器代码长什么样子. 步骤8和步骤9之间最重要的不同在下面列出.你可以在GitHub里看到

Kerberos安装教程及使用详解_Linux

Kerberos协议: Kerberos协议主要用于计算机网络的身份鉴别(Authentication), 其特点是用户只需输入一次身份验证信息就可以凭借此验证获得的票据(ticket-granting ticket)访问多个服务,即SSO(Single Sign On).由于在每个Client和Service之间建立了共享密钥,使得该协议具有相当的安全性. 2. 安装 Kerberos 2.1. 环境配置 安装kerberos前,要确保主机名可以被解析. 主机名 内网IP 角色 Vmw201

PostgreSQL分区表(partitioning)应用实例详解_PostgreSQL

前言 项目中有需求要垂直分表,即按照时间区间将数据拆分到n个表中,PostgreSQL提供了分区表的功能.分区表实际上是把逻辑上的一个大表分割成物理上的几小块,提供了很多好处,比如: 1.查询性能大幅提升 2.删除历史数据更快 3.可将不常用的历史数据使用表空间技术转移到低成本的存储介质上 那么什么时候该使用分区表呢?官方给出的指导意见是:当表的大小超过了数据库服务器的物理内存大小则应当使用分区表,接下来结合一个例子具体记录一下创建分区表的详细过程. 创建分区表 首先看一下需求,现在有一张日志表

运用Tomcat5和PostgreSQL配置开发JSP详解

js|sql|详解 至于安装方面的知识,这里不多说,要注意的两点就是: 1.安装Tomcat(jakarta-tomcat-5.0.28.exe) 2.安装PostgreSQL(postgresql-8.0-beta1-20040809.msi)(7.0和8.0版本都可以) 直接安装到c或d盘下就可,同时注意设置用户名和口令 比如:admin 123456,在以后访问数据库时会用到,另外PostgreSQL所在安装目录的磁盘的系统格式必须是NTFS的,否则装不下. 配置数据库的驱动:(Jdk14

Dreamweaver MX 2004 入门教程之界面详解

dreamweaver|教程|入门教程|详解 本站原创内容,转载请注明出处网页教学网. Dreamweaver MX 2004 具有全新的风格和启动画面,请去baidu或google搜索这个软件下载并安装,在此不做详细介绍.Dreamweaver MX 2004提供了面向设计人员的布局和面向手工编码人员需求的布局.首次启动Dreamweaver MX 2004时,会出现一个工作区设置对话框(如下图): 您可以从中选择一种适合您的工作区布局.如果您不熟悉编写代码,请您选择"设计者".如果

YII Framework教程之异常处理详解_php实例

本文讲述了YII Framework异常处理.分享给大家供大家参考,具体如下: 异常无处不在,作为程序员,活着就是为了创造这些异常,然后修复这些异常而存在的.YII框架封装了PHP的异常,让异常处理起来更简单. 使用 YII处理错误和异常的配置方法: 你可以在入口文件中定义YII_ENABLE_ERROR_HANDLER和YII_ENABLE_EXCEPTION_HANDLER为true. 引发异常的情况 1.触发onError或者onException事件 2.人为抛出异常.例如 throw

Git 教程之基本操作详解_相关技巧

Git 基本操作 Git 的工作就是创建和保存你项目的快照及与之后的快照进行对比.本章将对有关创建与提交你的项目快照的命令作介绍. 获取与创建项目命令 git init 用 git init 在目录中创建新的 Git 仓库. 你可以在任何时候.任何目录中这么做,完全是本地化的. 在目录中执行 git init,就可以创建一个 Git 仓库了.比如我们创建 runoob 项目: $ mkdir runoob $ cd runoob/ $ git init Initialized empty Git

Git 教程之标签详解_相关技巧

Git 标签 如果你达到一个重要的阶段,并希望永远记住那个特别的提交快照,你可以使用 git tag 给它打上标签. 比如说,我们想为我们的 w3cschoolcc 项目发布一个"1.0"版本. 我们可以用 git tag -a v1.0 命令给最新一次提交打上(HEAD)"v1.0"的标签. -a 选项意为"创建一个带注解的标签". 不用 -a 选项也可以执行的,但它不会记录这标签是啥时候打的,谁打的,也不会让你添加个标签的注解. 我推荐一直创