🗄️ 데이터베이스, 질문하며 배우기
MariaDB / MySQL · SQL · 선행: 파이썬 또는 자바 · HeidiSQL로 실습
수업 진행
🤖
질문
SQL·개념을 LLM에 물어보기
💾
실행
HeidiSQL / MariaDB에서 직접 실행
👩🏫
리뷰
화상으로 JOIN·정규화 등 핵심 정리
앞: CRUD·제약 · 중간: JOIN·집계 · 뒤: 정규화·트랜잭션·프로시저
1-1. 데이터베이스가 필요한 이유
🤖 AI에게 물어보자
엑셀·메모장과 비교해 관계형 데이터베이스가 필요한 이유를 크기·정확성·보안·검색·중복 측면에서 설명해줘. 테이블·행·열·PK·FK도 초보자용으로 알려줘.
👩🏫 선생님 리뷰
- 테이블 = 표, 행 = 레코드, 열 = 필드
- 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 퀴즈 (샘플 스키마)
연습 문제 예시
- employee_id < 5 인 행
- name만 조회
- id가 1,2,4 인 행 (IN)
- hourly_pay 수정
- LIKE로 이름 검색
- GROUP BY로 직원별 판매 수
- 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) 테이블과 감성사전 테이블을 가정하고, 특정 날짜·카테고리 뉴스를 조회한 뒤 본문과 사전을 매칭해 점수 합을 구하는 처리 흐름을 의사코드로 설명해줘.
감성사전·크롤링 세부 규칙은 오픈소스 교안과 함께 진행합니다.