概览
在工作中接触到了
Postgres
对这个和mysql
齐名的数据库很好奇,所以把它与mysql
的异同整理出来,希望能对一些和我一样从未接触过Postgres
的人,有些许帮助
第一次整理文章,做分享,如有错误,欢迎指正
postgres 可以说是目前功能最强大、特性最丰富和结构最复杂的开源数据库管理系统,其中有些特性甚至连商业数据库都不具备。这个起源于加州大学伯克利分校的数据库,现已成为一项国际开发项目,并且拥有广泛的用户群,尤其是在海外,目前国内使用者也越来越多,被称为功能最强大的开源数据库。
安装
mac安装
安装数据库非常简单,只需要执行以下命令即可
brew install postgresql
复制代码
安装信息可以使用以下命令查看
brew info postgresql
复制代码
安装路径
// 软件路径
/usr/local/Cellar/postgresql/版本号/*
// 配置路径
/usr/local/var/postgres/postgres.conf
// 默认数据路径
/usr/local/var/postgres/
复制代码
ubuntu安装
安装PostgreSQL客户端和服务端
sudo apt-get install -y postgresql-client postgresql pgadmin3
复制代码
安装配置
第一次使用
启动
初次安装后,默认生成一个名为postgres的数据库
其中linux生成了一个 名为
postgres
系统用户和同名的数据库用户
而mac 则只直接生成了 一个安装用户同名的数据库用户
默认密码都未空
初始化数据库
initdb /usr/local/var/postgres
复制代码
启动方式
brew services postgresql start/stop/restart
// 或者
pg_ctl -D /usr/local/var/postgres start
复制代码
登陆
登陆后需要尽快更新密码
psql -U [user] -d [database] -h [host] -p [post]
复制代码
更新密码方式 执行
\password [用户]
之后输入两次新密码即可
\password [用户]
复制代码
常用操作
辅助命令
\?
查看psql命令列表\l
展示所有数据库列表 类似于mysqlshow databases
\c
[database_name] 切换数据库 类似于mysqluse database
\d
展示当前数据库的所有表格 类似于mysqlshow tables
\d [table_name]
列出某一张表格的结构 类似于mysqldesc table
\di
查看索引\du
列出所有用户\h
查看帮助\password [user_name]
重置用户密码alter user 用户名 with password '新密码'
\q
退出
数据库操作
- 创建数据库
create database [数据库名];
复制代码
- 删除数据库
drop database [数据库名];
复制代码
- 修改数据库名
alter database [旧数据库名] rename to [新数据库名];
复制代码
数据表操作
数据表操作与mysql基本一致
- 创建数据表
CREATE TABLE user_tbl(
name VARCHAR(20),
signup_date DATE
);
复制代码
- 删除数据表
drop TABLE user_tbl;
复制代码
- 修改数据表名
alter TABLE [旧数据表名] rename to [新数据表名];
复制代码
数据表字段操作
- 新增字段
ALTER TABLE user_tbl ADD email VARCHAR(40);
复制代码
- 更改字段结构
ALTER TABLE user_tbl ALTER COLUMN signup_date SET NOT NULL;
复制代码
- 修改数据字段名称
ALTER TABLE user_tbl RENAME COLUMN signup_date TO signup;
复制代码
- 删除字段
ALTER TABLE user_tbl DROP COLUMN email;
复制代码
数据表索引操作
postgres 共有9种索引
hash
,gin
,gist
,sp-gist
,brin
,bloom
,rum
,zombodb
,bitmap
具体差异参考文章 PostgreSQL 9种索引的原理和应用场景
- 新增索引
CREATE INDEX name ON table USING hash (column);
复制代码
- 修改&重建索引
ALTER INDEX 索引名 SET (fillfactor = 75);
REINDEX INDEX 索引名;
复制代码
- 索引重命名
ALTER INDEX 旧索引 RENAME TO 新索引;
复制代码
- 索引删除(级联删除)
drop index 索引名 Cascade
复制代码
数据操作 增删改查
- 添加数据
INSERT INTO user_tbl(
name,
signup_date
) VALUES(
'张三',
'2013-12-22'
);
复制代码
- 更新数据
UPDATE user_tbl
set name = '李四'
WHERE
name = '张三';
复制代码
-- 删除数据
DELETE FROM user_tbl WHERE name = '李四' ;
复制代码
-- 查询
SELECT * FROM user_tbl WHERE name = '张三';
复制代码