PostgreSQL
https://gyazo.com/14139f9f8057f96753963566f5660f69
基本コマンド
立ち上げる
docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres
docker run -it --rm --link some-postgres:postgres postgres psql -h postgres -U postgres
接続psql -h hostname -U username -d databasename
psqlで接続しているので、createdbコマンドはきかない
SQLで操作する必要がある
DB
つくる
CREATE DATABASE blogapp;
こわす
DROP DATABASE blogapp;
一覧表示
\l\
接続
\c blogapp`
テーブル
つくる
CREATE TABLE posts(title varchar(255), body text);
削除
DROP TABLE posts
スキーマの確認
\dt
スキーマの詳細
\d posts
リネーム
ALTER TABLE posts RENAME TO myposts
外部のスキーマをもとにテーブル作成
\i 外部ファイル
切断
\q
型
integer, real, serail(連番)
char(固定長)、varchar(上限付き可変長)、text(上限なし)
boolean
date(日付)、time(時間)、timestamp(date + time)
制約
INSERT文
INSERT INTO posts(title, body) VALUES ('title', 'body');
SELECT文
SELECT * FROM posts WHERE score > 4.0 ORDER BY score DESC LIMIT 3;
等号否定 <>または!=
開始位置の指定:OFFSET
0始まり
\xでexpanded display mode(MySQLでいう\G のような表示になる) LIKEの中で使える特殊記号
%:任意の文字
_:任意の一文字
バージョン確認
code:zsh
$ psql --version
psql (PostgreSQL) 11.6 (Ubuntu 11.6-1.pgdg18.04+1)
Index type
B-tree indexes B-tree indexes are binary trees that are used to sort data efficiently. They’re the default if you use the INDEX command. Most of the time, a B-tree index suffices. As you scale, inconsistencies can be a larger problem, so use the amcheck extension periodically. BRIN indexes A Block Range INdex (BRIN) can be used when your table is naturally already sorted by a column, and you need to sort by that column. For example, for a log table that was written sequentially, setting a BRIN index on the timestamp column lets the server know that the data is already sorted. Bloom filter index A bloom index is perfect for multi-column queries on big tables where you only need to test for equality. It uses a special mathematical structure called a bloom filter that’s based on probability and uses significantly less space.