PostgreSQL是加州大學伯克利分校計算機系開發的對象關系型數據庫管理系統,目前擁有活躍的開源社區貢獻,最近排名也不斷前進,pgsql中其實有很多有點和設計理念都要比mysql更好一些,比如穩定性比較強;高並發讀寫情況下性能依然較好;支持豐富的幾何類型並且在GIS領域地位領先;text支持各種長度,無需區分;nosql特性,支持array和json存儲和搜索等,因為這些優點,pgsql應用場景也不斷擴展,下面詳細寫一下pgsql入門的第一步,即先將pgsql安裝至操作系統,過程如下:
1. 下載軟件包
pgsql有很多類型的包,對於不同linux發行版都有對應的編譯好的包,安裝很方便,另外如果對於通用的linux平台可以編譯源碼安裝或者安裝官方編譯好的二進制包,源碼包的安裝僅僅比二進制安裝多出一個編譯步驟,其余的都一樣,所以這里使用安裝方式是安裝編譯好的二進制包
pgsql官網地址:https://www.postgresql.org/,進入后點擊download就來到下載頁,這里點擊Linux下面的Other Linux選項,然后點擊下方的tar.gz archive下載二進制歸檔,
然后就來到最終的pgsql下載頁了,地址為:https://www.enterprisedb.com/download-postgresql-binaries,如下圖下載最新版本的10.1
如上圖根據機器的位數下載對應的包,我這里下載的是x86-64的包,為:postgresql-10.1-1-linux-x64-binaries.tar.gz,下載之后准備安裝
2. 安裝並初始化
解壓數據庫並放到指定目錄:
tar -xvzf postgresql-10.1-1-linux-x64-binaries.tar.gz # 解壓出來之后目錄為pgsql mv pgsql/ /monchickey/
現在pgsql的安裝目錄就是/monchickey/pgsql
創建pgsql用戶並設置密碼:
useradd postgres passwd postgres # 兩次輸入密碼並確認
注意:這里設置密碼是linux用戶postgres的登錄密碼,不是pgsql服務器的密碼
創建pgsql數據目錄: mkdir /monchickey/pgsql_data
給postgres用戶授權目錄訪問權限: chown postgres /monchickey/pgsql_data/
然后切換到postgres用戶來操作數據庫,pgsql數據庫就以postgres為默認用戶,執行: su - postgres 切換
切換之后建議修改~/.bash_profile將pgsql的bin目錄加至環境變量中,方便直接使用pgsql相關命令,下面初始化數據庫:
/monchickey/pgsql/bin/initdb -D /monchickey/pgsql_data/
等待執行完畢,沒什么問題就初始化成功了,提示如下:
如圖根據提示可以啟動數據庫: /monchickey/pgsql/bin/pg_ctl -D /monchickey/pgsql_data/ -l logfile start 這里-l指定日志文件位置,這里直接輸出在家目錄下的logfile中,這個可以自己指定,這里-D指定數據目錄,默認如果不加數據目錄直接報錯找不到,可以剛才說的環境變量配置文件中~/.bash_profile加入一行: export PGDATA=/monchickey/pgsql_data 然后source進去即可,這樣pgsql會自動去找PGDATA環境變量值,找不到才會報錯
啟動之后此時執行: ps -ef | grep postgres 就可以看到相關進程如下:
pgsql默認的端口號為5432,通過netstat命令或者lsof命令都可以看到監聽情況:
現在可以看到pgsql默認監聽的是localhost或127.0.0.1,目前只能本機訪問,如果遠程訪問就連接不上了,具體的配置文件是data目錄下的postgresql.conf,可以通過修改這個配置文件來調整各個參數,比如:listen_addresses可以修改綁定的地址,默認是localhost,port可以修改監聽的端口號,默認是5432,max_connections可以修改最大客戶端連接數量,默認是100等等,這里就不再詳細說了
停止postgresql的命令為: /monchickey/pgsql/bin/pg_ctl -D /monchickey/pgsql_data/ stop
3. 命令行界面簡單操作
pgsql和mysql一樣可以通過交互式提示符連接操作,連接方式如下:
./bin/psql -h 127.0.0.1 -d postgres -U postgres -p 5432
其中-h參數指定服務器地址,默認為127.0.0.1,默認不指定即可,-d指定連接之后選中的數據庫,默認也是postgres,-U指定用戶,默認是當前用戶,-p 指定端口號,默認是"5432",其它更多的參數選項可以執行: ./bin/psql --help 查看
登錄進去默認界面如下所示:
命令提示符前面的就是當前的數據庫,使用 \l 查看當前的數據庫列表
默認postgres,template0和1這3個庫是不允許操作的,創建新的數據庫執行: CREATE DATABASE test WITH OWNER=postgres ENCODING='UTF-8'; 這樣就創建好了數據庫test,然后可以執行命令 \c test 切換當前數據庫為test,然后執行 \d 可以查看當前數據庫下的所有表:
創建一個簡單的數據表可以執行下面的命令:
CREATE TABLE student ( id integer NOT NULL, name character(32), number char(5), CONSTRAINT student_pkey PRIMARY KEY (id) );
創建表之后可以使用 \d student; 查看表的詳細信息,如下:
現在可以插入一條測試數據: INSERT INTO student (id, name, number) VALUES (1, '張三', '1023');
然后可以查詢這條數據: SELECT * FROM student WHERE id=1;
最后可以執行 \q 退出交互式界面
上面是一些最基本的操作,可以看出除了一些屬性類的操作外,通用的sql語句和mysql幾乎完全一樣,只是數據類型表達有所不同;對於pgsql的安裝和簡單的使用就先說這些,另外pgsql還支持更多復雜的查詢的操作,這個后續如果有涉及會繼續分享;感謝查看,歡迎補充.^_^.