테이블에서 특정 데이터나 행을 조회하는 것은 데이터베이스 작업에서 매우 흔한 일입니다. 하지만 기본적으로 조회된 행은 테이블에 저장된 순서 그대로 반환됩니다. 때로는 선택한 행들이 특정 열을 기준으로 오름차순 또는 내림차순으로 정렬되어야 할 필요가 있습니다.
이럴 때 “ORDER BY” 문을 사용하면 쿼리 결과를 원하는 열 기준으로 손쉽게 정렬할 수 있습니다. 다음 예제를 통해 더 자세히 살펴보겠습니다.
예를 들어, “name” 필드를 포함한 여러 필드로 구성된 테이블이 있다고 가정해 보겠습니다. 테이블의 모든 행을 조회하되, 이름의 알파벳 순서대로 정렬된 결과를 얻고 싶다면 어떻게 해야 할까요? 바로 이때 “ORDER BY” 문이 사용됩니다. 이 시나리오에서는 결과를 “name” 필드의 오름차순으로 정렬해야 합니다.
“ORDER BY” 문은 기본적으로 지정된 열을 오름차순(ASC)으로 정렬합니다. 참고로 ASC 키워드는 생략 가능하며, 명시적으로 붙여도 동일하게 동작합니다. 반면 내림차순으로 정렬하고 싶다면 반드시 “DESC” 키워드를 지정해야 합니다.
기본 문법
오름차순 정렬
SELECT * FROM table_name ORDER BY column_name
내림차순 정렬
SELECT * FROM table_name ORDER BY column_name DESC
파이썬에서 MySQL로 조회한 데이터를 정렬하는 단계
MySQL 커넥터(mysql.connector) 임포트
connect() 메서드를 사용하여 데이터베이스 연결 설정
cursor() 메서드로 커서 객체 생성
적절한 MySQL 문을 사용하여 쿼리 작성
execute() 메서드로 SQL 쿼리 실행
작업 완료 후 연결 종료
다음과 같은 “Student”라는 이름의 테이블이 있다고 가정해 보겠습니다.
+----------+---------+-----------+------------+ | Name | Class | City | Marks | +----------+---------+-----------+------------+ | Karan | 4 | Amritsar | 95 | | Sahil | 6 | Amritsar | 93 | | Kriti | 3 | Batala | 88 | | Khushi | 9 | Delhi | 90 | | Kirat | 5 | Delhi | 85 | +----------+---------+-----------+------------+
예제
테이블의 모든 행을 조회하되, 이름의 알파벳 순서대로 정렬된 결과를 얻고 싶습니다. 즉, 결과를 이름(Name) 기준 오름차순으로 정렬하는 것이 목표입니다.
import mysql.connector
db=mysql.connector.connect(host="your host", user="your username", password="your password",database="database_name")
cursor=db.cursor()
query= "SELECT * FROM Students ORDER BY Name"
cursor.execute(query)
for row in cursor:
print(row)위 코드를 성공적으로 실행하면 학생들의 이름이 알파벳 순서(오름차순)에 따라 정렬된 행들이 반환됩니다.
출력 결과
(‘Amit’ , 9 , ‘Delhi’ , 90) (‘Karan’, 4 ,’Amritsar’ , 95) (‘Kriti’ , 3 , ‘Batala’ ,88) (‘Priya’ , 5 , ‘Delhi’ ,85) (‘Sahil’ , 6 , ‘Amritsar’ ,93)
출력된 모든 행이 이름의 알파벳 순서대로 정렬되어 있는 것을 확인할 수 있습니다. 같은 방식으로, 유사한 문법을 활용하면 점수(Marks)나 도시(City) 등 다른 열을 기준으로도 오름차순 또는 내림차순 정렬이 가능합니다. 여러 열을 동시에 정렬해야 하는 경우에는 ORDER BY column1, column2처럼 열을 쉼표로 나열하면 됩니다.