SQLD 요약정리

이지연·2025년 5월 28일

자격시험

목록 보기
2/3

데이터 모델링의 이해

1. 데이터 모델의 정의와 특징

  • 데이터 모델링이란?
    정보시스템 구축을 위해 데이터 관점에서 업무를 분석하고, 현실 세계의 데이터를 약속된 표기법으로 표현하는 과정
  • 특징
    • 추상화: 복잡한 현실을 단순화
    • 단순화: 불필요한 요소 제거
    • 명확성: 누구나 이해할 수 있도록 표현
  • 관점: 데이터(무엇을 저장할 것인가), 프로세스(업무 흐름), 상관(처리 방식)
  • 유의사항: 유연성, 유일성, 일관성
  • 모델링 3단계
    1. 개념적(추상, 업무 중심, ERD 생성)
    2. 논리적(정규화, 구체화, DBMS 종속적)
    3. 물리적(실제 DB 구현, 성능/저장고려)
  • DB 스키마 구조
    • 외부(뷰): 사용자별 관점
    • 개념(통합 사용자): 조직 전체 관점
    • 내부(물리): 실제 저장 구조
  • 데이터 독립성
    • 논리적 독립성: 개념 스키마 변경 시 외부 스키마 영향 없음
    • 물리적 독립성: 내부 구조 변경 시 외부/개념 스키마 영향 없음

2. 데이터 모델링의 3요소

엔터티

  • 정의: 업무에서 관리해야 하는 데이터 집합(단수 명사, 인스턴스의 집합)
  • 특징
    • 반드시 업무에 필요
    • 유일한 식별자 보유
    • 2개 이상 인스턴스, 2개 이상 속성, 관계를 가짐
  • 분류
    • 유형/무형 엔터티
    • 발생 시점: 기본, 중심, 행위 엔터티
  • 명명 규칙: 협업 용어 사용, 약어 지양, 단수 명사, 유일성, 명확성

속성

  • 정의: 더 분리되지 않는 최소 데이터 단위
  • 특징: 주식별자에 함수적으로 종속, 1개 속성은 1개 값만 가짐
  • 분류: 기본, 설계, 파생 / 단일·복합, 단일값·다중값
  • 도메인: 속성이 가질 수 있는 값의 범위

관계

  • 표기법: 관계명, 차수(1:1, 1:N, N:M), 선택사양(필수/선택)
  • ERD: 존재관계, 행위관계
  • UML: 연관관계(실선, 멤버변수), 의존관계(점선, 파라미터)
  • 식별/비식별관계
    • 식별관계: 자식 식별자에 부모 식별자 포함(실선)
    • 비식별관계: 자식 일반 속성에 부모 식별자 포함(점선)

식별자

  • 정의: 엔터티를 유일하게 대표하는 속성(유일성, 최소성, 불변성, 존재성)
  • 분류
    • 주식별자/보조식별자
    • 내부/외부식별자
    • 단일/복합식별자
    • 본질/인조식별자

데이터 모델과 SQL

1. 정규화

단계내용
1정규형모든 속성은 반드시 하나의 값(원자값)만 가짐
2정규형일반 속성은 주식별자 전체에 종속(부분함수종속성 제거)
3정규형일반 속성 간 이행함수종속성 제거
BCNF후보키의 일부에 함수적 종속인 속성 분리

2. 관계와 조인의 이해

  • 조인: 식별자를 상속, 매핑 키로 데이터 결합
  • 식별관계: 부모 식별자를 자식 식별자에 포함
  • 비식별관계: 부모 식별자를 자식 일반 속성에 상속(조인 빈번)

3. 트랜잭션의 이해

  • IE/바커 표기법: 필수/선택적 관계 실선·점선으로 구분

4. Null 속성의 이해

  • Null: 아직 정의되지 않은 값(0이나 공백과 다름)
  • 특징
    • NOT NULL/PK 외에는 허용
    • NVL, ISNULL 등으로 처리
    • 집계함수에서 제외
    • Null 연산 결과는 Null, 비교는 Unknown

5. 본질식별자 vs. 인조식별자

  • 인조식별자: 본질식별자가 복잡할 때 사용, 중복 방지 어려움, 인덱스 추가 필요, 꼭 필요할 때만 사용

SQL 기본 및 활용

1. 관계형 데이터베이스 개요

  • DBMS: 효율적 데이터 관리, 복구 시스템
  • SQL 명령어 분류
분류명령어설명
DMLSELECT, INSERT, UPDATE, DELETE데이터 조작
DDLCREATE, ALTER, DROP, RENAME, TRUNCATE데이터 구조 정의
DCLGRANT, REVOKE권한 관리
TCLCOMMIT, ROLLBACK트랜잭션 제어
  • 집합 연산자: UNION, INTERSECTION, DIFFERENCE, PRODUCT(CROSS JOIN)
  • 관계 연산자: SELECT, PROJECT, (NATURAL) JOIN, DIVIDE

2. SELECT문

SELECT ALL/DISTINCT/(*) 칼럼명 … FROM 테이블명 …
  • ALIAS: 칼럼명 뒤, AS 사용 가능, 공백·특수문자·대소문자 구분 시 인용부호 사용
  • 합성연산자
    • Oracle: ||
    • SQL Server: +
    • CONCAT 함수
  • 실행순서: FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY

