코딩두의 포트폴리오

6. MySQL 데이터베이스 자료의 정렬 본문

STEP 특화교육/MySQL 데이터베이스 기초와 Web 활용

6. MySQL 데이터베이스 자료의 정렬

코딩두 2025. 5. 21. 15:57

ORDER BY 

- MySQL에서 특정 칼럼을 기준으로 정렬 하고자 할 때 사용하는 옵션

- 특정 칼럼을 기준으로 내림차순, 오름차순 정렬 가능

number를 기준으로 오름차순 정렬

 

오름차순으로 정렬하기

<명령 구문>

SELECT * FROM 테이블명 ORDER BY 칼럼명;

SELECT * FROM 테이블명 ORDER BY 칼럼명 ASC;

amount 칼럼 기준 정렬
ASC 옵션 적용(오름차순 정렬)

 

내림차순으로 정렬하기

<명령 구문>

SELECT * FROM 테이블명 ORDER BY 칼럼명 DESC;

amount 칼럼 기준 내림차순 정렬

 

칼럼 기준 정렬 적용 방법

칼럼 데이터 중 값이 중복되는 경우 -> 특정 칼럼 값이 중복되는 경우 다른 칼럼을 기준으로 재정렬 가능

 

ex) amount 칼럼값이 각각 10으로 동일한 경우 -> number 칼럼을 기준으로 내림차순 or 오름차순으로 정렬 가능

 

칼럼 간 합계 구하기

국어 점수(Korean)와 영어 점수(English)에 대하여 1월, 2월, 3월 자료가 다음과 같을 경우
➔ 매월 국어 점수와 영어 점수 합계를 구할 수 있음

SELECT 기준칼럼명, 칼럼1 + 칼럼2 +… FROM 테이블명;

- 기준 칼럼명은 출력 기준이 되는 칼럼

- 칼럼 간 합계는 2개 이상 가능

 

Aliasing(별칭)을 사용한 칼럼 간 합계 구하기

SELECT 기준칼럼명, 칼럼1 + 칼럼2+… 
AS 별칭칼럼 FROM 테이블명 ORDER BY 별칭칼럼;

- 기준 칼럼명은 출력 기준이 되는 칼럼

- 칼럼 간 합계는 2개 이상 가능

AS - Aliasing을 의미 / AS 뒤에 임시 칼럼명을 설정(별칭 칼럼)

- ORDER BY 별칭 칼럼 뒤에는 ASC 또는 DESC 옵션 가능

 

LIMIT 구문

- 출력되는 레코드의 개수를 제한하는 구문

(첫 번째 레코드를 기준으로 레코드 개수 제한 / 특정 레코드를 기준으로 개수를 제한)

- MySQL에서만 사용됨

- 다른 RDBMS에서는 사용 불가(SQL의 표준이 X)

(ex 1) LIMIT 사용 경우

 

(ex 2) 4번째 레코드부터 2개의 레코드만 출력하는 경우

 

RAND() 함수

- 레코드의 순서를 무작위 순으로 정렬하는 구문

- 반복적으로 명령을 실행할 때마다 무작위로 정렬

 

자료 정렬 필요 칼럼 선정

Web 테이블에서 제목을 클릭할 경우 정렬이 되도록 동적 구성함
ex) number, amount, date를 선정함
- number 클릭 시 number 기준 오름차순 정렬
- amount 클릭 시 내림차순 정렬
- date 클릭 시 내림차순 정렬

amount, date 클릭 결과

 

조건별 Web 정렬 원리 - 조건의 설계

1) 조건 1-> 클라이언트가 amount 기준 정렬을 하고자 할 경우
2) 조건 2 -> 클라이언트가 date 기준 정렬을 하고자 할 경우
1) 조건 3 -> 조건 1, 조건 2에 해당하지 않는 조건일 경우

 

조건에 따른 PHP 문법 -> if 문법 사용

if(조건1) { 실행 }
elseif(조건2) { 실행 }
else { 실행 }

 

조건의 구체화

- 조건의 기준을 판별하기 위해 view라는 변수명을 작명하여 생성

- list.php 파일을 Web에서 로딩할 때 변수 view에 대입된 값으로 조건을 판정

 

변수 값의 전달

1) 칼럼 제목 클릭 시 변수값 전달
▪ number 클릭 시 $view 값 null 전달
▪ amount 클릭 시 $view 값 1 전달
▪ data 클릭 시 $view 값 2 전달

 

2) 변수값 전달 방식 - (경로/Web페이지?변수=값) 링크 클릭 시 전달
▪ http : //도메인/list.php
▪ http : //도메인/list.php?view=1
▪ http : //도메인/list.php?view=2

 

전체 자료 출력 페이지 코드 분석

MySQL DB 접속과 Web 테이블 상단 제목 부분
조건 1의 경우

- view의 값이 1일 경우 -> amount를 기준으로 내림차순 정렬

 

조건 2의 경우

- view의 값이 2일 경우 -> date를 기준으로 내림차순 정렬

 

조건1, 조건2 모두 해당하지 않는 경우

- view의 값이 null일 경우 -> 기본 정렬(number 칼럼 기준 오름차순)

 

MySQL 쿼리 출력 후 페이지

 

if 조건문 대체 문법

- 조건식이 많을 경우 SWITCH 문법 사용(PHP 문법)

SWITCH 문법 구조