データベースから必要な情報だけを賢く取り出す方法を学びましょう!
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');
AND
は OR
よりも優先して評価されることが多いですが、意図しない結果を防ぐために、複数の論理演算子を使う場合は括弧 ()
で明示的に評価順序を指定することをお勧めします。
まとめ 📊
今回は、データベースからデータを取得するためのSELECT
文と、特定の条件で行を絞り込むためのWHERE
句について学びました。
SELECT 列名 FROM テーブル名;
で指定した列を取得します。SELECT * FROM テーブル名;
で全ての列を取得します。WHERE 条件式;
で条件に合う行だけをフィルタリングします。- 比較演算子 (
=
,<>
,>
,<
,>=
,<=
) で条件を指定します。 - 論理演算子 (
AND
,OR
,NOT
) で複数の条件を組み合わせます。
これらの基本的な操作を組み合わせることで、データベースから必要な情報を効率的に取り出すことができます。次は、さらに便利な検索方法である LIKE
, BETWEEN
, IN
について学んでいきましょう! 💪
コメント