3. 함수

  • 문자형: CONCAT, UPPER, LOWER, SUBSTR, LENGTH, TRIM 등
  • 숫자형: ROUND, ABS, POWER, CEIL, FLOOR, MOD 등
  • 날짜형: DATEADD, DATEDIFF, YEAR, MONTH, DAY 등
  • 변환형: CAST, CONVERT, TO_CHAR 등
  • NULL 관련
    • NVL: NULL이면 대체값
    • NVL2: NULL/비NULL에 따라 값 선택
    • NULLIF: 두 값 같으면 NULL
    • COALESCE: 여러 값 중 NULL이 아닌 첫 값

4. WHERE, GROUP BY, HAVING, ORDER BY

  • WHERE: 조건식, 비교/논리/부정 연산자, CASE/DECODE 등
  • GROUP BY: 소그룹별 집계
  • HAVING: 집계조건 필터
  • ORDER BY: 정렬(기본 오름차순), 오라클/SQL의 NULL 처리 차이

5. 조인

  • PK/FK 기반
  • DBMS 옵티마이저: FROM절 데이터 2개씩 묶어 처리
  • EQUI JOIN: '=' 연산자
  • 종류
    • INNER JOIN: 동일값만 반환
    • NATURAL JOIN: 동일 칼럼명 기준
    • USING/ON: 조건 명시
    • CROSS JOIN: 카타시안 조합
    • OUTER JOIN: 외부조인

SQL 활용 고급

1. 서브쿼리

  • 연관/비연관: 메인 쿼리 칼럼 포함 여부
  • 단일행/다중행/다중칼럼
  • 다중행 비교 연산자: IN, ANY, ALL, EXISTS
  • 스칼라 서브쿼리: SELECT절에서 한 행·한 칼럼 반환
  • 인라인 뷰: FROM절에서 임시 테이블처럼 사용

2. 집합 연산자

연산자설명
UNION중복 제거
UNION ALL전체 합침
INTERSECT교집합, 중복 제거
EXCEPT차집합, 중복 제거

3. 그룹함수

  • NULL 제외 집계
  • ROLLUP: 계층 구조 소계/합계
  • CUBE: 모든 조합 소계/합계
  • GROUPING SETS: 지정 조합만 소계

4. 윈도우 함수

  • 결과 건수 영향 없음
  • 종류
    • 순위: ROW_NUMBER, RANK, DENSE_RANK
    • 집계: SUM, AVG, MAX, MIN, COUNT
    • 행 순서: FIRST_VALUE, LAST_VALUE, LAG, LEAD
    • 비율: PERCENT_RANK, CUME_DIST, NTILE
  • 문법
SELECT,
RANK() OVER (PARTITION BYORDER BY) AS 순위
FROM 테이블명
  • 윈도잉절: BETWEEN, UNBOUNDED, N PRECEDING/FOLLOWING, CURRENT ROW

5. Top N 쿼리, 계층형 질의, 셀프조인

  • Top N: ORDER BY로 정렬 후, LIMIT/FETCH/TOP(n)으로 상위 N개 선택
  • 계층형 질의: CONNECT BY, START WITH, 재귀 CTE
  • 셀프조인: 동일 테이블 간 조인, 별칭 필수

6. 뷰의 장점

  • 독립성: 물리적 구조 변경 시 논리적 구조 유지
  • 편리성: 복잡한 쿼리 단순화
  • 보안성: 접근 제한

SQL 관리 구문 및 트랜잭션

1. 제약조건

종류설명
PRIMARY KEYNull 불가, 대표 키
UNIQUE고유 값 보장, Null 1개 허용
NOT NULLNull 불가
CHECK조건 만족 값만 허용
FOREIGN KEY참조 무결성, Null 가능
  • ALTER TABLE로 추가/변경

2. 트랜잭션 특성(ACID)

  • 원자성: 모두 실행/전혀 실행X
  • 일관성: 연산 전후 무결성 유지
  • 고립성: 트랜잭션 간 영향X
  • 지속성: 성공 시 영구 저장

3. DELETE/INSERT 액션, DROP/TRUNCATE/DELETE 차이

구분DROPTRUNCATEDELETE
ROLLBACK불가불가가능
스토리지 반환반환반환미반환
테이블 정의삭제유지유지

4. DB 키의 종류

설명
기본키Null 불가, 대표 키
후보키유일성, 최소성
슈퍼키유일성
대체키기본키 제외 후보키
외래키참조 무결성, Null 가능
고유키고유 값 보장, Null 1개 허용

5. SQL 기본 문법

-- 데이터 조회SELECT * FROM 테이블명;
-- 데이터 삽입INSERT INTO 테이블명 (칼럼1, 칼럼2) VALUES (1,2);
-- 데이터 수정UPDATE 테이블명 SET 칼럼1 =1 WHERE 조건;
-- 데이터 삭제DELETE FROM 테이블명 WHERE 조건;
-- 테이블 생성CREATE TABLE 테이블명 ();
-- 테이블 변경ALTER TABLE 테이블명 …;
-- 테이블 삭제DROP TABLE 테이블명;
-- 권한 부여/회수GRANT 권한 TO 사용자;REVOKE 권한 FROM 사용자;
-- 트랜잭션 제어COMMIT;ROLLBACK;
profile
Eazy하게

1개의 댓글

comment-user-thumbnail
2025년 11월 5일

옵티마이저 옵티마이저~

답글 달기