카테고리 없음

3) SQL 기본

person456 2023. 12. 24. 19:58

** 함수 종류

1. 문자 함수

1) CHA (ASCII 코드)

- 숫자를 문자로 변환시켜줌

ex) SELECT CHA(65) FROM DB

2) LOWER(문자열)

- 문자열을 소문자로 변환해줌

EX) SELECT LOWER('TEST') FROM DB

3) UPPER(문자열)

- 문자열을 대문자로 변환해줌

EX) SELECT UPPER('test') FROM DB

4) LTRIM(문자열 [,특정문자])

- 옵션을 사용하지 않으면 왼쪽의 공백을 싹다 지움

- 옵션을 사용하면 문자열을 왼쪽부터 한 글자씩 특정 문자와 비교하여 특정 문자에 포함되어 있으면 제거하고 않았으면 멈춤

EX) SELECT LTRIM('블랙핑크', '블랙') FROM DB

ex) SELECT LTRIM('SQL DEVELOPER', 'SQLD')

-> EVELOPER만 남음

 

5) RTRIM(문자열 [,특정문자])

- 옵션을 사용하지 않으면 우측의 공백을 싹 다 지움

- 옵션을 사용하면 문자열을 오른쪽부터 한 글자씩 특정 문자와 비교하여 특정 문자에 포함되어 있으면 제거

 

6)TRIM([위치][특정문자][FROM]문자열)

- 옵션이 하나도 없으면 문자열의 왼쪽과 오른쪽 공백을 제거

- 위치는 LEADING과 TAILING, BOTH로 진행할 수 있음

- 위치 지정 이후 특정 문자(한글자만)지정하여 제거할 수 있음

 

7)SUBSTR(문자열, 시작점, [길이])

- 문자열의 원하는 부분만 잘라서 반환하는 함수

- 길이를 명시하지 않으면 문자열의 시작부터 끝까지 반환

EX) STRING = '블랙핑크제니'

SUBSTR('블랙핑크제니', 3, 2) -----> 핑크

SUBSTR('블랙핑크제니', 3, 4)------> 핑크제니

 

8) LENGTH(문자열)

- 문자열의 길이를 반환

 

9) REPLACE(문자열, 변경 전 문자열, [변경 후 문자열])

- 옵션을 주지 않으면 변경 전 문자열을 제거

- 옵션을 주면 변경 전 문자열을 변경 후 문자열로 바꿔줌

 

10) LPAD(문자열, 길이, 문자)

- 문자열이 설정한 길이가 될 때 까지 왼쪽을 특정 문자로 채움

11) RPAD(문자열, 길이, 문자)

- 문자열이 설정한 길이가 될 때 까지 오른쪽을 특정 문자로 채움

 

 

2. 숫자 함수

1) ABS(수)

- 절댓값을 반환

2) SIGN(수)

- 수의 부호를 반환

- 음수면 -1, 양수면 1, 0이면 0

3) ROUND(수, [자릿수])

- 수를 지정하면 소숫점의 자릿수까지 반올림하여 반환하는 함수

- 자리를 명시하지 않으면 정수형으로 반올림하여 반환

- 음수를 명시하면 정수에서 10단위로 올라가며 반올림

EX) SELECT ROUND(163.14, 1) FROM DB -----> 163.1

EX) SELECT ROUND(163.166, 2) FROM DB -------> 163.17

EX) SELECT ROUND(163.772) FROM DB ------> 164

EX) SELECT ROUND(163.772, -2) FROM DB -------> 200

4) TRUNC(수, [자릿수])

- 수를 지정된 소숫점 자릿수까지 버림하여 반환하는 함수

- 자리수를 명시하지 않으면 정수를 반환

EX) SELECT TRUNC(163.123, 1) FROM DB  ------> 163.1

EX) SELECT TRUNC(163.123) FROM DB -----> 163

 

5) CEIL(수)

- 소수점 이하의 수를 올림한 정수를 반환하는 함수

EX) SELECT CEIL(163.6312) FROM DB ---> 164

 

6) FLOOR(수)

- 소숫점 이하의 수를 버림한 정수를 반환해주는 정수

