MySQL 데이터베이스 접속 및 SQL 쿼리

SQLBeginner
지금 연습하기

소개

이 실습 프로젝트에서는 personnel 데이터베이스와 emp 테이블을 사용하여 SQL 쿼리 기술을 마스터하는 여정을 시작합니다. 일련의 실용적인 연습을 통해, 직원 데이터를 효과적으로 검색, 필터링 및 분석하는 데 필요한 기술을 습득하게 됩니다.

👀 미리보기

SQL query preview image

🎯 과제

이 프로젝트에서 다음을 배우게 됩니다:

  • 터미널을 사용하여 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 환경으로 가져와집니다.

쿼리 작성

이 단계에서는 세 가지 쿼리를 작성하는 방법을 배웁니다. 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 에서 더 많은 랩을 연습하여 기술을 향상시킬 수 있습니다.

✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습