select [ALL | distinct] 選択リスト
from 参照表リスト
[where 条件]
[group by グループ化列名リスト]
[having グループ選択条件]
nullかどうかもしくはnullじゃないかどうかの判定、between述語、in述語、like述語
nullかどうか:A IS (NOT) NULL、between:A BETWEEN 10 and 20、IN述語:A IN (10, 20, 30)。副問い合わせではA IN (select A from B where C BETWEEN 10 and 20)、LIKE:A LIKE '%子'。%は0文字以上、_は1文字
AVG, ASC, DESC
AVG:平均、ASK, DESC:order by A ASK(DESC)
内結合(INNER JOIN)
普通のFROMで複数の表を指定して、whereで条件した場合と同じ。
select A
FROM B表 INNER JOIN C表
ON A表.D = C表.D
最後にon句の代わりに「using D」とする方法も
外結合(OUTER JOIN)、{LEFT, RIGHT, FULL} OUTER JOIN
FROM A {LEFT, RIGHT, FULL} OUTER JOIN B
ON A.C = B.C
LEFT, RIGHT OUTER JOIN:キーワードの左側(右側)の表を基準にして、右側にない行はNULLで埋めて結合。FULL:どちらかにない行はNULLで埋めて結合。どちらかに存在する行は出力される。
最後にon句の代わりに「using C」とする方法も
nullじゃないほうを値として使用
SELECT COALESCE (A, B)
AがNULLでなければAを、AがNULLであればBを、どちらもNULLであればNULLを返す。
(NOT) EXISTS
副問い合わせの結果が存在すればtrue。
select A from B
where EXISTS
(select * from A where B.C = D.C)
UNION, INTERSECT, EXCEPT, CROSS JOIN
UNION:和、INTERSECT:共通、EXCEPT:差、CROSS JOIN:直積
select * FROM A
(UNION | INTERSECT | EXCEPT | CROSS JOIN)
SELECT * FROM B
WITH句
一時的な表を作成。共通表式。
WITH AA (A, B)
AS (SELECT C, COUNT(*)
FROM D GROUP BY E)
SELECT A, B
FROM AA
WHERE B = (SELECT MAX(B) FROM AA)
case句
条件で出力変化。
select a,
case
when b > 10 then "big"
when b = 10 then "equal"
else "small"
end as hantei
from C
insert文、副問い合わせでinsert
INSERT INTO A [(列名リスト)]
VALUES (値リスト)
INSERT INTO A [(列名リスト)]
問い合わせSELECT文
update文
update A表 set A=B [where 条件]
delete文
delete from A [where 条件]
NO ACTION, RESTRICT, CASCADE, SET DEFAULT, SET NULL
参照動作。
NO ACTION:一旦実行するが、参照行があれば削除(変更)は取り消される
RESTRICT:参照行があれば削除(変更)は拒否される
CASCADE:参照している行があればその行も削除(変更)される。更新が連鎖する。
SET DEFAULT:参照している行があればdefault値に変更される
SET NULL:参照している行があればNULL値に変更される
キーバリューDB:KVS。key value store。データをキーに関連付けて。カラム指向DB:キーバリューDBにカラムの概念を持たせたもの。ドキュメント指向DB:キーバリューペアーの拡張、XMLやJSONのドキュメント単位で管理する。グラフ指向DB:ノードとノードの間のエッジやノードとエッジの属性で全体を構造化して管理
2024.04.20