2 분 소요

1. SQL이란?

SQL(Structured Query Language)은 관계형 데이터베이스에서 데이터를 관리하고 조작하기 위한 표준 언어입니다.

💡 SQL의 정의와 특징, 종류를 명확히 설명할 수 있어야 합니다!

1.1 SQL의 종류

  1. DDL (Data Definition Language)
    • 데이터베이스 구조를 정의
    • CREATE, ALTER, DROP, TRUNCATE
  2. DML (Data Manipulation Language)
    • 데이터를 조작
    • SELECT, INSERT, UPDATE, DELETE
  3. DCL (Data Control Language)
    • 데이터베이스 접근 권한 관리
    • GRANT, REVOKE
  4. TCL (Transaction Control Language)
    • 트랜잭션 제어
    • COMMIT, ROLLBACK, SAVEPOINT

1.2 SQL의 특징

  • 대소문자 구분 없음 (단, 관례상 키워드는 대문자로 작성)
  • 세미콜론(;)으로 문장 구분
  • 자연어와 유사한 직관적인 문법

2. SQL 기본 문법과 구조

2.1 기본 문법 구조

SELECT column1, column2
FROM table_name
WHERE condition
GROUP BY column
HAVING condition
ORDER BY column;

2.2 주요 키워드와 실행 순서

  1. FROM
  2. WHERE
  3. GROUP BY
  4. HAVING
  5. SELECT
  6. ORDER BY

SQL순서

2.3 WHERE 절 조건식 활용

  • 비교 연산자: =, <>, <, >, <=, >=
  • 논리 연산자: AND, OR, NOT
  • 특수 연산자: BETWEEN, IN, LIKE, IS NULL

예시:

-- BETWEEN 사용
SELECT * FROM Students WHERE age BETWEEN 20 AND 25;

-- IN 사용
SELECT * FROM Students WHERE major IN ('컴퓨터공학', '소프트웨어공학');

-- LIKE 사용 (패턴 매칭)
SELECT * FROM Students WHERE name LIKE '김%';

[이미지: 각 조건식 사용 예시와 결과를 보여주는 테이블]

3. CRUD 연산

3.1 CREATE (생성)

[이미지: 테이블 생성과 데이터 삽입 과정을 보여주는 도식도]

-- 테이블 생성
CREATE TABLE Students (
    student_id INT PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    age INT,
    major VARCHAR(50)
);

-- 데이터 삽입
INSERT INTO Students (student_id, name, age, major)
VALUES (1, '김철수', 20, '컴퓨터공학');

3.2 READ (조회)

[이미지: SELECT 문의 실행 과정과 결과를 보여주는 도식도]

-- 기본 조회
SELECT * FROM Students;

-- 조건부 조회
SELECT name, age 
FROM Students 
WHERE major = '컴퓨터공학';

3.3 UPDATE (수정)

[이미지: UPDATE 실행 전후의 테이블 상태 비교]

UPDATE Students 
SET age = 21 
WHERE student_id = 1;

3.4 DELETE (삭제)

[이미지: DELETE 실행 과정을 보여주는 도식도]

DELETE FROM Students 
WHERE student_id = 1;

4. SQL 실습 예제

4.1 학사관리 데이터베이스 예제

[이미지: 학사관리 DB의 ERD 다이어그램]

-- 학생 테이블 생성
CREATE TABLE Students (
    student_id INT PRIMARY KEY,
    name VARCHAR(50),
    major VARCHAR(50)
);

-- 과목 테이블 생성
CREATE TABLE Courses (
    course_id INT PRIMARY KEY,
    course_name VARCHAR(50),
    professor VARCHAR(50)
);

-- 수강 테이블 생성
CREATE TABLE Enrollments (
    enrollment_id INT PRIMARY KEY,
    student_id INT,
    course_id INT,
    grade VARCHAR(2),
    FOREIGN KEY (student_id) REFERENCES Students(student_id),
    FOREIGN KEY (course_id) REFERENCES Courses(course_id)
);

4.2 다양한 조회 쿼리 예제

[이미지: 실제 테이블 데이터와 쿼리 결과를 비교하는 예시]

-- 학생별 수강 과목 조회
SELECT s.name, c.course_name
FROM Students s
JOIN Enrollments e ON s.student_id = e.student_id
JOIN Courses c ON e.course_id = c.course_id;

-- 과목별 평균 성적 조회
SELECT c.course_name, AVG(CASE 
    WHEN e.grade = 'A+' THEN 4.5
    WHEN e.grade = 'A' THEN 4.0
    -- ... 기타 등급
    END) as avg_grade
FROM Courses c
JOIN Enrollments e ON c.course_id = e.course_id
GROUP BY c.course_name;

4.3 JOIN의 이해

💡 JOIN의 종류와 차이점을 설명할 수 있어야 합니다!

[이미지: INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN을 벤 다이어그램으로 설명]

예시로 보는 각 JOIN의 차이:

-- INNER JOIN
SELECT s.name, c.course_name
FROM Students s
INNER JOIN Enrollments e ON s.student_id = e.student_id
INNER JOIN Courses c ON e.course_id = c.course_id;

-- LEFT JOIN (수강하지 않는 학생도 포함)
SELECT s.name, c.course_name
FROM Students s
LEFT JOIN Enrollments e ON s.student_id = e.student_id
LEFT JOIN Courses c ON e.course_id = c.course_id;

```

🎯 정리

  • SQL은 관계형 데이터베이스 표준 언어
  • DDL, DML, DCL, TCL로 구분
  • CRUD는 기본적인 데이터 처리 연산
  • 실제 예제를 통한 실습이 중요

다음 포스트에서는 데이터베이스 설계와 정규화에 대해 알아보겠습니다.

댓글남기기