[DB] 3. SQL 기초 개념과 CRUD
1. SQL이란?
SQL(Structured Query Language)은 관계형 데이터베이스에서 데이터를 관리하고 조작하기 위한 표준 언어입니다.
💡 SQL의 정의와 특징, 종류를 명확히 설명할 수 있어야 합니다!
1.1 SQL의 종류
- DDL (Data Definition Language)
- 데이터베이스 구조를 정의
- CREATE, ALTER, DROP, TRUNCATE
- DML (Data Manipulation Language)
- 데이터를 조작
- SELECT, INSERT, UPDATE, DELETE
- DCL (Data Control Language)
- 데이터베이스 접근 권한 관리
- GRANT, REVOKE
- 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 주요 키워드와 실행 순서
- FROM
- WHERE
- GROUP BY
- HAVING
- SELECT
- ORDER BY
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는 기본적인 데이터 처리 연산
- 실제 예제를 통한 실습이 중요
다음 포스트에서는 데이터베이스 설계와 정규화에 대해 알아보겠습니다.
댓글남기기