320x100
320x100
1. NULL 처리
| Oracle | MySQL / MariaDB | 설명 |
|---|---|---|
| NVL(expr1, expr2) | IFNULL(expr1, expr2) | NULL이면 다른 값 반환 |
| NVL2(expr, value1, value2) | IF(expr IS NULL, value2, value1) | NULL 여부에 따라 반환 |
| COALESCE() | COALESCE() | 동일 (표준 SQL) |
Oracle
SELECT NVL(name, 'Unknown')
FROM member;MySQL
SELECT IFNULL(name, 'Unknown')
FROM member;표준 SQL
SELECT COALESCE(name, 'Unknown')
FROM member;2. 조건문
Oracle
DECODE(job,
'MANAGER', '관리자',
'SALESMAN', '영업',
'기타')MySQL
CASE job
WHEN 'MANAGER' THEN '관리자'
WHEN 'SALESMAN' THEN '영업'
ELSE '기타'
END
SQLP에서는 CASE를 더 많이 사용한다.
3. 현재 날짜
| Oracle | MySQL |
|---|---|
| SYSDATE | NOW() |
| CURRENT_DATE | CURRENT_DATE |
Oracle
SELECT SYSDATE
FROM dual;MySQL
SELECT NOW();4. 문자열 연결
Oracle
SELECT first_name || last_name
FROM member;MySQL
SELECT CONCAT(first_name, last_name)
FROM member;5. LIMIT
Oracle (12c 이상)
SELECT *
FROM member
FETCH FIRST 10 ROWS ONLY;MySQL
SELECT *
FROM member
LIMIT 10;6. OFFSET
Oracle
SELECT *
FROM member
OFFSET 20 ROWS
FETCH NEXT 10 ROWS ONLY;MySQL
SELECT *
FROM member
LIMIT 20,10;
-- 또는
LIMIT 10 OFFSET 20;7. ROWNUM
Oracle
SELECT *
FROM member
WHERE ROWNUM <= 10;MySQL
LIMIT 10;8. AUTO_INCREMENT
Oracle
CREATE SEQUENCE member_seq;
INSERT INTO member
VALUES(member_seq.NEXTVAL,'Kim');MySQL
id INT AUTO_INCREMENT PRIMARY KEY9. DUAL 테이블
Oracle
SELECT SYSDATE
FROM dual;MySQL
-- MySQL에서는 DUAL이 없어도 된다.
SELECT NOW();10. 날짜 더하기
Oracle
SYSDATE + 1MySQL
DATE_ADD(NOW(), INTERVAL 1 DAY)11. 날짜 차이
Oracle
SYSDATE - hire_dateMySQL
DATEDIFF(NOW(), hire_date)12. 문자열 길이 (동일)
LENGTH(name)13. 대문자/소문자 (동일)
UPPER(name)
LOWER(name)14. 문자열 자르기 (동일)
SUBSTR(name,1,3)
-- MySQL에서는 아래 쿼리도 가능
SUBSTRING(name,1,3)15. 문자열 위치
Oracle
INSTR(name,'A')MySQL
LOCATE('A',name)
-- 또는
INSTR(name,'A')16. REPLACE (동일)
REPLACE(name,'A','B')17. TRIM (동일)
TRIM(name)18. ROUND (동일)
ROUND(salary)19. CEIL / FLOOR (동일)
CEIL()
FLOOR()20. MOD (동일)
MOD(10,3)21. CAST (동일)
CAST(age AS CHAR)22. TO_CHAR
Oracle
TO_CHAR(salary)MySQL
CAST(salary AS CHAR)23. TO_DATE
Oracle
TO_DATE('2025-01-01','YYYY-MM-DD')MySQL
STR_TO_DATE('2025-01-01','%Y-%m-%d')24. TO_NUMBER
Oracle
TO_NUMBER('100')MySQL
CAST('100' AS SIGNED)25. 실행계획
Oracle
EXPLAIN PLAN FOR
SELECT ...MySQL
EXPLAIN
SELECT ...26. MERGE
Oracle
MERGE INTO ...MySQL
INSERT ...
ON DUPLICATE KEY UPDATE27. UPDATE JOIN
Oracle
MERGE
-- 또는
UPDATE
(
SELECT ...
)MySQL
UPDATE A
JOIN B
ON ...
SET ...28. DELETE JOIN
Oracle
DELETE
WHERE EXISTS(...)MySQL
DELETE A
FROM A
JOIN B29. Sequence
Oracle
member_seq.NEXTVAL
member_seq.CURRVALMySQL
AUTO_INCREMENT30. Window Function
Oracle
ROW_NUMBER()
RANK()
DENSE_RANK()
LAG()
LEAD()MySQL
- 8 이상 부터 동일하게 지원
31. Common Table Expression
Oracle
WITH temp AS (...)MySQL
- 8 이상 부터 동일하게 지원
32. EXISTS (동일)
WHERE EXISTS (...)33. IN (동일)
WHERE id IN (...)34. ANY / ALL (동일)
> ANY()
> ALL()35. 집계 함수 (동일)
SUM()
AVG()
COUNT()
MAX()
MIN()36. GROUP BY (동일)
GROUP BY37. HAVING (동일)
HAVING COUNT(*) > 1038. JOIN (동일)
INNER JOIN
LEFT JOIN
RIGHT JOIN
FULL OUTER JOIN
-- FULL OUTER JOIN은 Oracle만 지원 (mySQL 미지원)39. 계층형 조회
Oracle
CONNECT BY
START WITHMySQL
WITH RECURSIVE40. Pivot
Oracle
PIVOTMySQL
CASESQLP에서 반드시 익혀야 하는 Oracle 문법
- NVL
- DECODE
- CASE
- ROWNUM
- FETCH FIRST
- DUAL
- TO_CHAR
- TO_DATE
- TO_NUMBER
- SEQUENCE
- CONNECT BY
- MERGE
300x250
728x90
'자격증 > SQLP' 카테고리의 다른 글
| SQLP에 대해 알아보자 (0) | 2026.07.11 |
|---|