SQLD 학습을 진행하며 기억할 내용을 간략히 기록합니다.
용어로 Entity(엔티티)를 엔터티라고 발음하지만 엔티티로 정리합니다.

SQL 기본

JOIN

여러 테이블로부터 원하는 데이터를 조회하기 위해서는 전체 테이블 개수에서 최소 N-1개만큼의 JOIN조건 필요
일반적으로 조인은 PK와 FK값의 연관성에 의해 성립
DBMS 옵티마이저는 FROM절에 나열된 테이블이 아무리 많아도 항상 2개의 테이블을 짝 지음
EQUI JOIN: '=' 연산자에 의해서만 수행, 그 이외의 비교 연산자를 사용할 경우 모두 NON EQUI JOIN
대부분 NON EQUI JOIN을 수행할 수 있으나 때로는 불가능한 경우도 있음

FULL OUTER JOIN: 두 테이블 간의 모든 데이터를 결합, LEFT & RIGHT OUTER JOIN을 합친 것
MySQL의 경우 FULL OUTER JOIN이 존재하지 않기 때문에 UNION을 사용해서 합칠 수 있음

CROSS JOIN: 일반 집합 연산자의 PRODUCT 개념으로 테이블 간 JOIN 조건이 없는 경우 생길 수 있는 모든 데이터의 조합을 말함

순수관계연산자

SELECT, PROJECT, JOIN, DIVIDE(현재 사용x)

GROUP BY

GROUP BY절은 NULL이 있을 경우 NULL 데이터도 집계에 포함한다.

ORDER BY

SQL Server에서 NULL은 가장 작은 값으로 간주
ORACLE에서 NULL은 가장 큰 값으로 간주

UNION, UNION ALL

UNION ALL은 중복제거를 하지 않는다.
UNION은 내부적으로 정렬을 하기 때문에 성능적으로 UNION ALL이 더 좋다.

날짜

1/12/(60/30) = 1시간
1/24 = 1시간
1/24/60 = 1분
1/24/6 = 10분
1.5/24 = 1시간 30분

NULL 함수

NVL(표현식1, 0)
표현식1이 NULL이면 0으로 표시
NULL이 아니면 그대로 표현식1로 표시

NVL2
함수는 NULL이 아닌 경우 지정값1을 출력하고, NULL인 경우 지정값2를 출력한다.
NVL2("값", "지정값1", "지정값2") // NVL2("값", "NOT NULL", "NULL")

NULLIF('A', 'A')
두 인자값이 같으면 NULL 반환, 다르면 첫번째 인자값 반환

COALESCE(콜럼1, 콜럼2, ...)
적은 콜럼 중 NULL이 아닌 첫 값을 호출
콜럼1이 'A', 콜럼2가 NULL이면 'A'
콜럼1이 NULL, 콜럼2가 'B'면 'B'
콜럼1이 'A', 콜럼2가 'B'면 'A'

칼럼끼리 연산할 때 NULL을 포함하면 결과가 NULL이다.
레코드끼리 연산할 때 NULL을 포함하면 결과가 NULL이 아니다.
NULL을 연산에서 제외하기 때문이다.

콜럼(열, field)
레코드(행, row)

NULL로만 구성된 컬럼을 COUNT하면 공집합이 아니라 0이 나온다.

profile
지극히 평범한 공대생

0개의 댓글

Powered by GraphCDN, the GraphQL CDN