MySQL에 기본 ORDER BY 값이 존재할까?
결론부터 말하자면, MySQL에는 별도로 지정하지 않아도 자동으로 적용되는 기본 ORDER BY 정렬 규칙이 없습니다. 조회 결과를 원하는 순서로 정렬하고 싶다면 반드시 ORDER BY 절을 직접 작성해야 합니다.
다만 ORDER BY 절을 사용하면서 정렬 방향을 생략하면 오름차순(ASC)이 기본으로 적용됩니다. 정렬 방향은 아래 두 가지입니다.
ORDER BY 컬럼명 ASC; -- 오름차순 (작은 값 → 큰 값)
ORDER BY 컬럼명 DESC; -- 내림차순 (큰 값 → 작은 값)
예제 테이블 생성하기
먼저 실습에 사용할 테이블을 생성해 보겠습니다.
mysql> create table DemoTable
-> (
-> StudentName varchar(100)
-> );
Query OK, 0 rows affected (0.82 sec)
데이터 삽입
INSERT 명령어로 학생 이름 데이터를 여러 개 추가합니다.
mysql> insert into DemoTable values('Sam');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values('Chris');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('David');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values('Bob');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values('Robert');
Query OK, 1 row affected (0.25 sec)전체 데이터 조회
SELECT 문으로 테이블의 모든 레코드를 확인해 보겠습니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+-------------+
| StudentName |
+-------------+
| Sam |
| Chris |
| David |
| Bob |
| Robert |
+-------------+
5 rows in set (0.00 sec)
위 결과에서 알 수 있듯이, ORDER BY 없이 조회한 데이터는 삽입된 순서와 일치해 보일 수 있지만 이는 전혀 보장되지 않습니다. 저장 엔진, 인덱스 유무, 내부 실행 계획에 따라 반환 순서가 언제든 달라질 수 있다는 점을 기억해야 합니다.
Case 1: 오름차순 정렬 (ASC)
이름을 알파벳 순서대로 오름차순 정렬하려면 다음과 같이 작성합니다.
mysql> select *from DemoTable order by StudentName asc;
실행 결과:
+-------------+
| StudentName |
+-------------+
| Bob |
| Chris |
| David |
| Robert |
| Sam |
+-------------+
5 rows in set (0.00 sec)
Case 2: 내림차순 정렬 (DESC)
반대로 큰 값부터 작은 값 순으로 정렬하려면 DESC 키워드를 사용합니다.
mysql> select *from DemoTable order by StudentName desc;
실행 결과:
+-------------+
| StudentName |
+-------------+
| Sam |
| Robert |
| David |
| Chris |
| Bob |
+-------------+
5 rows in set (0.00 sec)
핵심 정리
- MySQL에는 자동으로 적용되는 기본 정렬 순서가 없으므로, 원하는 순서가 있다면 반드시
ORDER BY를 명시해야 합니다. ORDER BY사용 시 정렬 방향을 생략하면 오름차순(ASC)이 적용됩니다.ORDER BY없이 조회한 결과의 순서는 보장되지 않으므로, 출력 순서가 중요한 로직에서는 항상 명시적인 정렬을 사용하는 것이 안전합니다.