SQL 기초

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;

💡 학습자를 위한 팁

  1. 구문 실행 순서: 눈으로 읽을 때는 SELECT가 먼저지만, 컴퓨터는 FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY 순으로 처리합니다. 이 순서를 알면 오류 수정이 쉽습니다.
  2. NULL 처리: NULL은 0이나 공백이 아닙니다. WHERE 컬럼 = NULL이 아니라 WHERE 컬럼 IS NULL로 조회해야 합니다.
  3. 세미콜론(;): 쿼리의 끝에는 반드시 세미콜론을 붙여 문장이 끝났음을 알려주세요.

이 흐름대로 직접 샘플 데이터를 넣고 쿼리를 작성해 보시는 것이 가장 빠른 학습 방법입니다. 혹시 특정 구문에 대한 상세한 연습 문제가 필요하신가요?


© 2020. AiDALab Co. All rights reserved.

Powered by Hydejack v9.2.1