SQL表現 | 構文利用イメージ | 説明 |
---|---|---|
SELECT | SELECT 列名 FROM テーブル ・・・ | テーブルから、列名で指定した属性の射影を取得 |
DISTINCT | SELECT DISTINCT 列名 FROM テーブル ・・・ | 重複が無いようにする。 |
AS | SELECT 列名 AS 別列名 FROM テーブル ・・・ | 属性名の付け替えを行う |
WHERE | SELECT * FROM テーブル WHERE 列名 = "XXX" | 条件 |
AND | SELECT * FROM テーブル WHERE 列名A = "XXX" AND 列名B = "YYY" | 両方 |
OR | SELECT * FROM テーブル WHERE 列名A = "XXX" OR 列名B = "YYY" | どちらか |
NOT | SELECT * FROM テーブル WHERE NOT 列名 = "XXX" | (1-x) |
BETWEEN | SELECT * FROM テーブル WHERE 列名 BETWEEN 1 AND 3 | AとBの間 |
LIKE | SELECT * FROM テーブル WHERE 列名 LIKE "%XXX%" | 文字列のパターンを決める。WHEREの条件の詳細に使う。%任意文字列,_任意文字 |
ORDER BY | SELECT * FROM テーブル WHERE 列名 = "XXX" ORDER BY 列名2 DESC | 並べ替え。ASCとDESC等を指定できる |
GROUP BY | SELECT 列名A,集計関数(列名B) FROM テーブル GROUP BY 列名1 | グループ化。種類ごとの平均を求めたりするのに使える |
PARTITION BY | SELECT *,集計関数() OVER(PARTITION BY 分類したい属性名) FROM テーブル名 | グループ単位でまとめた行を表示する。GROUP BYと異なり、1つのグループを1レコードに集約しない。 |
HAVING | SELECT 列名A,集計関数(列名B) FROM テーブル GROUP BY 列名1 HAVING 条件 | GROUP BYの後につけ、グループ化したものに対して条件を付けて絞り込むことができる |
SQL表現 | 構文利用イメージ | 説明 |
---|---|---|
IN<リレーション> | SELECT * FROM テーブル IN("項目A","項目B") | 副問い合わせ(括弧のこと。問い合わせ結果を利用した問い合わせ)において、 リレーションの中身の条件の一部として使われる。 通常 属性 IN(項目A,項目B)と書くのとWHERE (属性=項目A OR 属性=項目B)と書くのはほぼ同じ意味。 |
EXISTS<リレーション> | SELECT * FROM テーブル WHERE EXISTS(副問い合わせ) | リレーションが存在するときのみ使用可能。複数テーブルから絞り込む時はinと似ている。inとの違いはこちらのサイトが分かり良さそう。 |
ANYまたはSOME<リレーション> | SELECT * FROM テーブル WHERE 項目 > ANY(副問い合わせ) | リレーションの中のいずれか一つずつと比較して、条件に合致するものを抽出。 |
ALL<リレーション> | SELECT 項目名 FROM 表名 WHERE 項目 > ALL(副問い合わせ) | 最大、最小のものを導き出す時に良く使える。 |
UNION | (副問い合わせ)UNION(副問い合わせ) | 和。 二つの副問い合わせ結果のどちらか一方にあれば表示する。 distinctをつけなくとも、同じ行は自動で省いてくれる。同じ行も含むようにしたい場合にはUNION ALLとする。 |
EXCEPT | (副問い合わせ)EXCEPT(副問い合わせ) | 差。 二つの表の一方に含まれるものを表示。最初の副問い合わせ結果から次の副問い合わせ結果を除いたもの。 |
INTERSECTION | (副問い合わせ)INTERSECTION(副問い合わせ) | 積。交差(共通部分)。 二つの副問い合わせ結果のどちらともにあれば表示する。 |
JOIN | SELECT 列名 FROM テーブル名A LEFT OUTER JOIN テーブル名B ON 条件 | 自然結合等はNATURAL JOINで表される。 Θ結合の場合はJOIN 結合するもの ON 結合条件。 ON 結合条件の所はUSING 結合条件で指定する場合もある。 USINGとONの違いはこちらのサイト参照。 結合の種類には以下のようなものがある。 ・INNER JOIN ON(内部結合。NULL値は表示しない。) ・LEFT JOIN ON(外部結合。左側に記載したテーブルはNULL値であっても表示) ・RIGHT JOIN ON(外部結合。右側に記載したテーブルはNULL値であっても表示), ・FULL JOIN ON(外部結合。どちらのテーブルもNULL値でも表示) ・CROSS JOIN(直積結合。両方のテーブルの全ての組み合わせで結合。上4つと比べると使用頻度は低め) |
自己結合 | SELECT X.列名 AS 列名X,Y.列名 AS 列名Y FROM テーブル X,テーブル Y WHERE 条件 | 1つのテーブルを2つのテーブルのようにみなして結合する場合は左記のように表現することができる。SELECT DISTINCT X.列名 AS 列名,Y.列名 AS 列名 FROM テーブル X,テーブル Y;とすると、直積結合のような形になる。 |
INSERT INTO | INSERT INTO<リレーション> VALUES<値のリスト=タプル> | 挿入できる。SQL実行結果をそのまま挿入する場合にはINSERT INTO <リレーション> SELECT ~ FROM…となる。 |
DELETE | DELETE FROM<リレーション> | 削除できる |
UPDATE | UPDATE<リレーション> SET<属性にセットするリスト> | 値等の更新が行える |
CREATE TABLE | CREATE TABLE(名前)(<テーブル要素のリスト>) | リレーションの宣言 |
DROP TABLE | DROP TABLE(名前) | リレーションをデータベーススキーマから削除 |
ALTER TABLE | ALTER TABLE(名前)(変更内容) | テーブル定義の変更 |
PRIMARY KEY,UNIQUE | CREATE TABLE(名前)(カラム名 型名 PRIMARY KEY) | 一つの属性がキーのときに使用 |
NOT NULL | CREATE TABLE(名前)(カラム名 型名 NOT NULL) | その属性はNULL禁止の宣言 |
DEFAULT | CREATE TABLE(名前)(カラム名 型名 DEFAULT 'デフォルト値') | 属性に値が無かったときのデフォルト値 |
GRANT 権限 ON テーブル TO ユーザ | 権限をユーザに付与する |
REVOKE 権限 ON テーブル FROM ユーザ | 権限をユーザから剥奪する |
CREATE VIEW | CREATE VIEW<名前> AS<問い合わせ> | 他のテーブルを使って定義される仮想テーブル |
CASE | SELECT 変数名A CASE 変数名B WHEN 値 THEN 値 END | CASE文を使って、条件分岐できる |
WITH | WITH [RECURSIVE] 名前 AS<リレーション1> <リレーション2> | リレーション1でのテーブルに名前をつけて、リレーション2以降で利用できる |
TRUNCATE | TRUNCATE TABLE テーブル名 | テーブルから全ての行を削除する |
COALESCE | SELCT 列名A,COALESCE(引数1[カラムや計算結果等],引数2) AS 列名B FROM テーブル名 | 1つ目の引数がNULLだった場合に次の引数の値に置き換える |
LAG | SELECT カラムA,LAG(カラムA,行数) OVER(PARTITION BY カラムB ORDER BY カラムC) AS カラムD FROM テーブル名 | 第2引数で指定した行数分だけ前のデータを取得 |
LEAD | SELECT カラムA,LEAD(カラムA,行数) OVER(PARTITION BY カラムB ORDER BY カラムC) AS カラムD FROM テーブル名 | 第2引数で指定した行数分だけ後のデータを取得 |
RANK | SELECT カラムA,RANK() OVER(PARTITION BY カラムA ORDER BY カラムB) AS カラムC FROM テーブル名 | PARTITION BYで区切られた区分ごとに、ORDER BYのカラム順に順位をつける |
LIMIT | SELECT * FROM テーブル名 LIMIT 数値 | PostgresやMySQLで使える(標準SQLではない)。問い合わせ結果の行数を制限することが出来る |
OFFSET | SELECT * FROM テーブル名 LIMIT 数 OFFSET 開始位置 | PostgresやMySQLで使える(標準SQLではない)。取得するデータの開始位置を指定 |
意味合い | 書き方 |
表と項目の指定 | SELECT 項目 AS 表示したい項目名 FROM 表名 |
表の結合(必要なら) | inner join 結合したい表名 on 条件等 |
条件の指定 | [WHERE/IN] 条件 |
グループ化 | GROUP BY 集計のキー |
グループ化条件 | HAVING 条件 |
並び替え | ORDER BY DESC等 |