はじめに
SQLの学習をする上で、重要な部分を備忘録として書き留めています。
SELECT文について
データベースのデータを検索して、データを取り出す操作を問い合わせという。
この問い合わせは、SQLではSELECT文を使って表現する。構文は以下です。
SELECT 取得したいカラム名 FROM 対象のテーブル名;
SQLは句という単位で分割する。SELECT文ではSELECT句とFROM句に分ける事ができる。
全てのカラムを取り出す場合
SELECT * FROM 対象のテーブル名;
指定したカラムを複数取り出す場合
SELECT 取得したいカラム名その1,取得したいカラム名その2,取得したいカラム名その3 FROM テーブル名;
の様にカンマ(,)で区切って指定する。
カラムに別名をつける
カラム名をわかりやすく表示する為に、カラムに別名をつけて表示する事ができる。
SELECT 指定したいカラム AS 別名 FROM 対象のテーブル名;
上記はカラムどうしで計算した結果を出力する際などに重宝する。
重複した行を除いて抽出する
SELECT DISTINCT 指定したいカラム名 FROM 対象のテーブル名;
WHERE句について
SELECT文にWHERE句を使えば、検索条件に特定のレコードを指定して、絞り込む事ができる。
SELECT 取得したいカラム名 FROM 対象のテーブル名 WHERE 取得したいレコードの条件;
演算子を使う
演算子の種類と一例
演算子の種類 | 説明 | 一例 |
---|---|---|
算術演算子 | 四則演算を行う記号 | +,-,*,/ |
比較演算子 | 値の比較を行う記号や文字列 | =,<,> |
論理演算子 | 値を比較して真か偽かの判別を行う文字列 | NOT,AND,OR |
算術演算子
SQLでは算術演算子を使って、テーブルから取り出した値を計算して表示させる事ができる。
SELECT句、WHERE句、ORDERBY句などと使う事ができる。
比較演算子
値が等しいかどうか、また大きさの比較を行う記号や文字列。WHERE句の検索条件に使う事ができる。
比較条件 | 意味 |
---|---|
= | 等しい |
!=, <> | 等しくない |
>= | 以上 |
<= | 以下 |
> | より大きい |
< | より小さい |
BETWEEN a AND b | a以上b以下 |
NOT BETWEEN a AND b | a以上b以下の範囲外 |
IN (リスト) | リスト内のいずれかと等しい |
NOT IN (リスト) | リスト内のいずれとも等しくない |
IS NULL | NULL値である |
IS NOT NULL | NULL値でない |
LIKE | 文字パターンと一致する |
NOT LIKE | 文字パターンと一致しない |
※「=」は等しいを意味するが対象がNULLの場合は例外
NULLの場合は「IS NULL」「IS NOT NULL」を使う
ワイルドカード
「LIKE」を使用すると、文字パターンと部分的に一致しているかを判定できる。
その際に、確定していない検索文字パターン(いわゆる曖昧な検索文字列)を判定する際にワイルドカードという特殊な記号を使って検索できる。
記号 | 説明 |
---|---|
% | 0文字以上の文字列 |
_ | 任意の一文字 |
部分一致
SELECT 取得したいカラム名 FROM 対象のテーブル名 WHERE 検索対象のレコード LIKE '%文字列%';
前方一致
SELECT 取得したいカラム名 FROM 対象のテーブル名 WHERE 検索対象のレコード LIKE '文字列%';
後方一致
SELECT 取得したいカラム名 FROM 対象のテーブル名 WHERE 検索対象のレコード LIKE '%文字列';
※ワイルドカード記号自体を検索したい場合は\
でエスケープ処理を行う
論理演算子
値同士を比較して、真か偽かの判別を行う文字列のこと
WHERE句の条件に様々な条件を組み合わせる事が可能
論理条件 | 意味 |
---|---|
NOT | 否定 |
AND | 論理積 a AND b(aかつb) |
OR | 論理和 a OR b(aまたはb) |
演算子の優先順位
検索条件を指定する際に複数の条件を設定する事ができる。この時に演算子には優先順位があることに注意する必要がある。
優先順位 | 条件の種類 |
---|---|
高 | =,>,>=,<,<= |
IS [NOT] NULL | |
[NOT] LIKE | |
[NOT] IN | |
[NOT] BETWEEN | |
<> | |
NOT | |
AND | |
低 | OR |
ORDER BY句について
DBMSのデフォルトの取り出し方は特に決まっていない。故にデータの取り出し方を決めたい場合はORDER BY
句で指定する事ができる。
SELECT 取得したいカラム名 FROM 対象のテーブル (WHERE 取得したいレコードの条件 ) ORDER BY 並べ替えの基準にしたいカラム名 キーワード;
ORDER BY句で指定できるキーワードは2種類
キーワード | 説明 |
---|---|
ASC | 昇順に並び替え |
DESC | 降順に並び替え |