Taeyoung Kim

Data Systems

SQL 프로그래밍 교안 정리

SQL 프로그래밍 교안 정리 학습 내용을 정리한 백필 노트입니다.

이 글은 2025년 학습 기록을 블로그 형식으로 정리한 백필 노트입니다.

1. DBMS와 SQL 개요

  • DBMS 개요
    • 방대한 데이터를 효율적으로 저장·검색·관리하는 시스템 소프트웨어.
    • 가장 일반적인 형태는 RDBMS.
    • 기능: 데이터 입력, 수정, 삭제, 관리.
  • DBMS 역사
    • 1960년대: 계층형 DBMS
    • 1970년대: 망형 DBMS
    • 1970년: 에드거 F. 커드, 관계형 모델 제안
    • 1979년: 최초 상용 RDBMS인 Oracle 등장
    • 1983년: IBM DB2 발표
    • 1986년: ANSI SQL 표준 제정
    • 1990년: OLTP 사용
    • 1994년: 분산 DB
    • 1997년: ORDBMS, OODBMS 등장
  • RDBMS
    • 관계형 DB: 테이블 간 일부 컬럼을 중복하여 관계 정의.
    • Oracle이 최초의 상용 RDBMS 제작.
    • 장점: 적응성, 유지보수 편리, 생산성 높음.
    • 종류: Oracle, IBM DB2, MS SQL Server 등.
  • 관계(Relationship)
    • 두 테이블 간 업무적 연관성.
    • 부모 테이블 기본키 → 자식 테이블 외래키.
  • SQL(Structured Query Language)
    • RDBMS 데이터를 관리하기 위한 특수 목적 프로그래밍 언어.
    • 기능: 검색·수정·스키마 생성·관리.
    • 명령어 종류
      • Query: SELECT
      • DML: INSERT, UPDATE, DELETE, MERGE
      • DDL: CREATE, ALTER, DROP, RENAME, TRUNCATE
      • TCL: COMMIT, ROLLBACK, SAVEPOINT
      • DCL: GRANT, REVOKE
  • DBMS 연결 도구
    • CLI (Command Line Interface)
    • GUI (Graphic User Interface)

2. SELECT와 연산

  • SELECT 문 구조
    • 테이블 전체 검색: SELECT * FROM emp;
    • 특정 컬럼 검색: SELECT empno, ename FROM emp;
  • 연산 표현식
    • 연결 연산자 (||) : 컬럼·문자 결합
    • 산술 연산자: +, -, *, /
    • 우선순위: 곱·나눗셈 > 덧·뺄셈 (괄호로 우선순위 변경 가능)
  • Column 별칭
    • AS 키워드로 별칭 지정 (생략 가능)
    • 공백/특수문자는 큰따옴표 사용.
  • 중복 행 제거
    • DISTINCT 사용 → 고유 조합만 출력.
  • 데이터 정렬
    • ORDER BY 사용.
    • ASC(오름차순, 기본값), DESC(내림차순).
  • Null
    • 값 없음, 0이나 공백과 다름.
    • Null과의 연산 결과는 항상 Null.

3. 조건과 함수

  • WHERE 절
    • 조건 검색 가능.
    • 문자열·날짜는 작은따옴표로 묶음.
  • 조건의 유형
    • Join 조건 (=)
    • 범위 조건 (>, <, BETWEEN)
    • 열거 조건 (IN)
    • 상태 조건 (IS NULL)
    • 패턴 조건 (LIKE %, LIKE _)
  • 논리 연산자
    • AND, OR, NOT
  • 함수 개요
    • 데이터 계산, 형식 변환, 자료 변환.
    • 종류: 단일행 함수, 그룹 함수.
  • 단일행 함수
    • 문자 함수, 숫자 함수, 날짜 함수, 변환 함수, 기타 함수.
  • 문자 함수
    • LOWER, UPPER, INITCAP, CONCAT, SUBSTR 등.
  • 숫자 함수
    • ROUND, TRUNC, MOD, ABS, FLOOR, CEIL, POWER 등.
  • 날짜 함수
    • SYSDATE, SYSTIMESTAMP, ADD_MONTHS, MONTHS_BETWEEN, LAST_DAY, NEXT_DAY, ROUND, TRUNC
  • 변환 함수
    • 데이터 타입 변환 함수 (TO_CHAR, TO_DATE 등).
  • 기타 함수
    • DECODE, NVL, NVL2, COALESCE, NULLIF, CASE 등.
  • 그룹 함수(집계 함수)
    • SUM, AVG, COUNT, MAX, MIN 등.
  • 그룹 함수 구문
SELECT 그룹함수, 컬럼
FROM 테이블명
WHERE 조건
GROUP BY 컬럼
HAVING 그룹조건
ORDER BY 컬럼;

4. JOIN과 Subquery

  • Join 개요
    • 여러 테이블 질의 시 사용.
    • 종류: Equi Join, Non-Equi Join, Self Join, Outer Join.
    • 표기법: 오라클 방식 / ANSI 표준 방식.
  • Equi Join
    • = 연산자 이용.
    • Primary Key ↔ Foreign Key 관계.
  • Non-Equi Join
    • BETWEEN, &lt;, > 등 사용.
  • Self Join
    • 동일 테이블 내 조인 시 별칭 사용.
  • Outer Join
    • 한쪽 테이블 기준으로 다른 테이블이 없어도 추출.
    • 종류: LEFT, RIGHT, FULL OUTER JOIN.
  • ANSI Join
    • CROSS JOIN, NATURAL JOIN, JOIN USING, JOIN ON.
  • Sub Query
    • 메인쿼리 안에 포함된 쿼리.
    • SELECT, INSERT, UPDATE, DELETE 모두 사용 가능.
  • Sub Query 종류
    • 단일 행 서브쿼리 (=, <, >)
    • 다중 행 서브쿼리 (IN, ANY, ALL)
    • 다중 열 서브쿼리

5. DML (데이터 조작어)

  • DML 개요
    • INSERT, UPDATE, DELETE, MERGE
  • INSERT
INSERT INTO table (column, …)
VALUES (value, …);
  • UPDATE
UPDATE table
SET column = value
WHERE 조건;
  • DELETE
DELETE FROM table
WHERE 조건;

6. DDL (데이터 정의어)

  • DataType
    • 테이블명, 열 이름, 데이터 타입·크기 필수.
  • Table 생성
CREATE TABLE table_name (
  columnName DataType [NULL | NOT NULL] [constraint]
);
DESC table_name;
  • 제약조건 (Constraints)
    • PRIMARY KEY: 유일, NOT NULL, 자동 INDEX.
    • UNIQUE: 중복 불가, NULL 허용.
    • FOREIGN KEY: 다른 테이블의 PRIMARY KEY 참조.
    • CHECK: 조건 만족 값만 허용.
    • NOT NULL: Null 불가.