1.概要
今回SQLの検索を使用したので、基本的な構文と演算子まとめます。
2. SQLとは
SQL(Structured Query Language、構造化問い合わせ言語)は、データベース操作、管理を行う言語です。リレーショナルデータベース(RDB: Relational Database)に対して、データの検索、追加、更新、削除などをできます。
3. 検索
3.1 検索の基本
SELECT
カラム名
FROM
テーブル名
;
- SELECTはFROMで選択したテーブルから、カラムを選択するものです。
- カラム名を選択すると選択したカラムのみ表示できます。
- [*]は全てのカラムを指定します。
- FROMは、対象テーブル名を指定します。
3.2 where
SELECT
カラム名
FROM
テーブル名
WHERE
カラム名 = '条件'
AND
カラム名 != '条件' --否定
OR
カラム名 BETWEEN 1000 AND 2000
;
- WHEREは、特定の条件に一致するデータを抽出する
- ANDは、両方の条件を満たす場合に検索する
- ORは、どちらか条件を満たす場合に検索する
- BETWEENは、範囲を指定して検索する
(BETWEEN 1000 AND 2000は、1000以上から2000以下までのものを検索する)
3.2.1 条件式
データの値を比較するための演算子です。
演算子 | 意味 | 例 | 説明 |
---|---|---|---|
= | 等しい | age = 25 | age が 25 のデータを取得 |
!= または <> | 等しくない | age != 25 | age が 25 ではないデータを取得 |
> | より大きい | age > 25 | age が 25 より大きいデータを取得 |
< | より小さい | age < 25 | age が 25 より小さいデータを取得 |
>= | 以上 | age >= 25 | age が 25 以上のデータを取得 |
<= | 以下 | age <= 25 | age が 25 以下のデータを取得 |
3.2.2 論理演算子
複数の条件を組み合わせるための演算子です。
演算子 | 意味 | 例 | 説明 |
---|---|---|---|
AND | 両方の条件を満たす | age >= 18 AND age <= 30 | 18歳以上30歳以下 のデータを取得 |
OR | どちらかの条件を満たす | age < 18 OR age > 60 | 18歳未満 または 60歳超え のデータを取得 |
NOT | 条件を満たさない | NOT age = 25 | age が 25 ではないデータを取得 |
3.2.3 特殊条件演算子
特定の条件を指定するための演算子です。
WHERE カラム名 特殊条件演算子の順番で使用します。
演算子 | 意味 | 例 | 説明 |
---|---|---|---|
BETWEEN | 範囲内(開始値と終了値を含む) | age BETWEEN 20 AND 30 | 20歳以上30歳以下 のデータを取得 |
IN | 指定した値のいずれかと一致 | city IN ('Tokyo', 'Osaka', 'Nagoya') | Tokyo, Osaka, Nagoya に住むユーザーを取得 |
LIKE | 部分一致(ワイルドカード検索) | name LIKE 'H%' | H で始まる名前を取得 |
IS NULL | NULL のデータを検索 | email IS NULL | email が NULL のデータを取得 |
IS NOT NULL | NULL ではないデータを検索 | email IS NOT NULL | email が NULL ではないデータを取得 |
3.2.4 ワイルドカード
LIKE 句ではワイルドカードを使って部分一致検索ができます。
ワイルドカード | 例 | 説明 |
---|---|---|
% | name LIKE '%ar%' | 0文字以上の任意の文字列が入る |
_ | name LIKE 'H_n' | 任意の一文字が入る |
4 ORDER BY
並び替えを行う。
SELECT
*
カラム名
FROM
テーブル名
ORDER BY カラム名 DESC
;
- DESC を指定すると降順(大きい順)、指定しない場合は昇順(小さい順)になる
- デフォルトは昇順になる
5 GROUP BY
GROUP BY は、データを特定の列ごとにグループ化して集計するために使用します。
集約関数と一緒に使用されます。
SELECT
カラムA, SUM(カラムB) AS 合計
FROM
テーブル名
WHERE
条件
GROUP BY
カラムA;
- ASは別名をつ指定する際に使用する
- SUMは合計を求める
集約関数 | 例 | 説明 |
---|---|---|
COUNT | COUNT(カラム名) | レコードの数をカウントする |
SUM | SUM(カラム名) | 値の合計 |
AVG | AVG(カラム名) | 値の平均 |
GROUP BYがあると、全体の合計ではなく、カラムAのレコード事に合計が計算されます。
6 LIMIT
表示される列の数を制限する。
データを多い場合に使用する。
SELECT
カラム名, 集約関数
FROM
テーブル名
WHERE
条件
LIMIT
10;
LIMIT 10 で10レコードまで取得できる。
7 最後に
SQL の基本的な検索や条件指定、グループ化、並び替えについて記述しました。GROUP BY や ORDER BY を適切に使うことで、データの分析や抽出を効率的に行えます。