본문 바로가기

SQL

성공적인 SQL Injection을 위한 SQL 문법 - ORDER by 절, 레코드 출력 개수 제한

ORDER BY 절을 이용한 정렬

기본 형태

=> SELECT COLUMN1, COLUMN2 FROM TABLE ORDER BY COLUMN [ASC/DESC]

 

ASC : 오름차순 (ASCENDING)

DESC : 내림차순 (DESCENDING)

 

오름차순과 내림차순의 기준?

오름차순은 처음 오는 컬럼이 작은 수가 온다.

그 후 점점 커지는 순서

 

내림차순은 처음 오는 컬럼이 큰 수가 온다.

그 후 점점 작아지는 순서

 

ex ) select * from member order by seq;

           이 명령어를 입력하면 seq 컬럼에 대해서만 정렬이 된다.

       select * from member order by seq, name;

           이 명령어를 입력하면 seq와 name 컬럼에 대해서 모두 정렬이 된다.

 

 

** 숫자도 사용할 수 있다

select * from member order by 1 ;

select * from member order by 3;

 등등

 

여기서의 1과 3은 컬럼 번호를 의미한다.

seq, name, email로 이루어진 데이터베이스 테이블이 있다고 하면,

1번은 seq, 2번이 name, 3번이 email을 의미한다.

 

만약에

select seq, name from member order by 3;

라고 입력하면

3번은 email인데 seq, name만을 호출했으므로 에러가 난다.

 

 

------------------------------------------------------------------------------------------------------------

레코드 출력 개수 제한

보통 출력되는 개수를 조절할 때 WHERE 절을 이용한다.

그런데 검색엔진 처럼 WHERE절을 이용해도 출력되는 갯수가 너무 많을 때에는

위와 같은 키워드를 입력한다.

   ex ) 페이지 처리

 

MySQL 같은 경우는 LIMIT 절을 이용한다

 

기본 형태

SELECT COLUMN1, COLUMN2 FROM TABLE

                                                                 LIMIT [OFFSET], [ROW_COUNT]

SELECT COLUMN1, COLUMN2 FROM TABLE

                                                                 LIMIT [ROW_COUNT]

 

   ex) SELECT * FROM member limit 1, 4;

라고 입력하면 1을 제외한 4까지의 컬럼이 출력된다