본문 바로가기

SQL

성공적인 SQL Injection을 위한 SQL 문법 - 조건문, 서브쿼리

CASE WHEN 구문

기본 틀 

CASE WHEN [조건문] THEN [참] ELSE [거짓] END

 

ex ) select * from member where seq=(case when 1=1 then 1 else 2 end);

 

ex ) select case when 1=2 then 'test1' else 'test2' end;

 

 

 

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

 

서브쿼리

 

개념

메인쿼리 안에 또 하나의 select 구문이 들어가는 형태

 

 

형태를 보자면

SELECT (SubQuery) FROM (SubQuery) a WHERE [COLUMN] = (SubQuery)

인데 어떤 위치에 오냐에 따라서 서브쿼리의 명칭이 다르다

 

1 ) SELECT 다음에 오는 SubQuery를 스칼라 서브쿼리라고 부름

 

2) FROM 다음에 오는 SubQuery를 인라인 뷰라고 부름

 

3) [ COLUMN ] = 다음에 오는 SubQuery를 일반 서브쿼리라고 부름

 

서브쿼리의 종류

  • 단일 행 서브쿼리     
  • 다중 행 서브쿼리

예를 들어, SELECT name, (select version()) from member ;

라고 입력하면 name 한 개가 호출될 때마다 그에 맞는 version이 같이 호출된다.

 

다중행 서브쿼리를 사용할 때는 in 연산자를 같이 사용해줘야 출력이 가능해진다.

 

ex ) select * from member where seq in (select seq from member);