Categories: SQL言語

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の実活用に有益な記事を配信していますので、ぜひ定期的にご覧ください。

Analytics沖縄

データサイエンス・機械学習・ディープラーニングを本格的に研究するフリーランスエンジニア。 「Google データアナリティクス プロフェッショナル」の認定証を取得済み。 この分野は専門知識がなければ理解し辛い情報が多いのですが、当サイトでは初学者も意識して発信していきますので、ご関心があればぜひご覧ください。

Recent Posts

SQLの種類|DDL、DML、DCL(命令言語の分類)

今回は、データベースに対する命…

4か月 ago

MySQLの日付型や時刻型で使う関数のフォーマット指定子

今回は、MySQLの日付型や時…

8か月 ago

SQL│文字列を日付型に変換するTo_Date・Convert

今回は、SQLで文字列を日付型…

9か月 ago