PostgreSQL 新手入門

2021-09-22 12:15:06 字數 4857 閱讀 8442

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...