카테고리 없음

[SQLD] SQL 기본과 활용 - 1장 SQL 기본(1)

NYinJP 2023. 3. 8. 00:07

요 책을 이번주 일요일까지 끝내고 나머지 일주일동안 노랭이인 SQL 자격검정 실전문제 문제집으로 정리할 계획

오늘은 2과목 1장인 SQL 기본을 공부했다.

 


쿼리문에 사용되는 다양한 메서드
SUBSTR(C1, 2, 4)

C1 컬럼값의 2번째 문자부터 4개의 문자를 잘라내어 반환한다. 

 

LTRIM(C2, '0')

C2 컬럼값의 맨 왼쪽부터 '0'문자를 제거해 나가다가 '0'이 아닌 문자를 만나면 나머지 문자열을 반환한다. 

TRIM, RTRIM 함수도 있다. LTRIM, RTRIM은 옵션이 없을 수도 있는데 옵션이 없다면 TRIM처럼 공백 제거 역할을 한다.

 

||(쌍파이프)

컬럼값들을 합치는 역할을 한다.

예) SELECT C1||C2 AS R1 FROM T1;

C1 C2
apple good
stu dent

결과

R1
applegood
student

LENGTH( )

문자열의 길이를 반환한다. 

 

DECODE( )

EX) SELECT SUM(DECODE (C2, 'A', C1, 'B', 1)) AS R1 FROM T1;

C1 C2
1 A
2 A
3 B
4 C

집계함수 안의 연산이나 함수는 집계 전에 개별 행 단위로 먼저 수행된다. 

DECODE 함수의 해석은

C2 컬럼의 값이 'A'라면 C1 컬럼의 값을 넣고, 'B'라면 1을 넣고 아무것도 아니라면 NULL을 저장한다.

따라서 결과는 

 

R1
1
2
1
NULL

SUM은 NULL이 아닌 인자값들의 함을 계산하므로 답은 1+2+1 = 4. 4가 된다. 

 

  • Decode 메서드 인자의 개수에 따른 해석 방법(3개, 4개, 5개, 6개)

DECODE(A, B, C)

A가 B값과 일치하면 C값을 출력하고 일치하지 않으면 NULL값을 출력하라

DECODE(A, B, C, D)

A가 B값과 일치하면 C값을 출력하고 일치하지 않으면 D값을 출력하라

DECODE(A, B, C, D, E)

A가 B값과 일치하면 C값을 출력하고 A가 D값과 일치하면 E값을 출력하고 일치하지 않으면 NULL를 출력하라

DECODE(A, B, C, D, E, F)

A가 B값과 일치하면 C값을 출력하고 A가 D값과 일치하면 E값을 출력하고 일치하지 않으면 F를 출력하라

 

연산자 메서드
💬

FLOOR
입력된 인자 값보다 작거나 같은 정수값을 반환합니다.
CEIL
입력된 인자 값보다 크거나 같은 정수값을 반환합니다.
TRUNC
첫번째 인자값을 소수점 N번째 자리로 버림하여 반환합니다. 두 번째 인자값이 0이면 소수점이하는 모두 버리고 정수값을 반환합니다.
ROUND
첫번째 인자값을 소수점 N번째 자리로 반올림하여 반환합니다. 두 번째 인자값이 0이면 소수점 첫번째 자리에서 반올림하여 정수값을 반환합니다.

그룹 함수(집계 함수)

그룹 함수의 종류에는

sum(), avg(), max(), count(), min(), ...

가 있다. 그룹 함수는 특정 그룹의 통계를 구하는 함수이기 때문에, 그룹을 묶어주는 GROUP BY 절과 함께 와야한다.

 

NULL과 산술연산자

NULL과의 산술연산 결과는 항상 NULL이다. 여기서 산술연산이란? SELECT 문에서 +, *, / 등의 연산을 수행하는 것.

 

헷갈리는 지점이 집계 함수를 수행할 떄 NULL은 대상에서 제외한다. 따라서 NULL의 개수에 따라 결과가 달라진다.

만약 대상 행의 모든 값이 NULL이라면? COUNT 함수는 0을 SUM, MIN, MAX, AVG 함수는 NULL을 반환할 것이다. 

 

COUNT() ➡ 내부에서 동작할 때는 NULL값 알아서 빼준다.

COUNT(C1) * (C2/100) ➡ 만약 C2값이 NULL이여서 우항이 NULL이면? 결과값은 NULL이 된다. 

 

 

GROUP BY

GROUP BY절은 expr로 행 그룹을 생성하고, 생성된 행 그룹을 하나의 행으로 그룹핑한다. 

GROUP BY절을 사용한 쿼리는 SELECT 절과 ORDER BY절에 GROUP BY 절의 표현식이나 집계 함수를 사용한 표현식만 기술할 수 있다. 그렇지 않으면 결과값을 결정할 수 없기 때문에 에러가 발생한다. 

 

 

 

 

ORDER BY

정렬 기준이 되는 표현식을 기술한다. 정렬 순서에만 영향을 미치고 결과 출력에는 영향을 주지 못한다.

  • ASC 오름차순으로 정렬 (Default)
  • DESC 내림차순으로 정렬

 

문장 실행 순서

  1. FROM 절 : 발췌 테이블 선택
  2. WHERE 절 : 발췌 대상 데이터 필터링
  3. GROUP BY 절 : 행들을 소그룹화
  4. HAVING 절 : 그룹핑된 값의 조건에 맞는 것만 출력
  5. SELECT 절 : 데이터 값을 출력/계산
  6. ORDER BY 절 : 데이터 정렬

 

앞으로 내용을 습득하는대로 잘 정리해보도록 하겠다!