소개
이 실습 프로젝트에서는 personnel 데이터베이스와 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 환경으로 가져와집니다.
쿼리 작성
이 단계에서는 세 가지 쿼리를 작성하는 방법을 배웁니다. 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 에서 더 많은 랩을 연습하여 기술을 향상시킬 수 있습니다.
