PostgreSQL创建数据库
概述
在PostgreSQL中,数据库是存储数据的顶级容器。创建数据库是开始使用PostgreSQL的第一步。本章介绍如何使用SQL命令和命令行工具创建数据库。
CREATE DATABASE语句
基本语法
sql
CREATE DATABASE database_name;简单示例
sql
-- 创建一个简单的数据库
CREATE DATABASE myapp;
-- 创建数据库并指定所有者
CREATE DATABASE myapp OWNER postgres;
-- 创建数据库并指定编码
CREATE DATABASE myapp ENCODING 'UTF8';完整语法
sql
CREATE DATABASE database_name
[WITH]
[OWNER = role_name]
[TEMPLATE = template]
[ENCODING = encoding]
[LC_COLLATE = lc_collate]
[LC_CTYPE = lc_ctype]
[TABLESPACE = tablespace_name]
[ALLOW_CONNECTIONS = true | false]
[CONNECTION LIMIT = connlimit]
[IS_TEMPLATE = true | false];参数说明
| 参数 | 说明 |
|---|---|
| OWNER | 数据库所有者 |
| TEMPLATE | 模板数据库,默认为template1 |
| ENCODING | 字符编码,如UTF8 |
| LC_COLLATE | 排序规则 |
| LC_CTYPE | 字符分类 |
| TABLESPACE | 表空间 |
| ALLOW_CONNECTIONS | 是否允许连接 |
| CONNECTION LIMIT | 最大连接数,-1表示无限制 |
使用命令行工具
createdb命令
bash
# 创建数据库
createdb myapp
# 指定所有者
createdb -O postgres myapp
# 指定编码
createdb -E UTF8 myapp
# 指定用户和主机
createdb -U postgres -h localhost myapp
# 创建并添加注释
createdb myapp "My Application Database"使用psql
bash
# 通过psql执行SQL
psql -U postgres -c "CREATE DATABASE myapp;"
# 进入psql后创建
psql -U postgres
postgres=# CREATE DATABASE myapp;实际应用示例
创建开发环境数据库
sql
-- 创建开发数据库
CREATE DATABASE myapp_dev
OWNER = developer
ENCODING = 'UTF8'
LC_COLLATE = 'en_US.UTF-8'
LC_CTYPE = 'en_US.UTF-8';
-- 创建测试数据库
CREATE DATABASE myapp_test
OWNER = developer
TEMPLATE = myapp_dev;
-- 创建生产数据库
CREATE DATABASE myapp_prod
OWNER = admin
CONNECTION LIMIT = 100;查看数据库列表
sql
-- 使用SQL查询
SELECT datname FROM pg_database;
-- 或使用psql命令
\l注意事项
- 命名规范:数据库名称应使用小写字母、数字和下划线
- 权限要求:需要CREATEDB权限或超级用户权限
- 编码选择:建议使用UTF8编码以支持多语言
- 模板数据库:默认从template1复制,可指定其他模板
常见问题
数据库已存在
sql
-- 使用IF NOT EXISTS避免错误
CREATE DATABASE IF NOT EXISTS myapp;
-- 或先检查再创建
SELECT datname FROM pg_database WHERE datname = 'myapp';连接数限制
sql
-- 创建限制连接数的数据库
CREATE DATABASE limited_db CONNECTION LIMIT 10;
-- 修改现有数据库的连接限制
ALTER DATABASE myapp CONNECTION LIMIT 50;