SQL

[SQL] UNION ,ORDER BY, LIMIT , LIKE

무너박사 2024. 5. 26. 23:54

 

웹 해킹 기법중 'SQL 인젝션' 이라는 공격이 있다.

그 공격을 사용하면서 주로 썻던 문법을 적어볼까 한다.

 

    <목차>

  • ORDER BY
  • UNION
  • LIMIT
  • LIKE

이해하기 쉽게 설명은 간략! 예시를 위주로!

 


- ORDER BY

 

용도  : <컬럼명을 기준으로 정렬하기 위한 문법이다>

 

사용법 : SELECT [컬럼명] FROM [테이블 명] ORDER BY [컬럼명] 

             => [컬럼명]을 기준으로 정렬을 하라!

 

            **[컬럼명] 이 숫자일땐? : 인덱스에 맞는 컬럼으로 정렬하라!

            예를들어 컬럼이 ID,NAME,PASS,NUMBER 이런식으로 4가지가 있다고 가정하자.

            여기서 SELECT * FROM TEST ORDER BY 2 라고 하게 되면 NAME 이라는 컬럼을 기준으로 정렬하게됨!

 

예시 : SELECT * FROM TEST order by 3

=> test 라는 테이블에서 데이터를 다 가져온후 3번째 컬럼을 기준으로 정렬해라

 

 


 

- UNION

 

용도 : 두가지 명령문의 결과를 한꺼번에 실행하기 위해 사용한다.

 

사용법 : SELECT [컬럼명] FROM [테이블 명] UNION SELECT [컬럼명] FROM [테이블 명] 

            => 두가지의 SELECT 명의 결과를 한꺼번에 출력해준다!

 

            **주의할 점은 앞서 나온 SELECT 문의 컬럼을 따른다!

            또한 전과 후의 명령문에 컬럼개수가 일치해야한다!!!

 

            먼저 쓴 명령문의 결과의 컬럼이 IDX,NAME,PASS 이고

            후반에 쓴 명령문의 결과의 컬럼이 SCORE,JOIN,TAX 라고 해보자

 

 

<첫번째 결과> + <두번째 결과>

IDX NAME PASS
1 KANE LES4522
2 JAIN PASS1234
32점 YES 45%

 


 

 

 

-LIMIT

 

 용도 : 지정한 갯수만큼의 자료만 보여집니다.

 

사용법 : SELECT [컬럼명] FROM [테이블 명] LIMIT 0,3

             =>  가져온 데이터에서 0번째 행부터 3개를 가져와라. 즉! 0,1,2, 번째 행을 가져와라!

 

예시: select * from test limit 2,1

=> test 테이블에서 전체 행을 가져온후 2번째 행을 기준으로 1개의 행을 가져와라

즉! 2번째 행을 가지고 오란소리다!

 


 

 

 

-LIKE

 

용도 : 지정한 문자열이 포함된 데이터를 가져옵니다. 주로 게시글 검색 기능에 쓰임.

 

사용법 : SELECT [컬럼명] FROM [테이블 명] WHERE [컬럼명] LIKE '%찾을내용%'

 

LIKE 절의 형태는 3가지의 경우가 있는데 예시를 들어서 설명해드리겠습니다.

 

<첫번째>

SELECT * FROM TEST WHERE NAME LIKE '%HAND%'

=> NAME 이라는 컬럼에서 중간에 'HAND' 라는 문자열이 들어가는 행을 다 가지고 와라.

 

<두번째>

SELECT * FROM TEST WHERE NAME LIKE '%HAND'

=> NAME 이라는 컬럼에서 마지막에 'HAND' 라고 끝나는  문자열이 들어간 행을 다 가지고 와라.

 

<세번째>

SELECT * FROM TEST WHERE NAME LIKE 'HAND%'

=> NAME 이라는 컬럼에서 시작할때 'HAND' 라고 시작하는 부분이 들어간 행을 다 가지고 와라.

 

 


 

긴글 읽어주셔서 감사합니다!