📚 WHERE 조건
✅ LIKE 에서 와일드 카드
• LIKE 사용 시 %는 매칭되는 문자의 수 상관없을 때, _ 는 1개의 문자에만 매칭해서 사용함
| % | 0개 이상의 문자 (정확한 길이 알 수 없음) |
| _ | 1개 |
| __ | 2개 |
| _% | 1개 이상의 문자 (정확한 길이 알 수 없음) |

📚데이터 정렬
✅ ORDER BY
📌컬럼 여러개 기준으로 정렬하는 경우
SELECT * FROM TMP_TABLE
WHERE ~~
ORDER BY 컬럼1 DESC, 컬럼2 ;
위와 같이 여러 개의 컬럼에 대해서 정렬하는 경우, 컬럼1을 기준으로 먼저 내림차순으로 정렬한 후에,
컬럼1의 값이 동일한 row에 대해서만 컬럼2 오름차순 기준으로 정렬한다.
✅ RANK
📌순위를 정해서 가져오는 경우
• 항상 ORDER BY랑 함께 사용함.
• SELECT 절에서 사용함. 테이블 실제 데이터에는 영향을 미치지 않음
• 값이 높은 순서대로 순위를 만들어서 가져오려면, ORDER BY 에서 DESC 사용해야 함
SELECT [col1], [col2],
RANK() OVER (ORDER BY col1 DESC) AS col1_rank
FROM [테이블];
✅ vs DENSE_RANK vs ROW_NUMBER
| 함수 | 설명 |
| RANK | 공동 순위가 있으면 다음 순서로 건너뜀 |
| DENSE_RANK | 공동순위가 있어도 다음 순위 안 건너뜀 |
| ROW_NUMBER | 공동 순위 무시 |
📌예시

| 이름 | 성적 | rank_rank | rank_dense_rank | rank_row_number |
| A | 90 | 1 | 1 | 1 |
| B | 55 | 2 | 2 | 2 |
| C | 55 | 2 | 2 | 3 |
| D | 49 | 4 | 3 | 4 |
| E | 30 | 5 | 4 | 5 |
📚문자형 데이터 다루기
📌문자열 관련 함수
| 함수 | 사용법 | 설명 |
| LOCATE | LOCATE('A', 컬럼명) | • “ABC”컬럼에서“A”가 몇번째에 위치하는지 반환 • 문자가 여러개면 가장 먼저 찾은 문자의 위치 반환 • 찾는 문자 없으면 0 반환 |
| SUBSTRING | SUBSTRING(컬럼명, 2) | • “ABC”에서 2번째 문자부터 반환 • 입력한 숫자 > 문자열 길이 : 아무것도 반환 안 함 |
| RIGHT | RIGHT(컬럼명, 2) | • 컬럼에서 오른쪽 2번째 문자까지 반환 |
| LEFT | LEFT(컬럼명, 2) | • 컬럼에서 왼쪽 2번째 문자까지 반환 |
| UPPER | UPPER(컬럼) | • 컬럼을 모두 대문자로 바꿔 반환 |
| LOWER | LOWER(컬럼) | • 컬럼을 모두 소문자로 바꿔 반환 |
| LENGTH | LENGTH(컬럼) | • 컬럼의 글자 수 반환 |
| CONCAT | CONCAT(컬럼1, 컬럼2) | • 두 개의 문자열을 합쳐서 반환 (컬럼도 가능) |
| REPLACE | REPLACE(컬럼, 'A', 'B') | • 컬럼에서 A를 B로 바꿔서 반환 |
📚숫자 다루기
📌숫자 관련 함수
| 함수 | 사용법 | 설명 |
| ABS | ABS(숫자) | • 절대값 반환 |
| CEILING | CEILING(숫자) | • 정수로 올림 |
| FLOOR | FLOOR(숫자) | • 정수로 내림 |
| ROUND | ROUND(숫자, 자릿수) | • 숫자를 소수점 자릿수까지 반올림해서 반환 |
| TRUNCATE | TRUNCATE(숫자, 자릿수) | • 숫자를 소수점 자릿수까지 버림해서 반환 |
| POWER | POWER(숫자1, 숫자2) | • 숫자1의 숫자2 제곱 반환 |
| MOD | MOD(숫자1, 숫자2) | • 숫자1을 숫자2로 나눈 후 나머지 반환 |
📚날짜 다루기
📌날짜 관련 함수
| 함수 | 사용법 | 설명 |
| NOW | NOW() | 현재 날짜와 시간 반환 (입력값 없이 사용) |
| CURRENT_DATE | CURRENT_DATE() | 현재 날짜 반환 |
| CURRENT_TIME | CURRENT_TIME() | 현재 시간 반환 |
| YEAR | YEAR(날짜) | 날짜의 연도반환 |
| MONTH | MONTH(날짜) | 날짜의 월반환 |
| MONTHNAME | MOTHNAME(날짜) | 날짜의 월을 영어로 반환 |
| DAYNAME | DAYNAME(날짜) | 날짜의 요일을 영어로 반환 |
| DAYOFMONTH | DAYOFMONTH(날짜) | 날짜의 일 반환 |
| DAYOFWEEK | DAYOFWEEK(날짜) | 날짜의 요일을 숫자로 반환 일요일 = 1 / 월요일 = 2 |
| WEEK | WEEK(날짜) | 날짜가 해당연도에 몇번째 주인지 반환 |
| HOUR | HOUR(시간) | 시간의 시반환 |
| MINUTE | MINUTE(시간) | 시간의 분반환 |
| SECOND | SECOND(시간) | 시간의 초반환 |
| DATE_FORMAT | DATEFORMAT(날짜/시간, 형식) | 날짜/시간의 형식을 '형식'으로 바꿔반환 |
| DATEDIFF | DATEDIFF(날짜1, 날짜2) | 날짜1과 날짜2의 차이 반환 (날짜1 ‒날짜2) |
| TIMEDIFF | TIMEDIFF(시간,1시간2) | 시간1과 시간2의 차이 반환 (시간1 ‒시간2) |
📌DATE_FORMAT 함수에 들어가는 형식 세부 분류

'SQL' 카테고리의 다른 글
| [SQL] CASE WHEN / CREATE FUNCTION (0) | 2023.05.09 |
|---|---|
| [SQL] GROUP BY (0) | 2023.03.08 |
| [SQL] 데이터베이스 다루기 (0) | 2023.02.28 |
| [SQL] 서브쿼리 기본 개념 (0) | 2023.02.06 |
댓글