TOP
class="layout-aside-left paging-number">
본문 바로가기
자격증/SQLD

[SQLD] 자주 틀렸던 부분

by 기록자_Recordian 2024. 3. 8.
728x90
반응형
  • CASE 문에서 ELSE 생략하면 ELSE에 해당하는 값은 NULL 값으로 출력
  • FROM 절에 아무리 많은 테이블이 나열되더라도 항상 2개씩 조인
  • 데이터 관점: 업무가 어떤 데이터와 관련이 있는지 또는 데이터 간의 관계는 무엇인지에 대해 모델링하는 관점
  • 영업사원별 누적 매출 (윈도우 함수): PARTITION BY 영업사원
  • UNBOUNDED PRECEDING AND CURRENT ROW: (범위) 시작부터 현재행까지
  • 차수: 결과 릴레이션(테이블)의 컬럼 수
  • 카디널리티: 선택된 행들의 개수
  • 하나의 속성은 하나의 속성값을 가지며, 하나 이상의 속성값을 가지는 경우 정규화 필요
  • LIKE '_A%' : 두 번째 문자가 A인 값 (와일드 카드 '_' 로 인해, 대소문자 구분)
  • NULL 값 - SQL-Server: 맨 앞 / Oralce: 맨 뒤
  • LAG: 이전 행의 몇 번째 행 값 가져옴 ↔ LEAD
  • 함수별 동일 값 있을 때 순위 - RANK: 1, 1, 3, 4 / DENSE_RANK: 1, 1, 2, 2 / ROW_NUMBER: 1, 2, 3, 4
  • 외부스키마: 사용자 관점 / 내부스키마: 물리적 관점 / 개념 스키마: 통합 관점
  • NATURAL JOIN 에서 EMP.DEPTNO 와 같이 OWNER (EMP) 명 사용하면 에러 발생 > NATURAL JOIN은 같은 컬럼명 조인
  • 200 BETWEEN COL1 AND COL2 : COL1 <= 200 AND COL2 <= 200
  • COL1 BETWEEN A AND B : COL1 >= A AND COL1 <= B
  • SUBSTRING(문자열, -4, 2): 뒤에서 4번째 자리값부터 2개 반환
  • 비교연산자 뒤에는 단일행이 와야 하는데 GROUP BY는 다중행 함수로 멀티행을 반환하여 에러
  • 연산자의 우선 순위: () > NOT > 비교연산자 > AND > OR
  • 다중행 입력 쿼리문 - CASE와 동일하게 수행, WHEN을 만족하면 종료
  • 차집합: EXCEPT / 교집합: INTERSECT

 

  • NULL 관련 함수
COL1 COL2 COL3
A 300 50
B 300 150
C NULL 300
D 300 100

 
1) NVL(COL2, COL3) : COL2 이 NULL 이면 COL3 , 아니면 COL2 출력
▶ COL2는 NULL 이 아니기 때문에 COL2 출력 ▶ 300
 
2) COALESCE(COL2, COL3): NULL이 아닌 최초의 출력값
▶ 300
 
3) NULLIF(COL2, COL3): COL2와 COL3의 값이 같으면 NULL 출력, 아니면 COL2 값 출력
▶ COL2는 300, COL3은 50 으로 값이 다름 ▶ 300
 
4) CASE WHEN COL2 IS NOT NULL THEN COL2 ELSE COL3 END
▶ COL2가 NULL 이 아니면 COL2 값을, 아니면 (NULL 이라면) COL3 값을 반환
▶ COL2는 NULL 이 아니므로 300
 

  • DDL과 DML 비교
DDL 데이터 정의어 테이블 구조 초점 CREATE, ALTER, DROP
DML 데이터 조작어 데이터 내용 초점 INSERT, UPDATE, DELETE

 DDL / DML 자주 헷갈릴 때
DDL은 카드 (C, A, R, D)라고 외움.
* Create / Alter / Rename / Drop

728x90
반응형