1과목
1. 데이터 모델링 유의점
≫ 중복성, 유연성, 비일관성
2. 데이터 스키마 구조 단계 - 외부, 개념, 내부
≫ View 단계는 여러 사용자 관점으로 구성하는 외부 스키마에 해당
≫ 논리적인 데이터 독립성을 고려하는 단계는 외부, 개념적 단계
≫ 물리적인 저장구조를 표현하는 스키마는 내부스키마
≫ 통합된 모든 사용자의 관점은 개념스키마와 관련있음
3. 엔티티 특징
≫ 영속적으로 존재하는 인스턴스의 집합이어야함
≫ 발생시점에 따라 구분할수있는건 행위, 중심, 기본 엔티티
≫ 엔티티에 이름을 부여할때 가능하면 약어를 사용안함
4. 속성의 특징
≫ 인스턴스에서 관리하고자 하는 의미상 더이상 분리 되지않은 최소 데이터 단위
≫ 하나의 인스턴스에서 각각의 속성은 한개의 속성값을 가짐
≫ 이름을 부여할때 데이터 모델에서 유일성을 확보
≫ 속성이 가질수 있는 값의 범위는 도메인
5. 식별자의 종류
≫ 대표성을 가지는거에 따라 주식별자(PK) / 보조식별자 (FK)
≫ 엔티티 내에서 스스로 생성되었는지에 따라 내부식별자 / 외부식별자
≫ 단일속성으로 식별이 되냐에따라 단일식별자 / 복합식별자
≫ 업무적으로 의미가 있던 식별자를 대체하여 새로 만드는지에 따라 인조식별자 / 본질식별자
6. 정규형
≫ 제 1정규형 : 모든 속성은 하나의 값을 가진다
| 학생ID | 이름 | 수강과목 |
| 1 | 철수 | 수학 |
| 1 | 철수 | 영어 |
| 1 | 철수 | 과학 |
≫ 제 2정규형 : 엔티티의 일반속성은 주식별자 전체에 종속이어야 한다
학생 테이블
| 학생ID | 이름 |
| 1 | 철수 |
수강 테이블
| 학생ID | 수강과목 |
| 1 | 수학 |
| 1 | 영어 |
≫ 제 3정규형 : 엔티티의 일반속성간에 서로 종속적이지 않다
학생-수강 테이블
| 학생ID | 과목 |
| 1 | 수학 |
| 1 | 영어 |
과목-교수 테이블
| 과목 | 교수이름 |
| 수학 | 김교수 |
| 영어 | 이교수 |
7. NULL의 특징
≫ 모르는값, 값의 부재를 의미함
≫ NULL과의 모든 비교는 unknown을 반환, 집계함수에서는 제외 처리
≫ 오라클에서는 insert할때 '' 로 넣으면 null로 들어감
≫ NULL을 포함한 연산은 NULL
8. NULL 관련 함수
≫ NVL, ISNULL : 첫번째 결과값이 NULL이면 두번째 값을 출력
≫ NULLIF : 첫번째, 두번째 값이 같으면 NULL, 아니면 첫번째 값을 출력
≫ COALESCE : 여러 값중 NULL이 아닌 최초의 값을 출력, 없으면 NULL 출력
9. SELECT 관련 내용
≫ 실행순서 : FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY
≫ 시간 관련 계산 : 1->24시간으로 계산 ex) 1/24/(60/30) : 1시간
≫ EXIST : 안에 조건이 존재해야만 결과를 출력, NOT EXIST는 반대
10. JOIN 관련 내용
≫ 순수 관계 연산자 : SELECT, PROJECT, (NATURAL)JOIN, DIVIDE
≫ 카타시안 곱 : 두 테이블간에 조인조건 없이 조인하면 모든 가능한 곱 (AxB) ex) CROSS JOIN
≫ USING 절은 같은 컬럼을 기준으로 조인하기 때문에 접두사(Alias) 를 붙일수 없음
≫ (+) 표시는 오라클에서 OUTER JOIN을 의미함 (조인 조건에 포함)
11. GROUP BY 관련 내용
≫ GROUPING SET(COL1) : GROUP BY 를 UNION ALL로 합친것 ex) COL1
≫ ROLLUP(COL1) : 위에서 아래로 누적 요약 ex) COL1, 전체
≫ CUBE(COL1,COL2) : 모든 가능한 조합으로 계산 ex) COL1, COL2, (COL1, COL2), 전체
12. 집합 연산자
≫ UNION : 여러 결과에 대한 합집합, 중복 없음
≫ UNION ALL : 여러 결과에 대한 합집합, 중복 있음
≫ INTERSECT : 여러 결과에 대한 교집합, 중복 없음
≫ EXCEPT, MINUS : 앞의 결과에서 뒤의 결과에 대한 차집합, 중복 없음
13. 계층 관련 내용
≫ PRIOR : CONNECT BY 절에 사용되며, PRIOR 자식 = 부모 형태는 부모->자식 방향으로 전개됨
≫ 루트 노드의 LEVEL 값은 1
≫ 오라클 계층형 질의문에서 PRIOR은 SELECT, WHERE, CONNECT BY 절에서 사용
≫ START WITH 절은 계층구조의 시작위치
≫ ORDER SIBLINGS BY : 동일 계층끼리 정렬 수행
14. RANK 관련 내용
≫ PERCENT_RANK : 파티션별 윈도우에서 먼저나오면 0, 늦으면 1로 값이 아닌 행의 순서별 백분율을 구함
≫ DENSE_RANK : 순위 구하는 함수, 중간 순위를 비워두지 않음 ex) 1,1,2,3,3...
≫ CUME_DIST : 파티션별 윈도우의 전체건수에서 현재 행보다 작거나 같은건수에 대한 누적 백분율을 구함
≫ RANK : ORDER BY 에 의한 순위 구함, 중간 순위를 비워둠 ex) 1,1,3,4,4...
≫ RATIO_TO_REPORT : 주어진 컬럼 값의 합계에 대한 행렬 백분율을 소수점으로 구함
≫ NTILE : 전체건수를 N 등분한 결과
15. VIEW 관련 내용
≫ 인라인뷰 : FROM 절에서 사용되는 서브쿼리를 말함
≫ 사용시 장점 : 독립성 - 테이블 구조가 변경되어도 뷰는 변경하지 않아도됨, 편리성 - 복잡한 질의를 단순하게 작성가능, 보안성 - 민감한 정보는 컬럼을 빼고 생성가능
16. DDL 관련 내용
≫ SQL SERVER 에서는 여러개의 컬럼을 동시에 수정하는 구문은 지원하지 않음
≫ 컬럼 제거시 ALTER TABLE 테이블명 DROP COLUMN 컬럼명;
≫ TRUNCATE : 테이블에서 데이터를 제거함, 되돌릴수 없음, DELETE 보다 빠름
17. 트랜잭션 의 특성
≫ 트랜잭션 : 데이터베이스의 논리적 연산 단위
≫ 원자성 : 트랜잭션의 정의된 연산들은 모두 성공적으로 실행되든지, 실행 안된 상태로 남아있어야함
≫ 일관성 : 트랜잭션이 실행되기 전의 데이터베이스 내용이 잘못되어있지 않으면 실행되서도 문제 없어야함
≫ 고립성 : 트랜잭션이 실행되는 도중 다른 트랜잭션의 영향을 받아 잘못되면 안됨
≫ 지속성 : 트랜잭션이 성공적으로 수행되면 갱신된 내용은 영구적으로 저장됨
18. 참조동작 관련 내용
≫ CASCADE : 부모 삭제시 자식도 같이 삭제
≫ SET NULL : 부모 삭제시 자식 해당 필드 NULL
≫ SET DEFAULT : 부모 삭제시 자식 해당 필드 DEFAULT
≫ RESTRICT : 자식 테이블에 PK값이 없는 경우만 부모 삭제 허용
≫ DEPENDENT : 부모 테이블에 PK가 존재할때만 자식 입력 허용
≫ AUTOMATIC : 부모 테이블에 PK가 없는 경우 부모 PK를 생성후 자식 입력
'SQL' 카테고리의 다른 글
| [SQL] 쿼리 튜닝 정리 (0) | 2025.10.17 |
|---|---|
| [SQL] Oracle Flashback Query 정리 (0) | 2025.10.14 |
| [SQL] 자주 쓰는 MSSQL 함수 정리 (0) | 2025.03.27 |
| [SQL] 자주 쓰는 PostgreSql 함수 정리 (0) | 2022.09.02 |
| [SQL] 자주 쓰는 Mysql 함수 정리 (3) | 2021.08.27 |