インストール
For mac
$ brew install postgresql
以下のように出力されれば成功
~/M/p/postgres ❯❯❯❯❯ postgres --version
postgres (PostgreSQL) 10.1
For CentOS
For Ubuntu
使ってみる
サーバの起動
$ postgres -D /usr/local/var/postgres
サーバのデーモン起動 & 停止
- 起動
$ pg_ctl start -D /usr/local/var/postgres
- 停止
$ pg_ctl stop -D /usr/local/var/postgres
データベースの一覧
$ psql -l
データベースへの接続
$ psql -d database -U user -h host
- -d: データベース名(未指定の場合、ログインユーザー名のデータベースに接続)
- -U: ユーザ名(未指定の場合、ログインユーザー名)
- -h: ホスト名(未指定の場合、localhost)
データベース接続時に使うコマンド
⚠️ psql -d postgres
で接続したとする
psqlから抜け出す
postgres=# \q
ユーザー一覧の表示
postgres=# \du
ユーザーの作成
postgres=# create user <username>
postgres=# CREATE ROLE <ロール名> WITH LOGIN PASSWORD '<パスワード>';
ユーザーにパスワードを持たせる
postgres=# \password <username>
...
Enter new password:
Enter it again:
データベース一覧の表示
postgres=# \l
他のデータベースに接続
postgres=# \c <dbname>
データベースの作成
postgres=# create database <dbname>;
テーブルの作成
以下をpsql内で実行する
CREATE TABLE Staff
(
id CHAR(4) NOT NULL,
name TEXT NOT NULL,
age INTEGER ,
PRIMARY KEY (id)
);
- MySQLで自動的な連番を格納するカラム(シリアル)を作りたいとき、AUTO_INCREMENTを対象カラムに設定する。
PostgreSQLでは、設定やオプションではなくserial型としてデータ型が準備されている。
以下のように書く
create table sample (
id SERIAL,
valeu integer
) ;
もしくはこれを.sql
ファイルにかき、ファイルからコマンドを実行できる。
また、ファイルを作成し、creatdb
というコマンドがあるのでそれでもいいと思われる
createdb
については以下に詳細をかく
テーブル一覧の表示
postgres=# \z
テーブル定義の表示
postgres=# \d <tablename>
ファイルからコマンド実行
postgres=# \i filename.sql
権限付与
postgres=# GRANT 権限名 ON DATABASE データベース名 TO ユーザ名;
postgres=# GRANT <権限の種類> ON <テーブル名> TO <ロール名>;
postgres=# GRANT 権限名 ON スキーマ名.テーブル名 TO ユーザ名;
履歴の表示
postgres=# \s
テーブル操作一覧
テーブル内のデータ一覧
select * from <tablename>;
指定したカラムの内容を小さい順に表示
select * from <tablename> order by <column>;
指定したカラムの内容を大きい順に表示
select * from <tablename> order by <column> desc;
表示数指定
select * from <tablename> limit <num>;
表示の開始位置指定
select * from <tablename> offset <num>;
データ更新
update <tablename> set <contents of update>;
カラムの追加
alter table <tablename> add <columnname> <datatype>;
カラムの削除
alter table <tablename> drop <columnname>;
カラムの型変更
alter table <tablename> alter column <columnname> type <datatype>
カラムの変更
alter table テーブル名 rename <old_column_name> to <new_column_name>;
createdb
createdbは、新しいPostgreSQLデータベースを作成できる
通常、このコマンドを実行したデータベースユーザが、新しいデータベースの所有者になる。 ただ、コマンドを実行するユーザが適切な権限を持っている場合、-Oオプションを使用して別のユーザを所有者に指定することができる。
createdbはCREATE DATABASEというSQLコマンドのラッパです。 したがって、このユーティリティでデータベースを作成しても、これ以外の方法でサーバにアクセスしてデータベースを作成しても何も違いはない。
オプション
dbname
- 作成するデータベースの名前を指定します。 この名前はクラスタ内の全てのPostgreSQLデータベースの中で一意でなければならない
-O owner
- 新しいデータベースの所有者となるデータベースユーザを指定する
以上以外のオプションが知りたい場合は以下を参照してください
https://www.postgresql.jp/document/9.4/html/app-createdb.html