SQLの SELECT
文は、データベースからデータを取得するための最も基本的なコマンドです。ここでは、SELECT
文の基本的な使い方と、検索条件の指定方法について解説します。
SELECT文の基本構文
データの検索
SELECT
文は、指定したテーブルから列(カラム)を選択してデータを取得します。
SELECT 列リスト FROM 表名;
列リスト
: 取得したい列の名前をカンマ区切りで指定します。すべての列を取得する場合は*
を使用します。表名
: データを取得したいテーブルの名前を指定します。
例:
SELECT column1, column2 FROM my_table; -- my_tableからcolumn1とcolumn2を取得
SELECT * FROM my_table; -- my_tableからすべての列を取得
テーブル構造の確認
テーブルの構造(列名、データ型、NULL許容など)を確認するには、DESCRIBE
または DESC
コマンドを使用します。
DESCRIBE 表名;
-- または
DESC 表名;
例:
DESCRIBE my_table;
重複データの排除
DISTINCT
キーワードを使用すると、選択した列の重複する値を排除し、一意な値のみを取得できます。
SELECT DISTINCT 列リスト FROM 表名;
例:
SELECT DISTINCT category FROM products; -- productsテーブルから重複しないカテゴリ名を取得
検索条件の指定
WHERE
句を使用すると、特定の条件を満たすレコードのみを検索できます。
SELECT 列リスト FROM 表名
WHERE 検索条件;
例:
SELECT * FROM users WHERE age > 30; -- usersテーブルから年齢が30歳より大きいユーザーを取得
結果のソート
ORDER BY
句を使用すると、検索結果を指定した列の順序でソートできます。
SELECT 列リスト FROM 表名
WHERE 検索条件
ORDER BY 列名 [ASC|DESC];
ASC
: 昇順(デフォルト)DESC
: 降順
例:
SELECT name, age FROM users ORDER BY age DESC; -- usersテーブルを年齢の降順でソート
SELECT product_name, price FROM products ORDER BY price ASC, product_name ASC; -- 価格で昇順、同じ価格なら製品名で昇順
検索条件の演算子
WHERE
句で利用できる主な演算子です。
BETWEEN
: 指定した範囲内の値を検索します(両端を含む)。SELECT * FROM orders WHERE order_date BETWEEN '2023-01-01' AND '2023-01-31';
IN
: 指定したリスト内のいずれかの値と一致するものを検索します。SELECT * FROM employees WHERE department_id IN (10, 20, 30);
LIKE
: 文字列の部分一致検索を行います。ワイルドカードを使用します。%
: 0文字以上の任意の文字列_
: 任意の1文字
SELECT * FROM products WHERE product_name LIKE 'Apple%'; -- 'Apple'で始まる製品名 SELECT * FROM customers WHERE phone_number LIKE '___-____-____'; -- 特定の形式の電話番号
IS NULL
/IS NOT NULL
: NULL値(値がない状態)を検索します。SELECT * FROM users WHERE email IS NULL; -- メールアドレスが登録されていないユーザー SELECT * FROM products WHERE description IS NOT NULL; -- 説明が登録されている製品
その他の注意点
- 文字列検索の大文字小文字の区別: データベースシステム(RDBMS)によっては、文字列検索において大文字と小文字を区別しない場合があります(例: MySQLのデフォルト設定)。厳密な区別が必要な場合は、RDBMSのドキュメントを確認し、適切な設定や関数を使用してください。
- 論理演算子: 複数の検索条件を組み合わせるには、
AND
,OR
,NOT
などの論理演算子を使用します。NOT
,AND
,OR
の順で優先順位が評価されます。- 括弧
()
を使用することで、優先順位を明示的に変更できます。
SELECT * FROM products WHERE category = 'Electronics' AND price > 10000; SELECT * FROM users WHERE (age < 18 OR age > 65) AND country = 'Japan';
これらの基本的な構文と演算子を理解することで、SQLを使ったデータベースからのデータ検索を効果的に行うことができます。