データベース

【TIPS】これでバッチリ試して覚えるSQL文法リファレンス

 

エンジニアライフスタイルブログを運営しているミウラ(@miumiu06171)です。

 

普段はフリーランスでシステムエンジニアをしております。

 

今回は、初心者向けにデータベース、およびテーブルを操作するSQLの文法を紹介していきます。

 

本記事内のSQL文は、MAMPとMySQL Workbenchを使ったMySQL環境で動作確認しているため、同様に確認したい方はこちらの記事で環境構築を行ってください。

 

 

コメントアウト

 

特定のSQL文を無効にするには、以下のコメントアウトを使用します。

 

【書式1】

 

SQL文の行の先頭に「– 」(ハイフン・ハイフン・スペース)を付けることで、行をコメントアウトできます。

 

 

【書式2】

 

SQL文を「/*  */」で囲むことで、複数行をコメントアウトすることができます。

 

 

 

取得(select)

 

テーブルから値を取得するには、select句を使用します。

 

テーブルのすべてのデータを取得

 

テーブルからすべてのデータを取得する場合、以下のように*(アスタリスク)を使用します。

 

【書式】

 

 

【例】

 

studentslistテーブルのすべてのデータを取得する例です。

 

 

列を指定してデータを取得

 

特定の列のデータを取得するには、以下のように列名を指定します。

 

【書式】

 

 

【例】

 

studentslistテーブルのname列だけ取得する例です。

 

 

列に別名を付ける(as)

 

selectで出力する列名を別名に変えるには、以下の as を使用します。

 

【書式】

 

 

【例】

 

studentslistテーブルのname列をfullnameという別の列名にして出力する例です。

 

 

 

条件指定(where)

 

条件を指定してテーブルから値を取得するには、where句を使用します。

 

【書式】

 

 

【例】

 

studentslistテーブルの出席番号001番の生徒の情報を取得する例です。

 

 

代表的な演算子

 

where句で使用する代表的な演算子は、以下のとおりです。

 

  • 「=」: 等しい
  • 「>」: より大きい
  • 「>=」: 以上
  • 「<」: より小さい
  • 「<=」: 以下
  • 「<>」, 「!=」: 等しくない
  • 「in」: ある値が in の後に続くセット内に含まれるかどうか
  • 「not in」: ある値が in の後に続くセット内に含まれてないかどうか
  • 「is null」: 値がnullであるか
  • 「is not null」: 値がnullではないか
  • 「between <値A> and <値B>」: ある値が値Aと値Bの範囲内に含まれるか

 

 

パターンマッチ(like)

 

パターンマッチした条件でテーブルから値を取得するには、like句を使用します。

 

【書式】

 

【例】

 

studentslistテーブルのname列の値が’ミウラ’で始まる情報を取得する例です。

 

 

 

ワイルドカード文字

 

ワイルドカード文字とは、以下の2つを指します。

 

  • ‘%’:0文字以上の任意の文字列
  • ‘_’:任意の1文字

 

ワイルドカード文字の使用例

 

ワイルドカード文字の使用例は、以下のとおりです。

 

  • ’田%’: ’田’で始まる文字列
  • ‘%田%’: ’田’を含む文字列
  • ‘%男’: ’男’で終わる文字列
  • ‘_男’: 何かしらの1文字+’男’で終わる2文字

 

 

取得件数を制限(limit)

 

取得件数を制限するには、以下のlimit句を使用します。

 

【書式】

 

 

 

【例】

 

studentslistテーブルの2番目のデータから最大5つのデータを取得する例です。

 

 

 

テーブルをグループ化(group by)

 

テーブルをグループ化するには、以下の group by 句を使用します。

 

【書式】

 

【例】

 

studentslistテーブルのデータをgender(性別)単位でグループ化して取得する例です。

 

 

代表的な集約関数

 

集約関数とは、SQLでテーブルの値を集計するために使う関数です。

 

代表的な集約関数は、以下のとおりです。

 

  • sum(式):合計値
  • avg(式):平均値
  • min(式):最小値
  • max(式):最大値
  • count(式):カウント値

 

 

集約関数countの重複カウント

 

集約関数countを使用する場合、重複してもそれぞれカウントするか、1つとしてカウントするか指定することができます。

 

  • 重複してもそれぞれカウントする場合: count(式)
  • 重複したら1つとしてカウントする場合: count(distinct 式)

 

 

集約結果をさらに絞り込む(having)

 

集約結果をさらに絞り込むには、以下のhaving句を使用します。

 

【書式】

 

group by句によってテーブルのデータを集約した結果に対して、having句の条件式を適用する場合に使用します。

 

 

【例】

 

studentslistテーブルのうち15歳以上のデータをgender列でグループ化した後、平均年齢が18歳以上のデータを取得する例です。

 

 

 

データの並び替え(order by)

 

select句で取得するデータの並び替えをするには、以下のoder by句を使用します。

 

【書式】

 

並び順の指定には、以下の2つがあります。

 

  • asc: 昇順(ascending) ※並びを指定しない場合はascがデフォルトです
  • desc: 降順(descending)

 

【例】

 

studentslistテーブルの情報をname順、かつidの昇順に並び替える例です。

 

 

 

条件分岐(case式)

 

SQLで条件に応じて場合分けするには、case式を使います。

 

【書式】

 

【例】

 

xの値が10以上なら’評価A’、xの値が5以上10未満なら’評価B’、xの値が5未満なら’評価C’を出力する例です。

 

 

 

selectの記述順序と実行順序

 

select句の記述順序と実行順序は、以下のとおりです。

 

順序 記述順序 実行順序
1 select from
2 from where
3 where group by
4 group by having
5 having select
6 order by order by
7 limit limit

 

句の記述順序と実行順序が異なることを覚えておいてください。

 

 

まとめ

 

いかがでしたか。

 

データベース初心者向けにデータベース、およびテーブルを操作するSQLの文法を紹介してきました。

 

最近では直接SQL文を使うことは減ってきていますが、本記事で紹介したSQL基礎文法は振り返れば使えるようにしておくとよいでしょう。