PostgreSQL
Database

PostgreSQL を初めて使ってみる

インストール

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


リファレンス