728x90
2과목. SQL 기본 및 활용
1. 관계형 데이터베이스 개요
데이터베이스와 DBMS
- 데이터베이스: 데이터 집합 형식으로 구성된 데이터 모음
- DBMS: 데이터를 효과적으로 관리하기 위한 시스템(ORACLE, MYSQL 등)
관계형 데이터베이스 구성요소
- 계정: 데이터 접근 권한 관리
- 테이블: 데이터를 행(Row)과 열(Column)로 구성하여 저장하는 2차원 구조
- 스키마: 테이블 구성과 정보를 정의하는 구조
테이블 특징
- 하나의 테이블은 하나의 계정 소유
- 테이블간 관계(1:1, 1:N, N:M) 가능
- 다른 소유자의 같은 이름 테이블 가능
SELECT 문
SELECT [DISTINCT] 컬럼명 AS 별칭
FROM 테이블명;
함수의 종류와 사용법
단일 행 함수
문자 함수
- SUBSTR(문자열, 시작위치, 길이): 문자열 일부 반환
- 시작 위치가 음수면 뒤에서부터 계산
- LENGTH(문자열): 문자열 길이 반환
- 공백 문자도 길이에 포함
- RPAD(문자열, 길이, 문자): 문자열 오른쪽 패딩
- 지정한 길이보다 문자열 길이가 길면 문자열이 잘림
- RTRIM(문자열, '문자'): 우측 특정 문자 제거
- 제거 문자를 명시하지 않으면 공백 제거
숫자 함수
- SIGN(숫자): 부호 판단 (양수:1, 0:0, 음수:-1)
- MOD(숫자1, 숫자2): 나머지 반환
- 숫자2가 0이면 에러 발생
- CEIL(숫자): 올림
- FLOOR(숫자): 내림
날짜 함수
- TO_DATE(문자열, '포맷'): 날짜 형식 변환
- 포맷을 정확히 맞추지 않으면 오류 발생
변환 함수 (NULL)
- NVL(컬럼, 기본값): NULL 값을 기본값으로 대체
- COALESCE(값1, 값2, ...): 첫 번째 NULL 아닌 값 반환
- DECODE(값, 조건1, 결과1, 조건2, 결과2, 기본값): 조건에 따른 값 반환
- 조건과 결과 쌍을 명확히 입력해야 함
집계 함수
- SUM(컬럼): 합계
- AVG(컬럼): 평균
- COUNT(* 또는 컬럼): 행 개수 (*로 인자를 넘겨줄 시, NULL값을 포함하여 COUNT함)
- MAX(컬럼): 최대값
- MIN(컬럼): 최소값
WHERE 절
SELECT 컬럼명 FROM 테이블명 WHERE 조건;
GROUP BY 절
SELECT 컬럼명, 집계함수(컬럼)
FROM 테이블명
GROUP BY 컬럼명;
ORDER BY 절
SELECT 컬럼명
FROM 테이블명
ORDER BY 컬럼명 [ASC|DESC];
JOIN
INNER JOIN
SELECT * FROM 테이블1
INNER JOIN 테이블2
ON 테이블1.컬럼 = 테이블2.컬럼;
OUTER JOIN
- LEFT JOIN, RIGHT JOIN, FULL JOIN
SELECT * FROM 테이블1
LEFT JOIN 테이블2 ON 테이블1.컬럼 = 테이블2.컬럼;
NATURAL JOIN
SELECT * FROM 테이블1 NATURAL JOIN 테이블2;
서브쿼리
- 단일행 서브쿼리: 하나의 행 반환
- 다중행 서브쿼리: 여러 행 반환
- 다중열 서브쿼리: 여러 컬럼 반환
집합 연산자
- UNION: 중복 제거 후 합집합
- UNION ALL: 중복 포함 합집합
- INTERSECT: 교집합
- MINUS: 차집합
윈도우 함수
- ROW_NUMBER: 각 행에 고유번호 부여
- RANK: 동일 값 순위 동일하게 부여, 다음 순위 건너뜀
- DENSE_RANK: 동일 값 순위 동일하게 부여, 순위 건너뛰지 않음
계층형 질의
SELECT 컬럼, LEVEL
FROM 테이블
START WITH 조건
CONNECT BY PRIOR 부모컬럼 = 자식컬럼;
PIVOT과 UNPIVOT
- PIVOT: 행 데이터를 열로 변환
- UNPIVOT: 열 데이터를 행으로 변환
정규 표현식 함수
- REGEXP_LIKE: 패턴 포함 여부 판단
- REGEXP_COUNT: 패턴 발생 횟수 계산
- REGEXP_SUBSTR: 패턴 일치 부분 추출
- REGEXP_REPLACE: 패턴 일치 부분 다른 문자열로 교체
DML(Data Manipulation Language)
- INSERT: 데이터 삽입
- UPDATE: 데이터 수정
- DELETE: 데이터 삭제
TCL(Transaction Control Language)
- COMMIT: 트랜잭션 확정
- ROLLBACK: 트랜잭션 취소
- SAVEPOINT: 특정 지점 임시 저장
DDL(Data Definition Language)
- CREATE: 객체 생성
- ALTER: 객체 변경
- DROP: 객체 삭제
- TRUNCATE: 테이블의 모든 행 삭제(ROLLBACK 불가능)
DCL(Data Control Language)
- GRANT: 권한 부여
- REVOKE: 권한 회수
NULL의 이해
- 값 미정 상태, 비교 연산 시 UNKNOWN 반환 (IS NULL만 TRUE)
728x90