postgresql是以加州大學伯克利分校計算機系開發的 postgres,現在已經更名為postgresql,版本 4.2為基礎的物件關係型資料庫管理系統(ordbms)。postgresql支援大部分 sql標準並且提供了許多其他現代特性:複雜查詢、外來鍵、觸發器、檢視、事務完整性、mvcc。同樣,postgresql 可以用許多方法擴充套件,比如, 通過增加新的資料型別、函式、操作符、聚集函式、索引。免費使用、修改、和分發 postgresql,不管是私用、商用、還是學術研究使用。
有人說:自從mysql被oracle收購以後,
postgresql
逐漸成為開源關係型資料庫的首選。
但目前我感覺還是使用 mysql 的多一些;
有公司是使用 postgresql 的小夥伴舉個手!
最近有小夥伴在群裡提到centos下安裝postgresql的問題,我也親自嘗試一下。本文僅僅介紹postgresql的安裝和基本用法,供初次使用者上手。這只是我做為乙個 postgresql 的初學者的學習記錄,不是最佳實踐。以下內容基於centos和ubuntu 作業系統,其它作業系統實在沒有精力兼顧,但是大部分內容應該普遍適用。
centos
yum install postgresql-server
或dnf install postgresql-server
ubuntu
apt-get install postgresql-9.3
後面需要跟版本號
注:ubuntu 本身預設是包含 postgresql 的;
centos 下安裝完成後並不會自動啟動,需要執行以下命令將其註冊為系統服務,使其隨系統啟動:
service postgresql initdb
chkconfig postgresql on
fedora 23 及其後續版本:
postgresql-setup initdb
systemctl enable postgresql.service systemctl start postgresql.service
centos 下使用yum 預設安裝的是9.2版本。
postgresql伺服器預設使用本機的5432埠,可以通過以下命令檢視:
ps aux | grep 5432
centos下需要先啟動服務:
service postgresql start
初次安裝後,預設生成乙個名為postgres的資料庫和乙個名為postgres的資料庫使用者。這裡需要注意的是,同時還生成了乙個名為postgres的linux系統使用者。
postgresql
的管理使用者和系統的管理員不同。
createdb mydb
# createdb mydb
createdb: could not connect to database template1: fatal: role "root" does not exist
root 角色不存在,資料庫中並沒有root 這個使用者,你的可能提示的不是root,是你當前登入的使用者名稱。
官方文件提示直接跳到 21章,建立使用者;但要建立資料庫使用者必須登入才行;
ubuntu 下可以使用以下命令切換使用者:
sudo su - postgres
但centos下就這樣了。
解決方法參考:centos 切換使用者顯示bash-4.2$,不顯示使用者名稱路徑的問題
需要注意的是:
切換使用者後顯示 -bash-4.2$ 其實使用者切換已經成功了,只是顯示的內容不符合預期;我開始以為是出錯了,根本沒辦法操作。有點傻了。
已經切換到 postgres 使用者下了,接下來再執行:
createdb mydb
此命令建立乙個名稱為」mydb「的資料庫 在
postgres 使用者下,使用以下命令登入 主資料庫:
psql postgres
首先使用\password命令,為postgres使用者設定乙個密碼
\password postgres
建立乙個使用者:
create user root superuser;
此命令建立乙個名稱為」root「的使用者,許可權為:superuser,超級管理員;
使用」\q「命令退出 psql,切換到 root 使用者下,再執行建立資料庫命令,乙個比較有意思的事情發生了:
建立資料庫成功了!
剛剛建立的 root 使用者沒有設定密碼,我們再次登入,為使用者設定密碼:
並沒有驗證使用者密碼,資料庫也可以建立成功了。
postgresql 是使用的系統的使用者驗證方式嗎?但是我的系統使用者 root 和資料庫中的使用者 root 使用的不是相同的密碼。
使用\q命令退出控制台
\q
建立新使用者和新資料庫以後,就要以新使用者的名義登入資料庫,這時使用的是psql命令。
# psql -u root -d mydb -h 127.0.0.1 -p 5432
上面的命令你也可以這樣寫:
# psql -uroot -dmydb -h127.0.0.1 -p5432
引數說明:
-u=資料庫使用者名稱,注意是大寫的u;
-d=資料庫名稱;
-h=資料庫伺服器的ip;
-p=資料庫伺服器的埠號;
還有一種簡單的寫法(但是需要你的系統使用者名稱同時也是postgresql的使用者):
# psql mydb
這只有在本機連線的時候可用,遠端連線是不行的。
直接執行「psql」試試:
# psql
psql: fatal: database "root" does not exist
根據提示你能猜到什麼?
如果你的系統使用者名稱
同時也是postgresql的使用者,而且同時存在乙個同名的資料庫,那麼只需要執行「psql」就可以登入了。
執行「help」可以檢視基本的幫助
# help
you are using psql, the command-line inte***ce to postgresql.
\h 檢視sql命令幫助
\? 檢視psql命令幫助
\g 或以分號終止執行查詢
\q 退出
常用命令:
\l:列出所有資料庫
\c [database_name]:連線其他資料庫
\d:列出當前資料庫的所有**
\d [table_name]:列出某一張**的結構
\du:列出所有使用者
資料庫操作:
基本的資料庫操作,就是使用標準的sql語言。
# 建立新錶
create table table_name(id int, name varchar(20);
# **更名
alter table table_name rename to new_table_name;
# 刪除**
drop table if exists table_name;
# 插入資料
insert into table_name(id, name) values('1', '張三');
# 選擇記錄
select * from table_name;
# 更新資料
update table_name set name = '李四' where name = '張三';
# 刪除記錄
delete from table_name where name = '李四' ;
# 新增字段
alter table table_name add column_name varchar(40);
# 更新結構
alter table table_name alter column column_name set not null;
# 更名字段
alter table table_name rename column column_name to signup;
# 刪除字段
alter table table_name drop column column_name;
在使用 ssh 客戶端工具如 xshell 連線 linux 系統時,你可能會遇到以下錯誤:
error: invalid byte sequence for encoding "utf8": 0xd5 0xc5
PostgreSQL新手入門
日期 2013年12月22日 自從mysql被oracle收購以後,postgresql逐漸成為開源關係型資料庫的首選。本文介紹postgresql的安裝和基本用法,供初次使用者上手。以下內容基於debian作業系統,其他作業系統實在沒有精力兼顧,但是大部分內容應該普遍適用。一 安裝 首先,安裝po...
PostgreSQL新手入門
自從mysql被oracle收購以後,postgresql逐漸成為開源關係型資料庫的首選。本文介紹postgresql的安裝和基本用法,供初次使用者上手。以下內容基於debian作業系統,其他作業系統實在沒有精力兼顧,但是大部分內容應該普遍適用。一 安裝 首先,安裝postgresql客戶端。sud...
PostgreSQL新手入門
自從mysql被oracle收購以後,postgresql逐漸成為開源關係型資料庫的首選。本文介紹postgresql的安裝和基本用法,供初次使用者上手。以下內容基於debian作業系統,其他作業系統實在沒有精力兼顧,但是大部分內容應該普遍適用。postgresql教程 一 安裝 首先,安裝post...