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,<,>등 사용.
- 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 불가.