본 포스팅은 SQLD 자격증 취득을 위해 공부한 내용을 정리하기 위한 포스팅입니다.
1. 산술 연산자
(), *, /, +, -, %
/의 경우 0으로 나눌 경우 ERROR 발생
%의 경우 0으로 나눈 나머지의 경우 NULL을 반환
2. 문자 함수
1. CHR()
2. LOWER(문자열)
3. UPPER(문자열)
4. LTRIM(문자열[, 특정문자])
5. RTRIM(문자열[, 특정문자])
6. TRIM([위치][특정문자][FROM]문자열): 위치의 경우 LEADING, TRAILING, BOTH
7. SUBSTR(문자열, 시작점[, 길이])
8. LENGTH(문자열)
9. REPLACE(문자열, 변경 전 문자열[. 변경 후 문자열]) ex) REPLACE('블랙핑크‘, ’블랙‘) = ’핑크‘
10. LPAD(문자열, 길이, 문자)
11. RPAD(문자열, 길이, 문자)
12. CONCAT(대상1, 대상2)
13. INSTR(문자열, 문자, m, n) ex) INSTR(’A#B#C#', '#', 3, 2) = 6
3. 숫자 함수
1. ABS(수)
2. SIGN(수)
3. ROUND(수[, 자릿수]): 자릿수까지 반올림
4. TRUNC(수[, 자릿수]): 자릿수까지 버림
5. CEIL(수): 올림
6. FLOOR(수): 버림
7. MOD(수1, 수2): 수1을 수2로 나눈 나머지(단, 수2가 0일 경우 수1을 반환)
ex) MOD(15, -4) = 3 / MOD(-15, 0) = -15 / MOD(-15, -4) = -3
4. 날짜 함수
1. SYSDATE
2. EXTRACT(특정 단위 FROM 날짜 데이터) ex) EXTRACT(YEAR FROM SYSDATE) = 2024
3. ADD_MONTHS(날짜 데이터, 특정 개월 수) ex) ADD_MONTHS(DATE('2022-01-31', 1) -> 2022-02-28
5. 변환 함수
1. 암시적 형변환
2. 명시적 형변환
(1) TO_NUMBER(문자열)
(2) TO_CHAR(수 or 날짜[, 포맷]) ex) TO_CHAR(SYSDATE, 'YYYYMMDD HH24MISS') = 20241110 012230
(3) TO_DATE(문자열, 포맷)
HH24: 시(24) / HH: 시(12) / MI: 분 / SS: 초
6. NULL 관련 함수
1. NVL(인수1, 인수2) ex) NVL(NULL, 0) = 0 / NVL(1, 0) = 1
+ My SQL에서는 IFULL
2. NVL2(인수1, 인수2, 인수3) ex) NVL2(NULL, 1, 2) = 2 / NVL2(0, 1, 2) = 1
3. NULLIF(인수1, 인수2) ex) NULLIF('A', 'A') = NULL / NULLIF('A', 'B') = 'A'
4. COALESCE(인수1, 인수2, 인수3 ...): NULL이 아닌 최초의 인수를 반환
7. CASE
ORACLE의 경우 DECODE가 존재한다.
CASE문에서는 ELSE 뒤의 값이 DEFAULT 값이 되고, 별도의 ELSE가 없는 경우 NULL이 DEFAULT가 된다.
8. 부정 비교 연산자
!=, ^=, <>
9. SQL 연산자
1. BETWEEN A AND B
2. LIKE '비교 문자열‘ ex) '방탄%’, ‘%소년단’, ‘%탄소년%’, ‘방_소%’, ‘%#%%‘ escape '#'
3. IN(LIST)
4. IS NULL
10. SELECT 문의 논리적 연산 순서
(5) SELECT
(1) FROM
(2) WHERE
(3) GROUP BY
(4) HAVING
(6) ORDER BY
우선 순위 순서: FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY
11. GROUP BY, HAVING 절
1. 집계함수
(1) COUNT(*): 전체 ROW
(2) COUNT(컬럼): NULL 제외
(3) COUNT(DISTINCT 컬럼): NULL과 중복을 제외
(4) SUM(컬럼)
(5) AVG(컬럼)
(6) MIN(컬럼)
(7) MAX(컬럼)
-> SUM, AVG, MIN, MAX 집계 함수들은 NULL을 무시하고 계산한다.
2. HAVING 절
SELECT절 전에 수행되기 때문에 SELECT에서 선언한 Alias 사용 불가능하다.
WHERE절을 대체 할 수 있지만, 성능이 떨어진다.
11. ORDER BY 절
1. ASC -> 옵션 생략시 ASC가 DEFAULT
2. DESC
ORACLE의 경우 NULL을 최댓값으로 취급한다.
SQL Server의 경우 NULL을 최솟값으로 취급한다.
12. JOIN
1. INNER JOIN
2. LEFT OUTER JOIN
3. RIGHT OUTER JOIN
4. FULL OUTER JOIN
5. NATURAL JOIN: 두 테이블 간의 동일한 이름을 갖는 모든 컬럼에 대해 EQUI JOIN 수행한다. / USING, ON, WHERE 절에서 조건 정의 불가능하다.
-> USING 조건절과 NATURAL JOIN에서는 JOIN 컬럼에 대해서 ALIAS나 테이블 이름과 같은 접두사를 붙일 수 없다.
6. CROSS JOIN
-> ORACLE의 경우 LEFT OUTER JOIN, RIGHT OUTER JOIN의 (+) 기호를 반대편에 작성한다.
ex) [SQL]
SELECT BOY_NAME, FIRL_NAME
FROM GIRL, BOY:
-> 별도의 JOIN 조건이 없는 경우 두 테이블은 CROSS JOIN이 된다.
'SQL' 카테고리의 다른 글
[SQLD: PART 2] 관리 구문 (0) | 2024.12.02 |
---|---|
[SQLD: PART 2] SQL 활용 (0) | 2024.12.02 |
[SQLD: PART 1] 데이터 모델링의 이해 (0) | 2024.12.02 |
[SQLD: PART 1] 데이터 모델과 SQL (0) | 2024.12.02 |