데이터베이스 관리 및 SQL Self-Join

MySQLBeginner
지금 연습하기

소개

이 프로젝트에서는 데이터베이스, 테이블을 생성하고 테이블에 데이터를 삽입하는 방법을 배우게 됩니다. 또한, 데이터에 대한 자체 조인 쿼리를 수행하여 도시에 속한 주 (province) 를 찾는 방법도 배우게 됩니다.

👀 미리보기

Database project preview

🎯 과제

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

  • sudo 명령을 사용하여 비밀번호 없이 MySQL 서비스를 시작하고 MySQL 에 접근하는 방법.
  • 데이터베이스, 테이블을 생성하고 테이블에 데이터를 삽입하는 방법.
  • 각 도시의 주를 찾기 위해 division 테이블에 대한 자체 조인 쿼리를 작성하는 방법.
  • MySQL 에서 자체 조인 쿼리 스크립트를 실행하는 방법.

🏆 성과

이 프로젝트를 완료하면 다음을 수행할 수 있습니다:

  • MySQL 에서 데이터베이스, 테이블을 생성하고 데이터를 삽입하는 기본 작업을 이해합니다.
  • 자체 조인 쿼리를 수행하여 테이블에서 관련 정보를 검색합니다.
  • SQL 쿼리에 대한 지식을 실제 문제 해결에 적용합니다.

MySQL 서비스 시작 및 MySQL 접속

이 단계에서는 MySQL 서비스를 시작하고 sudo 명령을 사용하여 비밀번호 없이 MySQL 에 접근하는 방법을 배우게 됩니다.

  1. MySQL 서비스 시작:
sudo service mysql start
  1. MySQL 접근:
sudo mysql

이제 비밀번호 없이 MySQL 프롬프트에 접근할 수 있습니다.

✨ 솔루션 확인 및 연습

데이터베이스, 테이블 생성 및 데이터 삽입

이 단계에서는 데이터베이스, 테이블을 생성하고 테이블에 데이터를 삽입하는 방법을 배우게 됩니다.

  1. division 데이터베이스 생성:
CREATE DATABASE division;
  1. division 데이터베이스 사용:
USE division;
  1. division 테이블 생성:
CREATE TABLE division (
  id INT PRIMARY KEY,
  name VARCHAR(22),
  province_id INT
);
  1. division 테이블에 데이터 삽입:
INSERT INTO division VALUES
(1, 'Ontario', NULL),
(2, 'Toronto', 1),
(3, 'Quebec', NULL),
(4, 'Montreal', 3);
✨ 솔루션 확인 및 연습

Self-Join 쿼리 작성

이 단계에서는 division 테이블에 대한 self-join 쿼리를 작성하여 도시가 속한 주 (province) 를 찾는 방법을 배우게 됩니다.

  1. /home/labex/project 디렉토리에 getProvince.sql이라는 새 파일을 생성합니다.

  2. getProvince.sql 파일에 다음 쿼리를 추가합니다:

SELECT city.name AS City, province.name AS Province
FROM division AS city
JOIN division AS province ON city.province_id = province.id
WHERE city.province_id IS NOT NULL;

이 쿼리는 division 테이블에 대한 self-join 을 수행하며, 여기서 city 테이블은 province_id 열을 기반으로 province 테이블과 조인됩니다. WHERE 절은 province_id가 null 이 아닌 도시만 결과에 포함되도록 합니다.

결과 테이블은 CityProvince로 레이블이 지정된 열을 갖게 됩니다.

✨ 솔루션 확인 및 연습

Self-Join 쿼리 실행

이 단계에서는 MySQL 에서 self-join 쿼리 스크립트를 실행하는 방법을 배우게 됩니다.

  1. MySQL 프롬프트로 돌아갑니다:
sudo mysql
  1. getProvince.sql 스크립트를 실행합니다:
SOURCE /home/labex/project/getProvince.sql;

다음과 같은 출력을 볼 수 있습니다:

MariaDB [division]> SOURCE /home/labex/project/getProvince.sql;
+----------+----------+
| City     | Province |
+----------+----------+
| Toronto  | Ontario  |
| Montreal | Quebec   |
+----------+----------+
2 rows in set (0.000 sec)

이 출력은 self-join 쿼리에 의해 검색된 도시와 해당 주를 보여줍니다.

축하합니다! 데이터베이스, 테이블 생성, 데이터 삽입, 그리고 각 도시의 주를 찾기 위한 self-join 쿼리 실행을 통해 프로젝트를 성공적으로 완료했습니다.

✨ 솔루션 확인 및 연습

요약

축하합니다! 이 프로젝트를 완료했습니다. LabEx 에서 더 많은 랩을 연습하여 기술을 향상시킬 수 있습니다.