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()) 적극 활용

 

반응형