こんにちは!
現在、ローコード開発の案件に参画しており、業務でSQLを使って調査する機会があります。
そこでSELECT文を読んでいると、「分かっているつもりだったけど、あれ!?意外と理解できてないかも…」と感じ、改めてSQLを勉強することにしました!
今回は、学習したSELECT文の基本〜WHERE・ORDER BY・DISTINCTまでを復習も兼ねてまとめてみました!
SELECT文とは
SELECT文は、データベースに保存されているデータを取得するためのSQL文です。
今回は例として、studentsテーブルを使ってSELECT文を書いてみます!
このあと、WHERE・ORDER BY・DISTINCTについても同じstudentsテーブルを使い、それぞれの書き方や意味を説明していきます。
SELECT文の基本的な書き方
下記に、SELECT文の基本的な書き方を書いています。

SELECTのあとに取得したいカラム名、FROMのあとにデータを取得するテーブル名を書きます。
このSQL文は、studentsテーブルにあるすべてのカラムのデータを取得するという意味です。
1行目:SELECT *
SELECTは、取得したいデータを指定するときに使います。
*(アスタリスク)は「すべてのカラム」という意味なので、すべてのカラムを取得するという意味になります。
2行目:FROM students;
FROMは、どのテーブルからデータを取得するのかを指定するときに使います。
WHEREの書き方
WHEREとは、条件を指定して取得するデータを絞り込むときに使います。
下記に、WHEREの基本的な書き方を書いています。


このSQL文は、studentsテーブルから「1年生」のデータだけを取得するという意味です。
1行目:SELECT *
*は「すべてのカラム」という意味です。
→ すべてのカラムを取得する
2行目:FROM students
データを取得するテーブルを指定します。
→ studentsテーブルから取得する
3行目:WHERE grade = 1;
取得するデータの条件を指定します。
gradeは学年、= 1は「1と等しい」という意味です。
ORDER BYの書き方
ORDER BYは、取得したデータを指定したカラムの順番に並び替えるときに使います。
下記に、基本的な書き方を書いています。


このSQL文は、studentsテーブルのデータを学年(grade)が小さい順に並び替えて取得するという意味です。
1行目:SELECT *
*は「すべてのカラム」という意味です。
→ すべてのカラムを取得する
2行目:FROM students
データを取得するテーブルを指定します。
→ studentsテーブルから取得する
3行目:ORDER BY grade;
ORDER BYは、指定したカラムを基準にデータを並び替えるときに使います。
今回はgradeを指定しているので、1年生 → 2年生 → 3年生のように学年が小さい順(昇順)に並びます。
DISTINCTの書き方
DISTINCTは、重複しているデータを除いて取得するときに使います。
下記に、基本的な書き方を書いています。

DISTINCTを使う場合は、SELECTの後ろにDISTINCTを追加します。
通常のSELECT文との違いはDISTINCTが追加されているところです。
DISTINCTを追加することで指定したカラムの重複を除いてデータを取得できます。

このSQL文は、studentsテーブルから、重複を除いたクラス名を取得するという意味です。
1行目:SELECT DISTINCT class_name
DISTINCTは、重複しているデータを除いて取得するときに使います。
今回はclass_nameを指定しているので、重複を除いたクラス名を取得します。
2行目:FROM students;
データを取得するテーブルを指定します。
→ studentsテーブルから取得する。
例えば、class_nameに『A・A・B・B・C』とデータが入っていた場合、取得結果は『A・B・C』となります。
さいごに
この記事が少しでも参考になったら、ChatGPTやGeminiなどの生成AIに練習問題を作ってもらって、実際にSQLを書いてみるのもおすすめです!
やっぱりSQLは、読むだけじゃなくて実際に手を動かすのが大事!
僕もまだまだ勉強中なので、どんどん手を動かして身につけていこうと思います。
