Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

SELECT文(セレクトブン)とは | 意味や読み方など丁寧でわかりやすい用語解説

SELECT文(セレクトブン)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

セレクトぶん (セレクトブン)

英語表記

SELECT statement (セレクトステートメント)

用語解説

SELECT文は、リレーショナルデータベースから情報を検索し、取得するためのSQL(Structured Query Language)における最も基本的な命令の一つである。データベースに格納された膨大なデータの中から、必要なデータだけを抽出することが主な目的であり、データ操作言語(DML: Data Manipulation Language)に分類される。あらゆるデータベースアプリケーションにおいて、ユーザーが情報を参照したり、レポートを作成したりする際に不可欠な存在であり、データベース操作の基盤となる。システムエンジニアにとって、このSELECT文を自在に操る能力は、データベース関連業務を行う上で最初にして最も重要なスキルの一つと言える。

SELECT文の基本的な構文は、「どの情報(カラム)を、どのテーブルから取得するか」を指示する形式を取る。最も単純な形は、SELECT カラム名 FROM テーブル名; となる。ここで「カラム名」はテーブルの列を指し、「テーブル名」はデータが格納されている表を指す。例えば、顧客情報が格納されたcustomersテーブルから顧客の名前だけを取得したい場合、SELECT name FROM customers; と記述する。テーブル内の全てのカラムを取得したい場合は、アスタリスク(*)を使用する。SELECT * FROM customers; とすることで、customersテーブルの全ての列のデータを取得できる。これは開発中の確認や、テーブル全体の構造を把握したい場合に便利だが、実運用では必要なカラムだけを指定することが、パフォーマンス向上やデータ量の削減につながるため推奨される。

取得するデータに重複する値がある場合、DISTINCTキーワードを使うことで、ユニークな値のみを取得できる。例えば、SELECT DISTINCT city FROM customers; は、customersテーブルに含まれる重複しない全ての都市名を一覧表示する。

SELECT文の強力な機能の一つに、取得するデータに条件を設定できるWHERE句がある。WHERE句はFROM句の後に記述し、指定した条件に合致する行だけを抽出する。例えば、「年齢が30歳以上の顧客」を取得したい場合、SELECT * FROM customers WHERE age >= 30; となる。条件には等号(=)、不等号(<, >, <=, >=)、非等号(<>または!=)といった比較演算子を用いる。複数の条件を組み合わせる際には、AND(両方の条件を満たす)、OR(いずれかの条件を満たす)、NOT(条件を満たさない)といった論理演算子を使用する。また、特定のパターンに一致する文字列を検索するLIKE演算子(ワイルドカード%_と組み合わせて使用)、複数の値のリストのいずれかに一致するかを判定するIN演算子、ある範囲内の値であるかを判定するBETWEEN演算子、値がNULLであるかを判定するIS NULL演算子など、さまざまな特殊な演算子も用意されている。

取得したデータの表示順序を制御するには、ORDER BY句を使用する。ORDER BY句はWHERE句の後に記述し、指定したカラムの値を基準にデータを並べ替える。デフォルトは昇順(ASC)だが、明示的にDESCを指定することで降順に並べ替えることができる。例えば、SELECT name, age FROM customers ORDER BY age DESC; は、顧客の名前と年齢を年齢の高い順に表示する。さらに、取得する行数を制限したい場合は、データベースシステムによって異なるが、LIMIT句(MySQLやPostgreSQLなど)やTOP句(SQL Serverなど)を使用する。例えば、SELECT * FROM customers LIMIT 10; は最初の10件の顧客データを取得する。

複数のテーブルにまたがる関連データを結合して取得することも可能である。これはJOIN句を用いて実現される。最も一般的なのはINNER JOINであり、複数のテーブル間で共通のキーを持つ行を組み合わせて結果を生成する。例えば、ordersテーブルとcustomersテーブルを顧客IDで結合し、各注文の詳細とその顧客の名前を一度に取得するといったことが可能になる。SELECT o.order_id, c.name FROM orders AS o INNER JOIN customers AS c ON o.customer_id = c.customer_id; のように記述する。ここでASはエイリアス(別名)を定義し、文を読みやすくする役割を持つ。

SELECT文は、データの集計にも利用される。COUNT(行数を数える)、SUM(合計値を計算する)、AVG(平均値を計算する)、MAX(最大値を求める)、MIN(最小値を求める)といった集計関数(アグリゲート関数)が用意されている。例えば、SELECT AVG(age) FROM customers; は顧客の平均年齢を計算する。これらの集計関数は、GROUP BY句と組み合わせることで、特定のカラムの値ごとにデータをグループ化し、それぞれのグループに対して集計を行うことができる。例えば、SELECT city, COUNT(*) FROM customers GROUP BY city; は、都市ごとに顧客数を集計する。GROUP BY句でグループ化された結果に対してさらに条件を適用したい場合は、HAVING句を用いる。WHERE句が個々の行に対する条件であるのに対し、HAVING句はGROUP BY句で生成されたグループに対する条件である点が異なる。例えば、SELECT city, COUNT(*) FROM customers GROUP BY city HAVING COUNT(*) > 5; は、顧客数が5人を超える都市だけを抽出する。

このように、SELECT文は非常に多機能であり、その組み合わせによってデータベースからあらゆる形式のデータを柔軟に取得できる。データベースアプリケーションの根幹をなす要素であり、効果的なデータ抽出と分析のスキルは、システムエンジニアとしてのキャリアにおいて不可欠な能力となる。

関連コンテンツ