PostgreSQL 数据库操作

创建数据库

CREATE DATABASE name
    [ [ WITH ]
           [ OWNER [=] user_name ]
           [ TEMPLATE [=] template ]
           [ ENCODING [=] encoding ]
           [ LC_COLLATE [=] lc_collate ]
           [ LC_CTYPE [=] lc_ctype ]
           [ TABLESPACE [=] tablespace_name ]
           [ CONNECTION LIMIT [=] connlimit ] ]

参数

  • name

要创建的数据库名字。最好用双引号包起来,以区分大小写。

  • user_name

数据库用户的名字,他将是新数据库的所有者,或者是使用DEFAULT选项来指定当前缺省用户(也就是执行命令的用户)。 要创建一个其他角色所有的数据库,你必须是那个角色的直接或间接的成员,或者是超级用户。

  • template

模板名,即从哪个模板创建新数据库,或者使用DEFAULT选项来指定缺省模板(template1)。

  • encoding

创建新数据库使用的字符编码。 可以使用文本名字(例如‘SQL_ASCII‘)、整数编号或是DEFAULT选项来指定(模版数据库的编码)。

  • lc_collate

用于新数据库的排序规则(LC_COLLATE)。 这影响到应用对字符串的排序顺序,例如:在有ORDER BY的查询中,以及用于文本列的索引的顺序。 在默认情况下,使用模板数据库的排序规则。 请看以下附加的限制。

  • lc_ctype

用于新数据库的字符分类(LC_CTYPE)。 这影响字符的分类,例如: 小写、大写和数字。 默认情况下使用模板数据库的字符分类。 请看以下附加的限制。

  • tablespace_name

和新数据库关联的表空间名字, 或者使用DEFAULT选项表示使用模版数据库的表空间。 这个表空间将成为在这个数据库里创建的对象的缺省表空间。

  • connlimit

数据库可以接受多少并发的连接。-1(缺省)意味着没有限制。

可选参数可以按任意顺序书写,而不仅仅是上面显示的顺序。

实例

CREATE DATABASE "myDb"
    WITH
    OWNER = postgres
    ENCODING = 'UTF8'
    CONNECTION LIMIT = -1;

psql中不支持多行,所以将上述SQL保存至一个sql文件中,在psql中执行\i FQ.sql即可执行多行的SQL如下:

postgres=# \i FQ.sql
CREATE DATABASE
postgres=# \l
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
 myDb      | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
(4 rows)

事项

如果你看到类似下面这样的信息:

createdb: command not found

那么就是PostgreSQL没有安装好:要么是就根本没装上、要么是搜索路径没有包含它。 尝试用绝对路径调用该命令试试:

$ /usr/local/pgsql/bin/createdb mydb

在你的节点上这个路径可能不一样。请和管理员联系或者看看安装指导以获取正确的位置。

另外一种响应可能是这样:

createdb: could not connect to database postgres: could not connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

这意味着服务器没有启动,或者没有在createdb预期的地方启动。同样, 你也要检查安装指导或者找管理员。

另外一个响应可能是这样:

createdb: could not connect to database postgres: FATAL:  role "joe" does not exist

在这里提到了你自己的登陆名。如果管理员没有为你创建PostgreSQL 用户帐号,就会发生这些现像。

如果你有个数据库用户帐号,但是没有创建数据库所需要的权限,那么你会看到下面的东西:

createdb: database creation failed: ERROR:  permission denied to create database

并非所有用户都经过了创建新数据库的授权。如果PostgreSQL 拒绝为你创建数据库,那么你需要让站点管理员赋予你创建数据库的权限。出现这种情况时 请咨询你的站点管理员。如果你自己安装了PostgreSQL,那么你应该以你启动数据库服务器的用户身份登陆然后参考手册完成权限的赋予工作。

你还可以用其它名字创建数据库。PostgreSQL允许你在 一个节点上创建任意数量的数据库。数据库名必须是以字母开头并且小于 63 个字节 长。一个方便的做法是创建和你当前用户名同名的数据库。许多工具假设它为缺省的 数据库名,所以这样可以节省敲键。要创建这样的数据库,只需要键入:

$ createdb

切换数据库

  • 在psql使用\l列出数据库,使用\c切换数据库
postgres-# \l
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
 myDb      | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
(4 rows)

postgres-# \c "myDb"
Password for user postgres:
You are now connected to database "myDb" as user "postgres".
myDb-# 
  • 也可以在使用psql命令时使用参数-d指定数据库名字
