MySQL データベースへのアクセスと SQL クエリ

SQLBeginner
オンラインで実践に進む

はじめに

このハンズオンプロジェクトでは、人事データベースとその emp テーブルを使って、SQL クエリの技術を習得する旅に出ます。一連の実習を通じて、社員データを効果的に取得、フィルタリング、分析するために必要なスキルを身につけます。

👀 プレビュー

SQL クエリのプレビュー画像

🎯 タスク

このプロジェクトで学ぶことは以下の通りです。

  • ターミナルを使って MySQL データベースにアクセスする方法
  • SQL ファイルを MySQL データベースにインポートする方法
  • emp テーブルからすべての社員情報をクエリし、結果をソートする方法
  • 4 人以上の社員がいる部署の部署番号と社員の総数をクエリする方法
  • 10 部署の給与が最も高い社員をクエリする方法

🏆 成果

このプロジェクトを完了すると、以下のことができるようになります。

  • ターミナルを使って MySQL データベースを操作する方法を理解する
  • 基本的な SQL クエリを実行してデータを取得および分析する
  • ソート、グループ化、およびフィルタリング技術を適用して、データベースから特定の情報を抽出する

MySQL にアクセスしてデータベースをインポートする

このステップでは、MySQL データベースにアクセスして personnel.sql ファイルをインポートする方法を学びます。

  1. ターミナルを開き、次のコマンドを使って MySQL サービスを起動します。
sudo service mysql start
  1. 次のコマンドを使って MySQL クライアントにアクセスします。
sudo mysql
  1. 次のコマンドを使って personnel.sql ファイルを MySQL データベースにインポートします。
source /home/labex/project/personnel.sql;

これにより、personnel データベースと emp テーブルが MySQL 環境にインポートされます。

クエリを記述する

このステップでは、3 つのクエリを記述する方法、emp テーブルからすべての社員をクエリして結果をソートする方法、4 人以上の社員がいる部署の部署番号と社員の総数をクエリする方法、および 10 部署の給与が最も高い社員をクエリする方法を学びます。

  1. ~/project ディレクトリに select_group.sql という名前の新しいファイルを作成します。

  2. select_group.sql ファイルに、次の SQL クエリを追加します。

  3. このクエリは、emp テーブルからすべての社員情報を返し、部署番号を昇順で、給与を降順でソートします。

    SELECT * FROM emp
    ORDER BY deptno ASC, sal DESC;
    
  4. このクエリは、4 人以上の社員がいる部署の部署番号と社員の総数を返します。GROUP BY 句は、社員を部署番号でグループ化するために使用され、HAVING 句は、結果を 4 人以上の社員がいる部署のみに絞り込むために使用されます。

    SELECT deptno, COUNT(*) AS total_employees
    FROM emp
    GROUP BY deptno
    HAVING total_employees > 4;
    
  5. このクエリは、部署番号が 10 で給与が最も高い社員の社員番号、名前、部署番号、および職種情報を返します。WHERE 句は、結果を部署番号が 10 の社員のみに絞り込むために使用され、ORDER BY 句は、給与を降順でソートするために使用され、LIMIT 1 句は、最初の結果のみを返すために使用され、これは給与が最も高い社員になります。

    SELECT empno, ename, deptno, job
    FROM emp
    WHERE deptno = 10
    ORDER BY sal DESC
    LIMIT 1;
    

    ファイルを保存します。

SQL スクリプトを実行する

このステップでは、SQL スクリプトを実行する方法を学びます。

  1. MySQL ターミナルで、select_group.sql スクリプトを実行します。

    source /home/labex/project/select_group.sql;
    

    これにより、select_group.sql ファイル内の SQL 文が実行され、結果が表示されます。

    出力例:

    MariaDB [personnel]> source /home/labex/project/select_group.sql;
    +-------+--------+-----------+------+------------+---------+---------+--------+
    | empno | ename  | job       | mgr  | hiredate   | sal     | comm    | deptno |
    +-------+--------+-----------+------+------------+---------+---------+--------+
    |  7839 | KING   | PRESIDENT | NULL | 1981-11-17 | 5000.00 |    NULL |     10 |
    |  7782 | CLARK  | MANAGER   | 7839 | 1981-06-09 | 2450.00 |    NULL |     10 |
    |  7934 | MILLER | CLERK     | 7782 | 1982-01-23 | 1300.00 |    NULL |     10 |
    |  7902 | FORD   | ANALYST   | 7566 | 1981-12-03 | 3000.00 |    NULL |     20 |
    |  7788 | SCOTT  | ANALYST   | 7566 | 1987-06-13 | 3000.00 |    NULL |     20 |
    |  7566 | JONES  | MANAGER   | 7839 | 1981-04-02 | 2975.00 |    NULL |     20 |
    |  7876 | ADAMS  | CLERK     | 7788 | 1987-06-13 | 1100.00 |    NULL |     20 |
    |  7369 | SMITH  | CLERK     | 7902 | 1980-12-17 |  800.00 |    NULL |     20 |
    |  7698 | BLAKE  | MANAGER   | 7839 | 1981-05-01 | 2850.00 |    NULL |     30 |
    |  7499 | ALLEN  | SALESMAN  | 7698 | 1981-02-20 | 1600.00 |  300.00 |     30 |
    |  7844 | TURNER | SALESMAN  | 7698 | 1981-09-08 | 1500.00 |    0.00 |     30 |
    |  7654 | MARTIN | SALESMAN  | 7698 | 1981-09-28 | 1250.00 | 1400.00 |     30 |
    |  7521 | WARD   | SALESMAN  | 7698 | 1981-02-22 | 1250.00 |  500.00 |     30 |
    |  7900 | JAMES  | CLERK     | 7698 | 1981-12-03 |  950.00 |    NULL |     30 |
    +-------+--------+-----------+------+------------+---------+---------+--------+
    14 rows in set (0.000 sec)
    
    +--------+-----------------+
    | deptno | total_employees |
    +--------+-----------------+
    |     20 |               5 |
    |     30 |               6 |
    +--------+-----------------+
    2 rows in set (0.000 sec)
    
    +-------+-------+--------+-----------+
    | empno | ename | deptno | job       |
    +-------+-------+--------+-----------+
    |  7839 | KING  |     10 | PRESIDENT |
    +-------+-------+--------+-----------+
    1 row in set (0.000 sec)
    

まとめ

おめでとうございます!このプロジェクトを完了しました。技術力を向上させるために、LabEx でさらに多くの実験を行って練習してください。

✨ 解答を確認して練習✨ 解答を確認して練習✨ 解答を確認して練習