SQL 기초
- 1. 데이터베이스와 SQL의 이해
- 2. 데이터 정의어 (DDL: Data Definition Language)
- 3. 데이터 조작어 (DML: Data Manipulation Language)
- 4. 데이터 조회 (SELECT) - 가장 중요한 파트
- 5. 집계와 그룹화 (GROUP BY)
- 6. 테이블 합치기 (JOIN)
- 💡 학습자를 위한 팁
SQL 기초 과정은 데이터베이스의 개념을 잡고, 데이터를 자유자재로 뽑아낼 수 있는 능력을 키우는 단계입니다. 학습자가 단계별로 따라올 수 있도록 개념 - 문법 - 실습 사례 순으로 구성했습니다.
1. 데이터베이스와 SQL의 이해
- DBMS (Database Management System): 데이터를 효율적으로 관리하고 저장하는 소프트웨어 (예: MySQL, Oracle, PostgreSQL).
- SQL (Structured Query Language): DBMS와 대화하기 위한 표준 언어.
- 테이블(Table) 구조: 데이터는 행(Row, 레코드)과 열(Column, 필드)로 구성된 표 형태로 저장됩니다.
2. 데이터 정의어 (DDL: Data Definition Language)
데이터의 ‘틀’을 만드는 단계입니다.
2.1 테이블 생성 (CREATE)
CREATE TABLE students (
student_id INT PRIMARY KEY, -- 고유 식별자 (기본키)
name VARCHAR(50) NOT NULL, -- 이름 (빈 값 허용 안 함)
age INT, -- 나이
email VARCHAR(100) UNIQUE, -- 이메일 (중복 불가능)
joined_date DATE DEFAULT (CURRENT_DATE) -- 가입일 (기본값 오늘)
);
2.2 테이블 수정 및 삭제 (ALTER, DROP)
- 컬럼 추가:
ALTER TABLE students ADD phone VARCHAR(20); - 테이블 삭제:
DROP TABLE students;
3. 데이터 조작어 (DML: Data Manipulation Language)
데이터를 ‘넣고, 바꾸고, 지우는’ 단계입니다.
- 데이터 삽입:
INSERT INTO students (student_id, name, age) VALUES (1, '김철수', 20); - 데이터 수정:
UPDATE students SET age = 21 WHERE student_id = 1; - 데이터 삭제:
DELETE FROM students WHERE student_id = 1;
4. 데이터 조회 (SELECT) - 가장 중요한 파트
원하는 데이터를 골라내는 과정입니다. 쿼리 실행 순서를 이해하는 것이 핵심입니다.
4.1 기본 구조
SELECT 컬럼명
FROM 테이블명
WHERE 조건
ORDER BY 정렬기준;
4.2 필수 구문 정리
- 별칭 (Alias):
SELECT name AS "이름" FROM students; - 중복 제거:
SELECT DISTINCT age FROM students; - 비교 연산자:
=,<>,>,<,BETWEEN A AND B,IN (값1, 값2) - 논리 연산자:
AND,OR,NOT - 패턴 매칭:
WHERE name LIKE '김%'(김으로 시작하는 모든 이름)
5. 집계와 그룹화 (GROUP BY)
데이터를 뭉쳐서 통계를 내는 과정입니다.
- 집계 함수:
COUNT()(개수),SUM()(합계),AVG()(평균),MAX/MIN(최대/최소) - 그룹화: 특정 컬럼을 기준으로 데이터를 묶습니다.
- HAVING: 그룹화된 결과에 조건을 걸 때 사용합니다. (
WHERE와 차이점 주의)
SELECT age, COUNT(*) as student_count
FROM students
GROUP BY age
HAVING COUNT(*) >= 5; -- 학생 수가 5명 이상인 나이대만 출력
6. 테이블 합치기 (JOIN)
여러 테이블에 흩어진 정보를 하나로 합치는 기술입니다.
- INNER JOIN: 두 테이블에 공통으로 존재하는 데이터만 연결.
- LEFT (OUTER) JOIN: 왼쪽 테이블의 모든 데이터와 오른쪽의 매칭되는 데이터 연결. (매칭 안 되면 NULL)
-- 학생 테이블과 수강신청 테이블 조인 예시
SELECT s.name, c.course_name
FROM students s
INNER JOIN courses c ON s.student_id = c.student_id;
💡 학습자를 위한 팁
- 구문 실행 순서: 눈으로 읽을 때는
SELECT가 먼저지만, 컴퓨터는FROM->WHERE->GROUP BY->HAVING->SELECT->ORDER BY순으로 처리합니다. 이 순서를 알면 오류 수정이 쉽습니다. - NULL 처리:
NULL은 0이나 공백이 아닙니다.WHERE 컬럼 = NULL이 아니라WHERE 컬럼 IS NULL로 조회해야 합니다. - 세미콜론(;): 쿼리의 끝에는 반드시 세미콜론을 붙여 문장이 끝났음을 알려주세요.
이 흐름대로 직접 샘플 데이터를 넣고 쿼리를 작성해 보시는 것이 가장 빠른 학습 방법입니다. 혹시 특정 구문에 대한 상세한 연습 문제가 필요하신가요?