SQL 첫걸음 3장

cse 23·2025년 3월 26일
0

SQL 첫걸음

목록 보기
3/8

9강. 정렬 - ORDER BY

SELECT 열명 FROM 테이블명 WHERE 조건식 ORDER BY 열명;
  • ORDER BY 기본 정렬 방식: 오름차순(ASC)
  • 내림차순: ORDER BY 열명 DESC
  • 오름차순: ORDER BY 열명 ASC

데이터 타입별 정렬 방식:

  • 숫자: 값의 크기 기준
  • 날짜/시간: 값의 크기 기준
  • 문자열: 사전식 순서

10강. 복수 열 정렬

SELECT 열명 FROM 테이블명
ORDER BY1 [ASC|DESC],2 [ASC|DESC];
  • 여러 열을 콤마로 구분하여 정렬 가능
  • 예시: ORDER BY a, b DESC → a로 정렬 후 값이 같으면 b로 정렬
  • ORDER BY 1, 2처럼 숫자로 열 순서 지정 가능

NULL 정렬:

  • ASC: NULL이 먼저
  • DESC: NULL이 나중
  • 데이터베이스 제품에 따라 다름

11강. 결과행 제한 - LIMIT

SELECT 열명 FROM 테이블명 LIMIT 행수 [OFFSET 시작행];
  • 결과 행 수를 제한
  • OFFSET은 시작 위치, 인덱스는 0부터 시작

예시:

SELECT * FROM sample ORDER BY id LIMIT 10 OFFSET 20;

→ 21번째 행부터 10개 반환

일부 DB는 TOP, FETCH 등을 사용

12강. 수치 연산

+  -- 덧셈
-  -- 뺄셈
*  -- 곱셈
/  -- 나눗셈
%  -- 나머지

우선순위:
1. *, /, %
2. +, -
(동순위는 왼쪽에서 오른쪽)

예시:

SELECT price * quantity AS amount FROM sample34;
  • AS: 별명(alias) 지정
  • ORDER BY에서는 별명 사용 가능
  • WHERE에서는 별명 사용 불가

13강. 문자열 연산

|| 또는 CONCAT(a, b)      -- 문자열 결합
SUBSTRING(str, 시작, 길이) -- 부분 문자열
TRIM(str)                 -- 앞뒤 공백 제거
CHARACTER_LENGTH(str)     -- 문자열 길이

문자 길이는 문자셋(UTF-8 등)에 따라 바이트 수가 달라질 수 있음

14강. 날짜 연산

CURRENT_TIMESTAMP  -- 현재 날짜와 시간
CURRENT_DATE       -- 현재 날짜
  • INTERVAL을 사용해 날짜 계산 가능
  • 날짜끼리 뺄셈도 가능

15강. CASE문으로 조건 분기

SELECT CASE 
         WHEN 조건1 THEN 결과1
         WHEN 조건2 THEN 결과2
         ELSE 기본값
       END
FROM 테이블명;

예시:

SELECT name,
       CASE 
         WHEN score >= 90 THEN 'A'
         WHEN score >= 80 THEN 'B'
         ELSE 'C'
       END AS grade
FROM students;

주의:

  • ELSE 생략 시 기본값은 NULL
  • WHEN에서 NULL 조건은 IS NULL로 판별

추가 함수

  • COALESCE(a, 0): a가 NULL이면 0 반환
  • NVL(a, 0): Oracle 전용
  • DECODE: IF 또는 CASE처럼 조건 분기 (Oracle)

참고: 본 내용은 MySQL 기준이며, 일부 문법은 DBMS 종류에 따라 다를 수 있습니다.

-- 연습문제 ---
1.1
2.3
3.1

0개의 댓글