[PostgresFile] psql -U postgres -W -d "myDb"
Password for user postgres:
psql (9.5.11
Type "help" for help

myDb=#

删除数据库

DROP DATABASE [ IF EXISTS ] name

DROP DATABASE删除一个数据库。删除一个现存数据库的目录入口并且删除包含数据的目录。 只有数据库所有者能够执行这条命令。还有,如果你或者任何其他人正在与目标数据库连接, 那么就不能执行这条命令。所以要与postgres或者任何其它数据库连接,再发出这条命令。DROP DATABASE不能撤销,小心使用!

参数

  • IF EXISTS

如果指定的数据库不存在,那么发出一个 notice 而不是抛出一个错误。

myDb=# DROP DATABASE IF EXISTS "myDb";
ERROR:  cannot drop the currently open database
myDb=# \c postgres
Password for user postgres:
You are now connected to database "postgres" as user "postgres".
postgres=# DROP DATABASE IF EXISTS "myDb";
DROP DATABASE
postgres=#

可以看到当前数据库为myDb时是不能进行删除操作的。

原文地址:https://www.cnblogs.com/oneTOinf/p/8458158.html

时间: 2024-11-04 02:13:33

PostgreSQL 数据库操作的相关文章

几个PostgreSQL数据库操作总结

创建表 语法:如下 create table     table_name     (column_name         column_type(parametes)options,…); 注意: ⑴     SQL语句对大小写不敏感 ⑵     通常忽略空白—应该使用空白使SQL命令具有更好的可读性. ⑶     表名和字段不能和SQL的保留字相同 一下示例师范如何创建表cd_collection: create      table         cd_collection ( id 

PostgreSQL数据库操作查找原因以及解决介绍

http://www.qidian.com/BookReader/1391649,62631917.aspx http://www.qidian.com/BookReader/1391649,62631988.aspx http://www.qidian.com/BookReader/1391649,62632029.aspx http://www.qidian.com/BookReader/1391649,62632094.aspx http://www.qidian.com/BookRead

postgresql数据库安装及简单操作

自从MySQL被Oracle收购以后,PostgreSQL逐渐成为开源关系型数据库的首选. 本文介绍PostgreSQL的安装和基本用法,供初次使用者上手.以下内容基于Debian操作系统,其他操作系统实在没有精力兼顾,但是大部分内容应该普遍适用. 一.安装 首先,安装PostgreSQL客户端. sudo apt-get install postgresql-client 然后,安装PostgreSQL服务器. sudo apt-get install postgresql 正常情况下,安装完

[转载]php连接postgreSQL数据库及其操作(php5,postgreSQL9)

数据库连接:dbconn.php<?php$conn = pg_connect("host=localhost port=5432 dbname=myd user=postgres password=postgres"); if($conn){    print "has connected" . "<br>";}else{    print "connect failure" . "<br&

数据库操作之Spring JDBCTemplate(postgresql)

本文总结了两种使用JDBCTemplate进行数据库CRUD操作的例子,我用的是pg,废话不说,直接开始吧. 先贴一张目录结果图吧: 上图中最主要的是配置文件和所需的各种jar包. 一.通过属性文件的.properties的方式 这种方法很简单,也是最基本的,主要是从配置文件读取数据库连接信息,然后设置到数据源中,再将数据源设置到JdbcTemplate中,通过这个对象进行数据库的CRUD操作. 1.配置文件config.properties 用来配置数据库连接信息,我配置的都是一下基本信息 #

gitlab操作postgresql 数据库

切换到  gitlab-psql 用户下. 然后使用gitlab内部的psql命令进入postgresql数据库内部. $ /opt/gitlab/embedded/bin/psql -h /var/opt/gitlab/postgresql -d gitlabhq_production 然后操作数据库的CRDU.

Python 操作 PostgreSQL 数据库

我使用的是 Python 3.7.0 PostgreSQL可以使用psycopg2模块与Python集成. sycopg2是用于Python编程语言的PostgreSQL数据库适配器. psycopg2是非常小,快速,稳定的. 您不需要单独安装此模块,因为默认情况下它会随着Python 2.5.x版本一起发布. pip3 install python-psycopg2pip3 install psycopg2-binary 连接到数据库 以下Python代码显示了如何连接到现有的数据库. 如果数

PowerDesigner反向工程PostgreSQL数据库

1. 环境准备: a)         安装PowerDesigner,以PowerDesigner15.1为例 b)         安装java jdk,以jdk-7-windows-i586为例 c)         下载postgressql jdbc驱动jar包,以postgresql-8.1-415.jdbc2.jar为例 2. 远程连接PostgreSQL数据库 a)         打开PowerDesigner b)         新建一个空白物理数据模型 点击PowerDe

PostgreSQL数据库内核分析 笔记(这本书没有怎么很好的看,主要就是一些数据结构、概念和流程的文字介绍)

PostgreSQL数据库内核分析 跳转至: 导航. 搜索 目录 1系统概述 2体系结构 3存储管理 4索引 5查询编译 6查询执行 7事务处理与并发控制 8数据库安全 9附录A 用Eclipse开发和调试 系统概述 初始化数据库:./initdb --no-locale -D ../data ./pg_ctl start -D ../data 数据库命令:initdb createuser dropuser createdb dropdb pg_dump pg_restore pg_ctl v