DB
📚 SQL 주요 개념 총정리
Mostlove
2025. 4. 28. 17:15
728x90
반응형
1. Escape 문자와 특수기호 처리
- SQL에서 %, _ 등의 특수문자를 데이터로 사용하려면 Escape 문자 \를 이용해야 한다.
➔ ESCAPE '\'를 명시해주면 된다.
사용 예시 설명
사용 예시 | 설명 |
'홍\*동' ESCAPE '\' | 데이터에 *가 포함된 경우 검색 |
'93.2\%' ESCAPE '\' | 퍼센트(%)가 데이터일 때 검색 |
🔎 참고
- 정규표현식(Regular Expression)에서는 *(any, 여러개), ?(one, 하나)를 의미한다.
- SQL에서는 %가 any, _가 one을 의미한다.
2. SQL 연산자 정리
연산자 | 의미 |
= | 같다 |
!=, ^= | 다르다 |
<, >, <=, >= | 크기 비교 |
AND, OR | 논리 연산 |
BETWEEN a AND b | 범위 비교 |
IN (a, b) | 여러 값 중 포함 여부 |
LIKE, NOT LIKE | 패턴 매칭 |
IS NULL, IS NOT NULL | NULL 검사 |
3. ORDER BY 정렬
- 기본은 오름차순(ASC) 이다.
- 내림차순 정렬 시 DESC를 붙인다.
SELECT last_name, salary
FROM employees1
WHERE salary >= 10000
ORDER BY salary DESC;
입사일 기준 정렬 예시
SELECT last_name, hire_date
FROM employees1
WHERE hire_date LIKE '97%'
ORDER BY hire_date DESC;
- 날짜를 제대로 처리하려면 TO_CHAR(hire_date, 'yyyy')를 사용한다.
4. GROUP BY와 집합 함수
- 집합 함수와 함께 데이터를 그룹화할 때 사용한다.
- 주요 집합 함수: AVG(), SUM(), MIN(), MAX(), COUNT()
주의사항 ✋
- GROUP BY를 썼으면 SELECT 절에도 그룹 기준 컬럼이 있어야 한다.
- 조건은 WHERE이 아니라 HAVING을 쓴다.
SELECT department_id, ROUND(AVG(salary), 0) AS avg_sal
FROM employees1
GROUP BY department_id
HAVING avg_sal >= 10000
ORDER BY avg_sal;
5. 단일행 함수 ✨
종류 함수 설명
종류 | 함수 | 설명 |
숫자함수 | MOD(), ROUND(), TRUNC() | 나머지, 반올림, 절삭 |
문자함수 | LOWER(), UPPER(), SUBSTR(), REPLACE(), INITCAP() 등 | 문자열 조작 |
날짜함수 | SYSDATE, ADD_MONTHS(), LAST_DAY(), MONTHS_BETWEEN() | 날짜 처리 |
변환함수 | TO_CHAR(), TO_DATE(), TO_NUMBER() | 데이터 타입 변환 |
기타함수 | CAST(), CONVERT(), DECODE(), CASE WHEN THEN | 조건 처리 및 변환 |
6. WIDTH_BUCKET 함수
- 주어진 범위 안에서 데이터를 등급(bucket)으로 나눈다.
SELECT WIDTH_BUCKET(92, 0, 100, 17) FROM dual;
활용 예시
- 학생 평균 점수(78, 82, 90) ➔ 5등급 나누기
SELECT WIDTH_BUCKET((78+82+90)/3.0, 94, 48, 5) FROM dual;
7. 집합 함수(여러 행을 대상으로 계산)
- AVG(), SUM(), MIN(), MAX(), COUNT() 등이 있다.
- 분석 함수로 OVER(PARTITION BY ~ ORDER BY ~) 패턴을 활용한다.
부서별 상위 3명 급여자 찾기
SELECT department_id, last_name, salary,
ROW_NUMBER() OVER(PARTITION BY department_id ORDER BY salary DESC) AS rownum
FROM employees1
WHERE rownum <= 3
ORDER BY department_id, salary DESC;
8. 순위(RANK) 함수
- RANK() OVER(ORDER BY ~)를 사용해 순위를 매긴다.
SELECT employee_id, salary, RANK() OVER(ORDER BY salary DESC)
FROM employees1;
- 특정 급여(예: 3000)의 순위를 구할 때
SELECT RANK(3000) WITHIN GROUP (ORDER BY salary DESC) "3000_rank"
FROM employees1;
9. Dual 테이블
- 계산 등 단순 쿼리를 실행할 때 사용하는 특수 테이블이다.
SELECT 3.14*5*5 FROM dual;
10. SQL GUI 툴 추천 🎯
DBMS | GUI 툴 |
Oracle | SQL Developer |
MySQL | phpMyAdmin, SQL Workbench |
통합 사용 | DBeaver |
✅ 정리 포인트
- Escape 문자(\) 주의
- %, _는 패턴, ESCAPE 사용 가능
- 그룹화는 GROUP BY 후 HAVING
- 단일행 함수와 집합 함수 구분할 것
- CASE WHEN, DECODE로 조건문 작성
- Dual 테이블로 계산도 가능
- 분석 함수(ROW_NUMBER(), RANK()) 적극 활용
반응형