반응형
https://getupnote.com/share/notes/kCe5pUAQrSVxgwnBg9eb25PxoJm1/31e96445-e889-4c44-ab35-16db4148a4a1
SQLD
세로 연산에 다른 인스턴스 데이터와 연산할 때는 NULL을 제외함 ex) SELECT SUM(COL1), SUM(COL2) FROM SAMPLE WHERE COL2>5; → NULL과의 비교연산 결과는 항상 NULL이기때문에, COL2>5조건을 만족하는 행은 3행만 해
getupnote.com
그냥 이 위에 업노트 보세요
그냥 복사붙여넣기하니까 짤리네
SQLD
- 모델링(Modeling) - 현실 세계를 추상화, 단순화, 명확화하기 위해 일정한 표기법에 의해 표현
- 모델링이 갖춰야 할 조건
- 모델링의 특징
- 모델링의 세 가지 관점
- 데이터의 품질을 보장하기 위한 모델링 시 유의사항
- 모델링의 3가지 단계
- 데이터모델링은 개념적 → 논리적 → 물리적 단계로 표현
- 3단계 스키마 구조 : 애플리케이션에 영향을 주지 않고 DB의 구조를 변경할 수 있어야 독립성이 보장되기 때문
구분 외부스키마(External) 개념스키마(Conceptual) 내부스키마(Internal) 관점명 Multi User's view Community View of DB Physical Representation 설명 각 사용자가 보는 DB의 스키마를 정의 모든 사용자가 보는 DB의 스키마를 통합 물리적인 저장 구조를 나타냄 DB에 저장되는 데이터를 표현하고 데이터들 간 관계를 나타냄 실질적인 데이터 저장 구조나 컬럼 정의, 인덱스 등을 포함 - 3단계 스키마 구조가 보장하는 독립성 : 사용자들의 관점과 DB가 실제로 표현되는 물리적인 방식을 분리하여 독립성을 보장하기 위함.
- ERD 작성 순서
- 시스템 분석을 위한 모델링의 기능
- IE/Crow's Foot 표기법
ㅁ 엔티티(ENTITIY)를 나타냄 관계를 나타냄 |---0 수직선+원
한 쪽에 하나의 엔티티만 연결|----<(삼지창임) 1:N관계
한 쪽에 여러 엔티티가 연결됨Entity A <----< 관계 >----> Entity B M:N관계
여러개의 엔티티와 연결됨ㅡㅡㅡㅡㅡㅡㅡ(실선) 부모 엔티티 식별자가 자식 엔티티 식별자와 주 식별자 ㅡ ㅡ ㅡ ㅡ ㅡ (점선) 부모 엔티티의 식별자가 자식 엔티티의 비식별자 - 엔티티 - 독립체를 의미함.
식별이 가능한 객체라는 의미를 가지고 있음. 데이터를 용도별로 분류한 그룹 - 엔티티 : Table
인스턴스 : Row(행)
속성 : Column(열) - 엔티티의 특징
- 엔티티의 종류
-
속성(Attribute)
- 엔티티, 인스턴스, 속성, 속성값의관계
엔티티 | |--- 인스턴스 | |--- 속성 | |--- 속성값
1. 하나의 엔티티는 두 개 이상의 인스턴스를 갖는다
2. 한 개의 인스턴스는 두 개 이상의 속성을 갖는다
3. 한 개의 속성은 하나의 속성값을 갖는다 - 속성의 분류
- 도메인(Domain)
속성이 가질 수 있는 속성값의 범위, ex) 우편번호는 5자리, 정의시 데이터 타입과 크기로 나타낼 수 있음 - 관계(Relationship)
엔티티와 엔티티의 관계를 의미함 - 관계 표기법
- 식별자(Identifiers)
- 정규화(Normalization)
- 반정규화(De-Normalization)
- 트랜젝션(Transaction)
- NULL
- 관계형 데이터베이스(Relational Database)
- SQL(Structured Query Language) - DB에서 데이터를 다루기 위해 사용하는 언어
- 서브쿼리(Sub Query)
하나의 쿼리 안에 존재하는 또 다른 쿼리, 부모쿼리가 메인쿼리 자식쿼리가 서브쿼리라고 부른다. - 뷰(View)
특정 SELECT문에 이름을 붙여 재사용이 가능하도록 지정해놓은 오브젝트, 테이블처럼 사용할 수 있음
가상 테이블이다. 실제 데이터를 저장하지는 않고, 해당 데이터를 조회해오는 SELECT문만 가지고 있다.
VIEW를 쓰면 보안성, 독립성, 편리성 확보 가능 - 집합연산자
- 그룹함수
데이터를 GROUP BY하여 나타낼 수 있는 데이터를 구하는 함수
집계함수 COUNT, SUM, AVG, MAX, MIN 등 소계 ROLLUP, CUBE, GROUPING SETS 등 - ROLLUP - 계층적 집계를 수행, 기준 컬럼의 순서대로 부분합(SUBTOTOAL)과 전체합(GRAND TOTAL)을 반환
부분합+전체합이 포함됨
커피와 음료를 모두 합친 값이 제시된다 → 롤업 - CUBE - 모든 조합의 집계를 계산
모든 조합(각 열의 부분합 및 전체합)을 반환, ROLLUP과 달리 순서에 상관하지않고 모든조합의 집계 수행
소계를 따로 집계함
커피와 음료와 알바생별 매출과 모든게 합쳐진다 → 큐브 - GROUPING SETS - 사용자가 원하는 집계 계산만 명시적으로 지정
ROLLUP이나 CUBE보단 유연하게, 원하는 집계조합만 계산 가능
##문제를 보고 빠르게 판단하는 방법 #결과를 확인 - 결과에 모든 조합이 포함되어 있다면? -> CUBE - 특정 필드에 대해 부분합과 전체합만 있다면? -> ROLLUP - 단순 그룹화만 필요하다면? -> GROUP BY - 특정 집계만 요구한다면? -> GROUPING SETS #조건을 확인 - 계층적 데이터가 필요한가? -> 연월, 부서, 구분 -> ROLLUP - 모든 조합의 데이터가 필요한가? -> 연월+부서, 연월+구분 등 -> CUBE #다르게 주어진 문법 확인 - ROLLUP(필드1, 필드2) -> 계층적 - CUBE(필드1, 필드2) -> 모든 조합 - GROUPING SETS((필드1, 필드2)) -> 지정 조합 ##문제의 빠른 근거 #모든 조합을 보여주는 데이터 - 입사 연월, 부서명, 구분 등에 대해 모든 조합을 원하고 있음 -> CUBE #결과에 전체 합계 포함 - 특정 조합만 보여주는게 아니라 모든 데이터를 포함해 조합 + 합계를 제공 - ROLLUP은 계층적 집계만 보여주니 예외
ROLLUP함수는 인수의 순서에 따라 결과가 달라지며, CUBE함수와 GROUPING SETS 함수는 인수의 순서가 바뀌어도 같은 결과가 나온다
- GROUPING
소계를 나타내는 ROW를 구분할 수 있게 해준다. 이 함수를 이용하면 원하는 위치에 원하는 텍스트를 출력 할 수 있다. - 윈도우 함수
OVER키워드와 함께 사용되며, 역할에 따라 나눠진다
순위함수 RANK, DENSE_RANK, ROW_NUMBER 집계함수 SUM, MAN, MIN, AVG, COUNT 행 순서 함수 FIRST_VALUE, LAST_VALUE, LEAD 비율함수 CUME_DIST, PERCENT_RANK, NTILE, RATIO_TO_REPORT - TOP-N쿼리
- 셀프조인(Self join)
FROM절에 같은 테이블이 두번이상 등장하기 때문에 ALIAS를 반드시 표기해줘야함
테이블을 마치 두개의 테이블처럼 다루면서 한 행과 다른 행 간의 관계를 표현할 때 사용
대분류 ㄴ 중분류 ㄴ 소분류 ㄴ 중분류 ㄴ 소분류
- 계층 쿼리(Hierarchical Query) - 파일 구조나 조직도처럼 트리 형태의 데이터를 다룰 때 사용
level - 현재의 depth를 반환함, 루트노드는 1
SYS_CONNECT_BY_PATH(컬럼, 구분자) - 루트노드부터 현재 노드까지의 경로 출력
START WITH - 경로가 시작되는 루트 노드
CONNECT BY - 루트로부터 자식 노드를 생성해주는 절, 조건에 만족하는 데이터가 없을 때 까지 노드를 생성
PRIOR - 바로 앞에 있는 부모 노드의 값을 반환함
CONNECT_BY_ROOT - 루트노드에 주어진 컬럼 값을 반환함
CONNECT_BY_ISLEAF - 가장 하위 노드면 1을 반환하고 아니면 0
START WITH 절로 루트 노드를 정의할 수 있고
CONNECT BY 절로 순방향 전개인지, 역방향 전개인지 결정가능하고
CONNECT_BY_ISLEAF는 가장 하위 노드인 경우 1을 반환하고
ORDER SIBILINGS BY 절을 사용하면같은 레벨끼리 정렬해서 계층구조 유지 가능 - DML
- TCL
- DDL
- DCL
DATA CONTROL LANGUAGE - 유저에게 데이터를 컨트롤 할 수 있는 권한을 부여하거나 회수하는 명령어
반응형