» 首頁 » 討論區 » Ruby on Rails »Mac安裝PostgreSQL與簡單教學

Mac安裝PostgreSQL與簡單教學

發表人: Seachaos
積分: 2432
發表時間: 2015-09-16 02:14:54
PostgreSQL和MySQL一樣都是一種SQL Server
以下有些教學是可以提供給會MySQL,也想使用PostgreSQL的使用者看看

第零步,安裝PostgreSQL



使用brew來安裝 (Linux的話就看是apt / yum 還是什麼的,以下以Mac為例)
[sea:javaCode]
brew install postgresql
[/sea]

成功的話,會看到最後有段訊息
[sea:javaCode]
To have launchd start postgresql at login:
ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents
Then to load postgresql now:
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
Or, if you don't want/need launchctl, you can just run:
postgres -D /usr/local/var/postgres
[/sea]

主要的重點是說,你想要一登入Mac的使用者,就自動啟動PostgreSQL的話,就在終端機輸入
[sea:javaCode]
ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents
[/sea]

要手動啟動 (第一次裝完最好也輸入一次)
[sea:javaCode]
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
[/sea]

如果想要停止的話輸入
[sea:javaCode]
postgres -D /usr/local/var/postgres
[/sea]

第一步,建立Database


createdb 是 postgresql 建立資料庫的指令
試看看建立資料庫,直接在Terminal中輸入 (此以 test_1 做為範例)
[sea:javaCode]
createdb test_1
[/sea]
註:由於postgresql設計的特性,一般來說執行postgresql ( postmaster )的user就會有直接連入資料庫的功能
所以不像MySQL,需要特別指定User
註2:postmaster為postgresql的資料庫服務

第二步,進入Database


如果成功,就可以開始進入剛剛建立的DB
[sea:javaCode]
psql test_1
[/sea]
如果沒有意外,可以看到終端機變成了
test_1=#
輸入\q就可以離開此模式 (此模式下按Ctrl + C是無效的)
輸入help可以看到一些簡單的說明

在PostgreSQL的終端(PSQL) 輸入 \du
可以看到現在的使用者,例如:
[sea:javaCode]
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------+-----------
seachaos | Superuser, Create role, Create DB, Replication | {}
[/sea]
這裡現在列出的User Name (Role Name)應該和現在登入Mac的使用者名稱是一樣的

PSQL中輸入
[sea:javaCode]
SELECT version();
[/sea]
可以查看到現在的PostgreSQL版本資訊等等

第三步,操作Table (Create Table)


建立一個範例Table,可以在PSQL中輸入以下語法
[sea:javaCode]
CREATE TABLE mytable
( id SERIAL NOT NULL ,
name varchar(255) NOT NULL ,
value text NOT NULL ,
time timestamp NOT NULL ,
PRIMARY KEY (id));
其中建立流水號的id語法,SERIAL相當於MySQL中的 AUTO_INCREMENT
(Mysql寫法為 id INT NOT NULL AUTO_INCREMENT , 在PostgreSQL為 id SERIAL NOT NULL )
[/sea]
如果要看現在PostgreSQL的Database中有那些Table,可以輸入 \dt
(類似MySQL的 show tables )
應該可以看到類似以下的結果
[sea:javaCode]
test_1=# \dt
List of relations
Schema | Name | Type | Owner
--------+---------+-------+----------
public | mytable | table | seachaos
(1 row)
[/sea]
可以試看看插入(insert)一個資料到mytable中,語法如下:
[sea:javaCode]
insert into mytable (name,value,time)values(‘Good','this is value',now());
[/sea]
再來輸入Select語法,看剛才的insert是否成功:
[sea:javaCode]
select * from mytable
[/sea]
結果應該類似

[sea:javaCode]
test_1=# select * from mytable;
id | name | value | time
----+------+---------------+----------------------------
2 | Good | this is value | 2015-09-13 03:51:27.426327
(1 row)
[/sea]
再來其他的應該就和SQL一樣大同小異了


同步發表於 程式植物園