今回は、SQLの基本かつ使用頻度が最も高いFROM句の基本的な使い方について説明します。
FROM句は、SELECTでデータを参照する際、当該データが格納されているテーブルを指定する時に使うSQLの重要なコマンドです。
データの追加や削除で使うことはありませんが、参照(SELECT)時には必ず使いますので、SQLを扱う場合にはFROM句の基本から応用まで理解する必要があります。
この記事ではFROMの基本構文とテーブル指定の実例、さらに応用的活用方法について説明します。
FROM句の基本構文
この章では、FROM句の用途と基本構文について説明します。FROM句とは、SELECTでデータを抽出する際に参照元のテーブルを指定するために使います。
データ参照元のテーブルを指定
データベースには、さまざまなデータが格納されているため、通常、複数のテーブルが存在しています。それぞれのテーブルには「カラム名(列名)」があり、各カラムにテーブル固有のデータが格納されています。
FROM句を使用する際には、データを抽出したい正確なテーブル名を指定する必要があります。たとえば、従業員の報を格納しているemployees
テーブルからデータを抽出する場合には、下記のようなSQLクエリを実行します。
SELECT * FROM employees;
このクエリでは、「*」がemployees
テーブルのすべてのカラムを選択することを意味し、FROM employees
はデータを抽出するテーブルがemployees
であることを明示しています。
FROMを文字通り「〇〇から」と解釈すると、『employeesテーブルから』となりますので、理解もしやすいでしょう。
FROM句の基本構文
FROMの基本的な構文は、主に下記の2つのパターンがあります。
カラムを指定してテーブルからデータを抽出する
基本構文 SELECT (列名1,列名2) FROM テーブル名;
サンプル SELECT Firstname,LastName FROM テーブル名;
全カラムを指定してテーブルからデータを抽出する
基本構文 SELECT * FROM テーブル名;
サンプル SELECT * FROM テーブル名;
FROM句の実例
この章では、FROM句を用いた実例的なSQLを紹介します。
実例1:単一テーブルからのデータ抽出
employees
テーブルから、従業員のFirstName
とLastName
を抽出するSQLです。
SELECT FirstName, LastName FROM employees;
このクエリはemployees
テーブルから、全従業員のFirstName
とLastName
を抽出します。FROM句でデータの抽出元となるテーブルを指定しています。このようなクエリは、従業員リストの表示や人事レポート作成に使用されます。
実例2:条件を組み合わせたデータの抽出
employees
テーブルから、給与額が50,000より多い従業員のFirstName
,LastName
とSalary
を抽出するSQLです。
SELECT FirstName, LastName, Salary FROM employees WHERE Salary > 50000;
このクエリはWHERE句を組み合わせて、employees
テーブルのSalary
の額が50,000より多いレコードのFirstName
とLastName
、Salary
の情報を抽出します。
これは給与改定や賞与計画の決定、また決算資料の作成時に有益なデータとなります。
実例3:集計関数を使ったデータの抽出
AVG集計関数を使って、各部門の平均給与額を計算するSQLです。
SELECT DepartmentID, AVG(Salary) AS AverageSalary FROM employees GROUP BY DepartmentID;
このクエリはAVG関数を組み合わせて、employees
テーブルのDepartmentID
ごとにSalary
の額の平均額を抽出します。GROUP BY
句を使うことで、部門IDごとにグループ化しAVG
関数により平均給与額を算出します。
この情報は部門間の給与格差の分析や予算計画に使われます。
FROM句の応用的事例
この章では、FROM句を用いた応用的なSQLを紹介します。
応用1:複数テーブルからのデータ参照
employees
テーブルとdepartments
テーブルを関連付けて、FirstName
とLastName
、DepartmentName
を抽出するSQLです。
SELECT employees.FirstName, employees.LastName, departments.DepartmentName
FROM employees
JOIN departments ON employees.DepartmentID = departments.DepartmentID;
テーブル:employeesとdepartments
テーブル:employees
テーブル:departments
抽出データ
このクエリでは、employees
テーブルとdepartments
テーブルがDepartmentID
を基に結合され、FirstName
,LastName
とDepartmentName
が抽出されます。このようなJOIN操作は、関連する情報が分散して格納されている場合に使われます。
応用2:サブクエリを使用した複雑なデータ参照
サブクエリを使用することで、クエリの中でさらに自由度の高いデータ抽出が可能になります。下記の例では、給与額が平均給与以上の従業員のみを抽出します。
SELECT FirstName, LastName, Salary
FROM employees
WHERE Salary > (SELECT AVG(Salary) FROM employees);
このクエリのサブクエリSELECT AVG(Salary) FROM employees
は、全従業員の平均給与を計算し、その結果をクエリの比較基準として使用しています。その結果、平均よりも高い給与をもらっている従業員のFirstName
,LastName
が抽出されます。
あとがき
今回はSQLのデータ抽出で最も使われるFROM句について、基本構文や実例、応用的事例を紹介しました。
FROM句自体の使い方は難しくないのですが、基本知識に加えて実践的、応用的な情報も記載したため、長文となりました。データベースのデータ管理は、最終的な目標がデータの活用であり、抽出技術は最重要になるコアスキルです。
当サイトでは、データベースやSQLの実活用に有益な記事を配信していますので、ぜひ定期的にご覧ください。