[SQLのはじめ方] Part5: SELECT文とWHERE句の使い方

SQL

データベースから必要な情報だけを賢く取り出す方法を学びましょう!

SQL学習の旅へようこそ!前回はSQLの基本的な概念と最初のSELECT文について学びました。今回は、データベース操作の基本中の基本であるデータの検索に焦点を当て、SELECT文をさらに掘り下げ、特定の条件に合うデータだけを絞り込むためのWHERE句の使い方をマスターします。

このステップは、学習ロードマップの「Step 2: 基本的なデータ操作(DML)」の一部です。

1. SELECT文:データの「列」を選ぶ

SELECT文は、テーブルからデータを取得するための基本的な命令です。どの「列」のデータを表示したいかを指定します。

基本構文:

SELECT 列名1, 列名2, ... FROM テーブル名;

例えば、usersというテーブルから、name(名前)とage(年齢)の列だけを取得したい場合は、次のように書きます。

-- usersテーブルからnameとageを取得
SELECT name, age FROM users;

全ての列を取得する場合:

テーブルの全ての列を取得したい場合は、列名の代わりにアスタリスク(*)を使います。これは非常に便利ですが、大きなテーブルでは不要なデータまで取得してしまう可能性があるので注意が必要です。

-- usersテーブルの全ての列を取得
SELECT * FROM users;
💡 ポイント: 実際の開発では、必要な列だけを明示的に指定することが推奨されます。これにより、ネットワーク負荷の軽減やクエリの意図の明確化につながります。

2. WHERE句:データの「行」を絞り込む

SELECT文だけではテーブルの全ての行が取得されてしまいます。特定の条件に合致する「行」だけを取得したい場合に使うのがWHERE句です。

基本構文:

SELECT 列名1, 列名2, ...
FROM テーブル名
WHERE 条件式;

WHEREの後には、どの行を取得したいかの条件式を記述します。条件式では、比較演算子を使って列の値に基づいたフィルタリングを行います。

よく使われる比較演算子

演算子 意味 例 (age列の場合)
= 等しい WHERE age = 30 (年齢が30歳)
<> または != 等しくない WHERE city <> 'Tokyo' (都市が東京以外)
> より大きい WHERE age > 25 (年齢が25歳より大きい)
< より小さい WHERE age < 40 (年齢が40歳未満)
>= 以上 WHERE age >= 30 (年齢が30歳以上)
<= 以下 WHERE age <= 25 (年齢が25歳以下)
⚠️ 注意: 文字列や日付を比較条件に使う場合は、通常シングルクォーテーション(')で囲みます。(例: WHERE name = 'Yamada Taro')数値の場合は不要です。

使用例:

usersテーブルから、年齢が30歳の人だけを検索してみましょう。

-- usersテーブルからageが30のユーザーの全情報を取得
SELECT *
FROM users
WHERE age = 30;

usersテーブルから、都市が東京(Tokyo)ではない人の名前(name)を検索してみましょう。

-- usersテーブルからcityが'Tokyo'ではないユーザーのnameを取得
SELECT name
FROM users
WHERE city <> 'Tokyo';

3. 複数の条件を組み合わせる (AND, OR, NOT)

WHERE句では、論理演算子を使って複数の条件を組み合わせることができます。

  • AND: 全ての条件を満たす場合に真 (True) となります。
  • OR: いずれかの条件を満たす場合に真 (True) となります。
  • NOT: 条件を否定します。

AND の例:

年齢が30歳 かつ 都市が東京(Tokyo)のユーザーを検索します。

-- usersテーブルからageが30 かつ cityが'Tokyo'のユーザーのnameとageを取得
SELECT name, age
FROM users
WHERE age = 30 AND city = 'Tokyo';

OR の例:

年齢が25歳 または 都市が福岡(Fukuoka)のユーザーを検索します。

-- usersテーブルからageが25 または cityが'Fukuoka'のユーザーの全情報を取得
SELECT *
FROM users
WHERE age = 25 OR city = 'Fukuoka';

NOT の例:

都市が東京(Tokyo)ではないユーザーを検索します。(<> と同じ結果になります)

-- usersテーブルからcityが'Tokyo'ではないユーザーのnameを取得
SELECT name
FROM users
WHERE NOT city = 'Tokyo';

組み合わせの例:

年齢が30歳以上 かつ (都市が東京(Tokyo) または 大阪(Osaka)の)ユーザーを検索します。括弧 () を使うと条件の評価順序を明確にできます。

-- usersテーブルからageが30以上 かつ (cityが'Tokyo' または 'Osaka') のユーザーのnameを取得
SELECT name
FROM users
WHERE age >= 30 AND (city = 'Tokyo' OR city = 'Osaka');
ANDOR よりも優先して評価されることが多いですが、意図しない結果を防ぐために、複数の論理演算子を使う場合は括弧 () で明示的に評価順序を指定することをお勧めします。

まとめ 📊

今回は、データベースからデータを取得するためのSELECT文と、特定の条件で行を絞り込むためのWHERE句について学びました。

  • SELECT 列名 FROM テーブル名; で指定した列を取得します。
  • SELECT * FROM テーブル名; で全ての列を取得します。
  • WHERE 条件式; で条件に合う行だけをフィルタリングします。
  • 比較演算子 (=, <>, >, <, >=, <=) で条件を指定します。
  • 論理演算子 (AND, OR, NOT) で複数の条件を組み合わせます。

これらの基本的な操作を組み合わせることで、データベースから必要な情報を効率的に取り出すことができます。次は、さらに便利な検索方法である LIKE, BETWEEN, IN について学んでいきましょう! 💪

コメント

タイトルとURLをコピーしました