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

转载自Stephen Liu,仅做学习收藏用途。

PostgreSQL学习手册(十一) 数据库管理相关推荐

  1. PostgreSQL学习手册

    PostgreSQL学习手册(数据表) http://www.cnblogs.com/stephen-liu74/archive/2011/12/16/2290803.html 一.表的定义 二.系统 ...

  2. PostgreSQL学习手册(五) 函数和操作符

    PostgreSQL学习手册(五) 函数和操作符 一.逻辑操作符:     常用的逻辑操作符有:AND.OR和NOT.其语义与其它编程语言中的逻辑操作符完全相同. 二.比较操作符:     下面是Po ...

  3. PostgreSQL学习手册(角色和权限) 转

    原文 PostgreSQL学习手册(角色和权限)   PostgreSQL是通过角色来管理数据库访问权限的,我们可以将一个角色看成是一个数据库用户,或者一组数据库用户.角色可以拥有数据库对象,如表.索 ...

  4. PostgreSQL学习手册(数据库维护) 转

    原文: PostgreSQL学习手册(数据库维护) 一.恢复磁盘空间: 在PostgreSQL中,使用delete和update语句删除或更新的数据行并没有被实际删除,而只是在旧版本数据行的物理地址上 ...

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

    2019独角兽企业重金招聘Python工程师标准>>> 一.数值类型: 下面是PostgreSQL所支持的数值类型的列表和简单说明: 名字 存储空间 描述 范围 smallint 2 ...

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

    一.数值类型:     下面是PostgreSQL所支持的数值类型的列表和简单说明: 名字 存储空间 描述 范围 smallint 2 字节 小范围整数 -32768 到 +32767 integer ...

  7. PostgreSQL学习手册(七) 事物隔离

    在SQL的标准中事物隔离级别分为以下四种:     1. 读未提交(Read uncommitted)     2. 读已提交(Read committed)     3. 可重复读(Repeatab ...

  8. PostgreSQL学习手册(客户端命令Ⅱ)

    为什么80%的码农都做不了架构师?>>>    七.pg_dump: pg_dump是一个用于备份PostgreSQL数据库的工具.它甚至可以在数据库正在并发使用时进行完整一致的备份 ...

  9. PostgreSQL学习手册(系统表)

    一.pg_class: 该系统表记录了数据表.索引(仍然需要参阅pg_index).序列.视图.复合类型和一些特殊关系类型的元数据.注意:不是所有字段对所有对象类型都有意义. 名字 类型 引用 描述 ...

最新文章

  1. Touch 方法amp;属性 映射工具
  2. 变了味的微信你还能用多久?
  3. python什么时候进入中国-Python什么时候开始流行的?还能流行多久?
  4. java string 后几位_java中String占几个位元组
  5. 学长毕业日记 :本科毕业论文写成博士论文的神操作20170412
  6. 发红包android
  7. 1704:baoge的洗漱难题[黄]
  8. matlab中GUI的属性检查器中的XLimMode是什么_如何在Matlab中使用GUI做一个简易音乐播放器? ---- (二)GUIDE...
  9. 上机环境是什么意思_380元入手RX580满血显卡,跑分17万,还要什么自行车
  10. 在nlog(n)时间里对单链表排序
  11. [DFS|剪枝] leetcode 22 括号生成
  12. Yii2实现自定义独立验证器的方法
  13. opencv小球与颜色识别
  14. 计算机设计大赛作品开发文档
  15. s5p4418安卓系统适配fpc8563芯片遇到的问题及解决
  16. C语言函数的声明、定义、调用
  17. python内点法_最优化问题(三) 之 外点法(罚函数法)
  18. Mariadb 安装FederatedX引擎
  19. 微信扫码支付模式一 : 获取商户订单信息超时或者商户返回的httpcode非200
  20. 小红书去水印源码算法

热门文章

  1. c语言1l是多少,1千克等于多少升(一千克等于一升啊)
  2. 浙江非税设定服务器信息,非税操作手册.doc
  3. php __call实现多继承,php如何使用_call实现多继承(代码示例)
  4. linux pm2 权限,pm2 部署 node的三种方法示例
  5. maya中的桥接命令
  6. lesson6 复数及复指数
  7. pooleddb mysql_使用dbutils的PooledDB连接池,操作数据库
  8. python中定义字典数据类型使用什么符号_python数据类型之字典类型-dict
  9. python安装好后打不开_解决安装pyqt5之后无法打开spyder的问题
  10. 知识图谱组队学习Task05——图数据库查询