出处:http://www.cnblogs.com/stephen-liu74/archive/2012/06/08/2315679.html
一、概述:
数据库可以被看成是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元命令列出现有的表空间。
相关推荐
Navicat for PostgreSQL是一套专为PostgreSQL设计的强大数据库管理及开发工具。它可以用于任何版本 7.5 或以上的 PostgreSQL 数据库服务器,并支持大部份 PostgreSQL最新版本的功能,包括触发器、函数、管理用户等。...
PostgreSQL学习手册(数据库管理) PostgreSQL学习手册(数据库维护) PostgreSQL学习手册(系统表) PostgreSQL学习手册(系统视图) PostgreSQL学习手册(客户端命令) PostgreSQL学习手册(SQL语言函数) PostgreSQL学习手册...
PostgreSQL 是一个自由的对象-关系数据库服务器(数据库管理系统),它在灵活的 BSD-风格许可证下发行。这个手册,可以从PostgreSQL 入门到进阶。
PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (数据库管理 数据库管理 数据库管理 ) 54 一、概述: 一、概述: .54 PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (数据库维护 ...
PostGIS 简介PostgreSQL 是一种对象 - 关系型数据库管理系统,也是目前功能最强大、特性最丰富和最复杂的自由软件数据库系统。目前是最重要的开源数据库产品开发项目之一, 有着非常广泛的用户 。 PostGIS 在对象关系...
详细讲述了PostgreSQL 15版本的事务和锁、索引、高级SQL、日志和系统统计信息、优化查询以获得良好性能、编写存储过程、安全、备份与恢复、备份与复制、决定有用的扩展、疑难解答、数据库迁移……适合中级以上编程、...
在管理员身份验证系统上工作使用机器学习训练系统,以便能够预测未来的销售量和所需的适当库存-使用Jupyter Notebook和熊猫库使用的技术的Python 3 引导程序4 烧瓶1.1.1 Flask-SQLAlchemy 2.4.1 Jinja2 2.11.1 ...
数据库系统(DBS) :数据库、数据库管理系统、所需软硬件及相关人员的集合统称为数据库系统。 数据库服务器 :运行数据库管理系统并实现网络分布式存储数据的主机。 运行在Linux上的关系型数据库管理系统主要产品: ...
PostgreSQL简介:MS Sqlserver、Sybase、Informix等多种数据库的起源均可追溯至数据库大师Michael Stonebreaker的Ingres项目。Stonbreaker大师在离开Informix CEO的位置后,启动了Ingres的后续项目,这就是...
01.PostgreSQL9 从零开始学数据库管理开发视频教程 18课 02.炼数深度学习PostgreSQL 15课 03.PostgreSQL 9.3 DBA5天培训 24课 04.PostgreSQL 9.3 优化培训视频 19课 05.DBA团队每天16点技术分享 7课
应用概述: 该项目存储库包括一个基于Web的内容(文章)管理系统/应用程序,与具有用户注册的数据科学学习和职业旅程有关,使用Python的登录功能,Flask Web框架,HTML,PostgreSQL数据库和Heroku Cloud Server。...
postgresql数据库管理工具,也正在学习中!
PostgreSQL (也叫 Postgres)是一个自由的对象-关系数据库服务器(数据库管理系统),它在灵活的 BSD-风格许可证下发行。因为之前用默认的配置创建pgsql数据库,导致root的占用率达到97%: 所以决定重新创建一次数据库...
PostgreSQL是世界上增长最快的开源对象关系数据库管理系统(DBMS)之一。 除了易于使用之外,它还具有可扩展性和高效性。 在本书中,您将探索PostgreSQL 12和PostgreSQL 13,并学习如何使用它来构建数据库解决方案...
包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。 包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python...
ISIMS(小学管理信息系统)是用于管理学生成绩、学生出勤、教学期刊、成绩提升和学习监控的软件。 该软件是开源的,使用 YII 框架构建。 特征 学习监控管理 动态网站设置 价值管理和报告 教学期刊管理 晋升管理 ...
“Navicat”是一套可创建多个连接的数据库管理工具,用以方便管理 MySQL、Oracle、PostgreSQL、SQLite、SQL Server、MariaDB 和/或 MongoDB 等不同类型的数据库,并支持管理某些云数据库,例如阿里云、腾讯云。...
Navicat Premium是一套全系列的数据库管理工具,结合了其它Navicat成员的功能,支持单一程序同时连接到MySQL、MariaDB、SQL Server、SQLite、Oracle和PostgreSQL数据库。Navicat Premium可满足现今数据库管理系统的...
“Navicat”是一套可创建多个连接的数据库管理工具,用以方便管理 MySQL、Oracle、PostgreSQL、SQLite、SQL Server、MariaDB、MongoDB 和/或 Redis 等不同类型的数据库,并支持管理某些云数据库,例如阿里云、腾讯...