SQL 기본 문법

SQL 기본 문법6(조건문, 서브쿼리)

ishoe 2021. 2. 7. 17:36

조건문

DBMS 구문
ORACLE DECODE 함수, CASE WHEN 구문
MSSQL CASE WHEN 구문
MYSQL IF 함수, CASE WHEN 구문

조건문 : 조건의 결과에 따라 값을 반환하는 구문. CASE WHEN구문이 공통적으로 쓰인다.

 

CASE WHEN 구문 사용법 : CASE WHEN 조건 THEN [참일 경우 실행되는 구문] ELSE [거짓일 경우 실행되는 구문] END

 

예제 : select case when 1=2 then 'test1' else 'test2' end; 를 입력하면 test2가 출력된다.

실습을 통해서 봤듯이 where절에서도 확인이 가능하다.

 

서브쿼리

서브쿼리 : 하나의 SQL문 안에 또 다른 SQL문이다.

 

사용 예시 : SELECT COLUMN이름1, COLUMN이름2 FROM TABLE이름 WHERE(COLUMN이름)=(SELECT COLUMN이름 FROM TABLE이름 WHERE COLUMN이름=(VALUE)

첫 번째 나오는 SELECT절은 메인쿼리라 하고 뒤에 나오는 SELECT절을 서브쿼리라고 한다.

 

SELECT, FROM, WHERE절에 따른 서브쿼리 명칭

 

스칼라 서브쿼리

SELECT절에서 사용

하나의 레코드와 하나의 컬럼만을 반환

1개의 데이터만 출력 가능하며 다수의 레코드 또는 다수의 컬럼을 반환하면 에러 발생

실습에서 보이는 것과 같이 1개의 레코드가 생성될 때마다 서브쿼리의 결과를 반환받아서 넣는다.

 

인라인 뷰

FROM절에서 사용

하나 이상의 테이블을 기반으로 만들어진 테이블

물리적인 데이터 저장X

논리적으로 구성된 가상 테이블

다수의 컬럼 다수의 레코드가 반환 가능

인라인뷰는 옆에 별칭을 적어줘야 하며 적어주지 않으면 에러가 발생한다.

 

일반 서브쿼리

WHERE절에서 사용

연산자에 따라서 반환되는 레코드 개수와 컬럼 개수가 다름

name이 guest인 값을 찾아 1대1 비교를 하면서 거짓이면 출력을 하지 않고 참인 값을 찾아서 출력한다.

서브쿼리 종류

단일 행 서브쿼리

하나의 레코드만 반환

 

예제 : SELECT name, email FROM member WHERE id=(SELECT id FROM bbs where idx=192)

 

=를 사용해서 1개의 레코드만 반환이 되며 2개 이상이 반환되면 안 됨

 

다중 행 서브쿼리

다수의 레코드 반환

 

예제 : SELECT name, email FROM member WHERE id in(SELECT id FROM bbs)

 

IN연산자를 사용해서 다수의 행까지 비교 가능해서 반환

시퀀스 값이 1~5까지 세팅이 된 다음 해당되는 값들이 매칭 되면서 출력된다.

 

출처: 크리핵티브

강의 사이트: inf.run/7fxB

 

성공적인 SQL 인젝션 공격을 위한, SQL 기본 문법 - 인프런

웹 해킹의 꽃이라 불리는 SQL 인젝션 공격을 익히기 위한 기초 단계! SQL 기본 문법에 대한 강의입니다! 초급 프로그래밍 언어 데이터베이스 보안 SQL 모의해킹 MySQL 데이터베이스 온라인 강의 SQL

www.inflearn.com