조건문
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
'SQL 기본 문법' 카테고리의 다른 글
SQL 기본 문법7(ORDER BY 절, 레코드 출력 개수 제한) (0) | 2021.02.07 |
---|---|
SQL 기본 문법5(함수) (0) | 2021.02.07 |
SQL 기본 문법4(연산자) (0) | 2021.02.06 |
SQL 기본 문법3(INSERT, SELECT, UPDATE, DELETE 구문) (0) | 2021.02.06 |
SQL 기본 문법2(MySQL 구동, CREATE DROP 구문) (0) | 2021.02.06 |