EX) SELECT FLOOR(163.6331) FROM DB ----> 163

 

7) MOD(수1, 수2)

- 수1을 수2로 나눈 나머지를 반환해주는 함수

- 수2 자리에 0이 들어오면 수1을 반환함

- 두 수가 모두 음수면 음수의 나머지를 반환

EX) SELECT MOD(4, 2) FROM DB ----> 0

 

3. 날짜 함수

1) SYSDATE

- 현재의 연, 월, 일, 시, 분, 초를 반환해주는 함수

EX) SELECT SYSDATE FROM DB -> 2021-09-21 22:08:08

 

2) EXTRACT(특정 단위 FROM 날짜 데이터)

- 날짜 데이터에서 특정 단위(YEAR, MONTH, DAY, HOUR, MINUTE, SECOND)만을 출력하여 변환

EX) SELECT EXTRACT(YEAR FROM SYSDATE) FROM DB -> 2021

EX) SELECT EXTRACT(MONTH FROM SYSDATE) FROM DB --> 12

EX) SELECT EXTRACT(DAY FROM SYSDATE) FROM DB --> 24

 

3) ADD_MONTHS(날짜 데이터, 특정 개월 수)

- 날짜 데이터에서 특정 개월 수를 더한 날짜를 반환해주는 함수

- 날짜 이전 달이나 다음달에 기준 날짜의 일자가 존재하지 않으면 해당 월의 마지막 일자를 반환

EX) SELECT ADD_MONTH(2021-08-31, 1) FROM DB ----> 2021-09-30

 

4. 변환 함수

1) 명시적 형변환

- 변환 함수를 사용하여 데이터 유형 변환을 명시적으로 나타낸 형변환

1) TO_NUMBER(문자열)

- 문자열을 숫자형으로 변환하는 함수

EX) SELECT TO_NUMBER('1401') FROM DB --->1401

2) TO_CHAR(수 or 날짜 [포맷])

- 수나 날짜형을 문자형으로 바꾸는 함수

EX) SELECT TO_CHAR(1234) FROM DB ---> '1234'

EX) SELECT TO_CHAR(SYSDATE, 'YYYYMMDD HH24MISS') FROM DB --> '20231224 194223

3) TO_DATE(문자열, 포맷)

- 포맷 형식의 문자형의 데이터를 날짜형으로 변환해주는 함수

EX) SELECT TO_DATE('2023-12-23', 'YYYYMMDD') FROM DB ---> 2023-12-23

2) 암시적 형변환

- 데이터베이스가 내부적으로 알아서 데이터 유형을 변환함

 

 

5. NULL 관련 함수

1) NVL(인수1, 인수2)

- 인수1이 NULL이면 인수2를 반환, NULL이 아니면 인수1을 반환

EX) SELECT NVL(REVIEW, 0) FROM DB ---> REVIEW가 NULL이면 0을반환, 아니면 REVIEW를 반환

 

2) NULLIF(인수1, 인수2)

- 인수1과 인수2가 같으면 NULL을 반환, 아니면 인수1을 반환

 

3) COALESCE(인수1, 인수2, 인수3 ....)

- NULL이 아닌 최초의 인수를 반환해주는 함수

 

4) NVL2(인수1, 인수2, 인수3)

- 인수1이 NULL이 아니면 인수2를 반환, NULL이면 인수3을 반환

 

 

6. CASE

- 함수보다는 구문에 가까운 성격. SWITCH 문이랑 비슷하다고 보면 됨

EX) SELECT LINE, 

                       CASE WHEN LINE = '1' TEHN 'BLUE'

                                  WHEN LINE = '2' THEN 'RED'

                                  WHEN LINE = '3' THEN 'YELLOW'

                                  ELSE 'GRAY'

                        END AS [이름]

 

 

 

** GROUP BY, HAVING

- 그룹별로 데이터를 묶도록 해주는 함수가 GROUP BY

- HAVING은 그룹으로 묶을 기준, 조건을 담아내는 것

- SELECT 문의 논리적 수행 순서

1) FROM -> 2) WHERE -> 3) GROUP BY -> 4) HAVING -> 5)SELECT -> 6( ORDER BY