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

🎯 タスク
このプロジェクトで学ぶことは以下の通りです。
- ターミナルを使って MySQL データベースにアクセスする方法
- SQL ファイルを MySQL データベースにインポートする方法
empテーブルからすべての社員情報をクエリし、結果をソートする方法- 4 人以上の社員がいる部署の部署番号と社員の総数をクエリする方法
- 10 部署の給与が最も高い社員をクエリする方法
🏆 成果
このプロジェクトを完了すると、以下のことができるようになります。
- ターミナルを使って MySQL データベースを操作する方法を理解する
- 基本的な SQL クエリを実行してデータを取得および分析する
- ソート、グループ化、およびフィルタリング技術を適用して、データベースから特定の情報を抽出する
MySQL にアクセスしてデータベースをインポートする
このステップでは、MySQL データベースにアクセスして personnel.sql ファイルをインポートする方法を学びます。
- ターミナルを開き、次のコマンドを使って MySQL サービスを起動します。
sudo service mysql start
- 次のコマンドを使って MySQL クライアントにアクセスします。
sudo mysql
- 次のコマンドを使って
personnel.sqlファイルを MySQL データベースにインポートします。
source /home/labex/project/personnel.sql;
これにより、personnel データベースと emp テーブルが MySQL 環境にインポートされます。
クエリを記述する
このステップでは、3 つのクエリを記述する方法、emp テーブルからすべての社員をクエリして結果をソートする方法、4 人以上の社員がいる部署の部署番号と社員の総数をクエリする方法、および 10 部署の給与が最も高い社員をクエリする方法を学びます。
~/projectディレクトリにselect_group.sqlという名前の新しいファイルを作成します。select_group.sqlファイルに、次の SQL クエリを追加します。このクエリは、
empテーブルからすべての社員情報を返し、部署番号を昇順で、給与を降順でソートします。SELECT * FROM emp ORDER BY deptno ASC, sal DESC;このクエリは、4 人以上の社員がいる部署の部署番号と社員の総数を返します。
GROUP BY句は、社員を部署番号でグループ化するために使用され、HAVING句は、結果を 4 人以上の社員がいる部署のみに絞り込むために使用されます。SELECT deptno, COUNT(*) AS total_employees FROM emp GROUP BY deptno HAVING total_employees > 4;このクエリは、部署番号が 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 スクリプトを実行する方法を学びます。
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 でさらに多くの実験を行って練習してください。
