MYSQL
[MYSQL][07] ORDER BY
vbsic5
2024. 11. 26. 10:46
ORDER BY 문
order by 기본형식은 다음과 같다.
SELECT * FROM [테이블명] ORDER BY [컬럼] [ASC|DESC];
ASC(ascending) : 오름차순(default 값)
DESC(descening) : 내림차순
두 개의 열 정렬 예시
SELECT * FROM [테이블명] WHERE [조건] ORDER BY [컬럼1], [컬럼2 DESC];
1차 정렬 : 컬럼1 ASC
2차 정렬 : 컬럼2 DESC
1차 정렬 후 2차 정렬 진행된다.
LIMIT
LIMIT절은 반환할 튜플 수를 지정할 수 있다.
예를 들어 방문자 카운트 테이블 같이 튜플이 굉장히 많은 대형 테이블에서 사용하면 좋다.
limit 기본 형식
SELECT * FROM [테이블명] LIMIT N;
조회결과 : N개 출력
mysql> select actor_id, first_name, last_name from actor limit 10;
+----------+------------+--------------+
| actor_id | first_name | last_name |
+----------+------------+--------------+
| 1 | PENELOPE | GUINESS |
| 2 | NICK | WAHLBERG |
| 3 | ED | CHASE |
| 4 | JENNIFER | DAVIS |
| 5 | JOHNNY | LOLLOBRIGIDA |
| 6 | BETTE | NICHOLSON |
| 7 | GRACE | MOSTEL |
| 8 | MATTHEW | JOHANSSON |
| 9 | JOE | SWANK |
| 10 | CHRISTIAN | GABLE |
+----------+------------+--------------+
조회결과 : 기본 정렬기준으로 10개 출력
limit 범위
SELECT * FROM [테이블명] WHERE [컬럼] = [값] LIMIT N, M;
N : offset(지정 위치), M : 개수
조회결과 : N+1 부터 M개 출력
mysql> select actor_id, first_name, last_name from actor limit 1, 10;
+----------+------------+--------------+
| actor_id | first_name | last_name |
+----------+------------+--------------+
| 2 | NICK | WAHLBERG |
| 3 | ED | CHASE |
| 4 | JENNIFER | DAVIS |
| 5 | JOHNNY | LOLLOBRIGIDA |
| 6 | BETTE | NICHOLSON |
| 7 | GRACE | MOSTEL |
| 8 | MATTHEW | JOHANSSON |
| 9 | JOE | SWANK |
| 10 | CHRISTIAN | GABLE |
| 11 | ZERO | CAGE |
+----------+------------+--------------+
10 rows in set (0.00 sec)
조회결과 : 2부터 10개 출력
SELECT * FROM [테이블명] LIMIT M OFFSET N;
조회결과 : N까지는 건너 뛰고 M개 출력
mysql> select actor_id, first_name, last_name from actor limit 1 offset 10;
+----------+------------+-----------+
| actor_id | first_name | last_name |
+----------+------------+-----------+
| 11 | ZERO | CAGE |
+----------+------------+-----------+
1 row in set (0.00 sec)
조회결과 : 10까지 건너뛰고 1개 출력
LIKE
LIKE 기본 형식
select * from [테이블명] where [열] LIKE [와일드카드 패턴]
와일드카드
와일드카드 문자는 문자열에서 하나 이상의 문자를 대체할 수 있는데 = 연산자가 아닌 LIKE 연산자를 사용하여 패턴을 만들어 데이터를 조회한다.
퍼센트(%)와 언더스코어(_)를 사용하며 퍼센트는 0개 이상의 문자열을 대체, 언더스코어는 단일 문자를 대체한다.
(X) select * from [테이블명] where [열] = [패턴]
(O) select * from [테이블명] where [열] LIKE [패턴]
% : 0개 이상의 문자열을 대체
_(Under score) : 단일 문자를 대체
- LIKE 'A%' : A로 시작하는 모든 문자열
- LIKE '%A' : A로 끝나는 모든 문자열
- LIKE '%A%' : A가 포함된 모든 문자열
- LIKE 'A__' : A로 시작하는 두 글자인 문자열
- LIKE '_A' : A로 끝나는 두 글자인 문자열
- `LIKE '_A_'` : 세 글자 문자열 중 가운데 글자만 A인 문자열
ESCAPE
퍼센트와 언더스코어는 예약어기 때문에 퍼센트를 포함한 문자열(%%%) 또는 언더스코어를 포함한 문자열(%_%)을 검색할 수 없기 때문데 ESCAPE를 사용하여 조회를 한다.
퍼센트가 포함된 컬럼 조회
SELECT * FROM [테이블명] WHERE [열] LIKE '%\%%' ESCAPE '\';
언더스코어가 포함된 컬럼 조회
SELECT * FROM [테이블명] WHERE [열] LIKE '%\_%' ESCAPE '\';
REGEXP
정규표현식(Regular Expression)을 활용하여 문자열 패턴을 만들어 다양한 방법으로 데이터를 조회할 수 있다.
REGEXP 기본형식
SELECT * FROM [테이블명] WHERE [열] REGEXP [정규식];
정규표현식 종류
- . : \n을 제외한 임의의 한 문자
- * : 패턴이 0번 이상 반복
- + : 패턴이 1번 이상 반복
- ^ : 문자열의 처음
- $ : 문자열의 끝
- | : or
- [...] : 대괄호 안 문자
- [^...] : 대괄호 안 문자 아닌 문자여
- {n} : n회 반복
- {m,n} : 반복되는 횟수의 최소, 최댓값
반응형