🗄️ 데이터베이스, 질문하며 배우기

MariaDB / MySQL · SQL · 선행: 파이썬 또는 자바 · HeidiSQL로 실습

수업 진행

🤖

질문

SQL·개념을 LLM에 물어보기

💾

실행

HeidiSQL / MariaDB에서 직접 실행

👩‍🏫

리뷰

화상으로 JOIN·정규화 등 핵심 정리

앞: CRUD·제약 · 중간: JOIN·집계 · 뒤: 정규화·트랜잭션·프로시저

1-1. 데이터베이스가 필요한 이유

🤖 AI에게 물어보자
엑셀·메모장과 비교해 관계형 데이터베이스가 필요한 이유를 크기·정확성·보안·검색·중복 측면에서 설명해줘. 테이블·행·열·PK·FK도 초보자용으로 알려줘.
👩‍🏫 선생님 리뷰
  1. 테이블 = 표, 행 = 레코드, 열 = 필드
  2. PK는 행을 유일하게 식별, FK는 다른 테이블 PK를 참조

1-2. MariaDB · HeidiSQL 설치

🤖 AI에게 물어보자
Windows에 MariaDB와 HeidiSQL을 설치하고 로컬 root로 접속하는 절차를 단계별로 알려줘.
다운로드: mariadb.org · heidisql.com

1-3. CREATE · INSERT

🤖 AI에게 물어보자
MariaDB에서 데이터베이스와 students(id PK, name, age) 테이블을 만들고 샘플 3행을 INSERT하는 SQL을 보여줘.
CREATE DATABASE school;
USE school;

CREATE TABLE students (
  id INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(50) NOT NULL,
  age INT
);

INSERT INTO students (name, age) VALUES
('철수', 17),
('영희', 16),
('민수', 18);

1-4. SELECT · UPDATE

SELECT * FROM students;
SELECT name FROM students WHERE age >= 17;
UPDATE students SET age = 18 WHERE name = '영희';
SELECT * FROM students ORDER BY age DESC;
🤖 AI에게 물어보자
SQL WHERE, AND/OR, LIKE, ORDER BY, LIMIT 사용 예를 students 테이블 기준으로 보여줘.

1-5. 데이터 타입 · 제약조건

🤖 AI에게 물어보자
MySQL/MariaDB에서 INT, VARCHAR, DATE, DECIMAL과 NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY, DEFAULT 제약을 예제 CREATE TABLE로 설명해줘.

1-6. 언어와의 연동 (Python / Java)

🤖 AI에게 물어보자
파이썬 mysql-connector 또는 pymysql로 MariaDB에 접속해 SELECT 결과를 출력하는 최소 예제를 보여줘. 비밀번호는 코드에 하드코딩하지 말고 설명만 해줘.
날씨예보·블로그 검색 등 실습은 “수집 → DB 저장 → 조회” 흐름으로 이어집니다.

2-1. JOIN · UNION

🤖 AI에게 물어보자
INNER JOIN, LEFT JOIN 차이를 주문(orders)·고객(customers) 예제로 설명해줘. UNION과 UNION ALL 차이도 알려줘.
SELECT c.name, o.total
FROM customers c
INNER JOIN orders o ON c.id = o.customer_id;

2-2. 함수 · GROUP BY · VIEW

SELECT employee_id, COUNT(*) AS cnt
FROM sales
GROUP BY employee_id
HAVING cnt >= 15
ORDER BY employee_id;

CREATE VIEW v_student_adult AS
SELECT * FROM students WHERE age >= 18;
🤖 AI에게 물어보자
COUNT SUM AVG MIN MAX와 GROUP BY, HAVING 차이를 WHERE와 비교해 설명해줘.

2-3. DELETE · DROP

DELETE FROM students WHERE age < 15;
-- 테이블 구조 유지, 데이터만 삭제

DROP TABLE students;
DROP DATABASE school;
DELETE vs TRUNCATE vs DROP — AI에게 차이를 물어보세요. 실습 DB에서만 연습!

3-1. 정규화 (1NF · 2NF · 3NF) 고급

🤖 AI에게 물어보자
제1·제2·제3 정규형을 중복 데이터가 있는 수강신청 표 예시로 단계별로 분해해 설명해줘.

3-2. 인덱스 · 트랜잭션 (ACID) 고급

🤖 AI에게 물어보자
클러스터드 인덱스와 논클러스터드 인덱스 차이, 트랜잭션의 ACID(원자성·일관성·격리·지속성)를 초보자용으로 설명해줘. BEGIN COMMIT ROLLBACK 예제도 보여줘.

3-3. 저장 프로시저 · 트리거 고급

🤖 AI에게 물어보자
MariaDB 저장 프로시저와 트리거를 아주 짧은 예제로 보여줘. 각각 언제 쓰면 좋은지 한 줄로 설명해줘.

4-1. SQL 퀴즈 (샘플 스키마)

연습 문제 예시

  1. employee_id < 5 인 행
  2. name만 조회
  3. id가 1,2,4 인 행 (IN)
  4. hourly_pay 수정
  5. LIKE로 이름 검색
  6. GROUP BY로 직원별 판매 수
  7. HAVING으로 15개 이상만
🤖 AI에게 물어보자
employees(id, name, hourly_pay), items(item_id, item_name, price), sales(employee_id, item_id) 테이블이 있다고 가정하고, 직원별 판매 아이템 수가 15개 이상인 employee_id를 오름차순으로 구하는 SQL을 짜줘.

4-2. 영화순위 → DB 저장

🤖 AI에게 물어보자
영화 순위 사이트에서 제목·예매율·개봉일을 수집했다고 가정하고, movies 테이블 설계(CREATE)와 INSERT 후 예매율 상위 5편 SELECT 쿼리를 제안해줘.

4-3. 4대질병 데이터 → DB

🤖 AI에게 물어보자
지역·날짜·질병·환자수 컬럼을 가진 illness 테이블을 설계하고, 지역·날짜·질병 조건으로 조회하는 SELECT를 작성해줘. 파이썬에서 파일 읽어 bulk INSERT하는 흐름도 설명해줘.

4-4. 뉴스 수집 · 감성분석

🤖 AI에게 물어보자
news(id, date, category, title, body) 테이블과 감성사전 테이블을 가정하고, 특정 날짜·카테고리 뉴스를 조회한 뒤 본문과 사전을 매칭해 점수 합을 구하는 처리 흐름을 의사코드로 설명해줘.
감성사전·크롤링 세부 규칙은 오픈소스 교안과 함께 진행합니다.