SQL|FROM句の使い方。基本構文とテーブル指定の実例

今回は、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テーブルから、従業員のFirstNameLastNameを抽出するSQLです。

SELECT FirstName, LastName FROM employees;

このクエリはemployeesテーブルから、全従業員のFirstNameLastNameを抽出します。FROM句でデータの抽出元となるテーブルを指定しています。このようなクエリは、従業員リストの表示や人事レポート作成に使用されます。

実例2:条件を組み合わせたデータの抽出 

employeesテーブルから、給与額が50,000より多い従業員のFirstName,LastNameSalaryを抽出するSQLです。

SELECT FirstName, LastName, Salary FROM employees WHERE Salary > 50000;

このクエリはWHERE句を組み合わせて、employeesテーブルのSalaryの額が50,000より多いレコードFirstNameLastNameSalaryの情報を抽出します。

これは給与改定や賞与計画の決定、また決算資料の作成時に有益なデータとなります。

実例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テーブルを関連付けて、FirstNameLastNameDepartmentNameを抽出する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,LastNameDepartmentNameが抽出されます。このような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の実活用に有益な記事を配信していますので、ぜひ定期的にご覧ください。

目次