Oh! JUN
UNION과 UNION ALL 차이점 실습 본문
# 실습 세팅
create database union_test;
use union_test;
create table user1(seq int, id varchar(10));
create table user2(seq int, id varchar(10));
insert into user1 values(1, 'admin');
insert into user1 values(2, 'test1');
insert into user1 values(3, 'test2');
insert into user2 values(1, 'admin');
insert into user2 values(2, 'test2');
insert into user2 values(3, 'test3');

1. union 실습

select * from user1 union select * from user2;
| seq | id | seq | id | seq | id | 
| 1 | admin | ||||
| 2 | test1 | 2 | test2 | 2 | test1 | 
| 3 | test2 | 3 | test3 | 3 | test2 | 
| 2 | test2 | ||||
| 3 | test3 | 
- seq : 1 / id : admin 은 중복이어서 제거

select id from user1 union select id from user2;
| seq | id | seq | id | seq | id | 
| admin | |||||
| test1 | test1 | ||||
| test3 | |||||
| test3 | 
- id만 조회하니까 seq는 무시되고, id만 보면 admin 중복 제거, test2 중복 제거

select seq from user1 union select seq from user2;
| seq | id | seq | id | seq | id | 
| 1 | 1 | ||||
| 2 | 2 | ||||
| 3 | 3 | ||||
- seq만 조회하니까 id는 무시되고, seq만 보면 1, 2, 3 모두 중복 제거 그래서 1, 2, 3만 남음
2. UNION ALL 실습

select * from user1 union all select * from user2;
| seq | id | seq | id | seq | id | 
| 1 | admin | 1 | admin | 1 | admin | 
| 2 | test1 | 2 | test2 | 1 | admin | 
| 3 | test2 | 3 | test3 | 2 | test1 | 
| 3 | test2 | ||||
| 2 | test2 | ||||
| 3 | test3 | 
- union all은 중복을 제거하지 않는다.
- 그래서 중복을 제거하는 union 보다 속도가 빠르다.

select id from user1 union al l select id from user2;
| seq | id | seq | id | seq | id | 
| admin | admin | admin | |||
| test1 | test2 | admin | |||
| test2 | test3 | test1 | |||
| test2 | |||||
| test2 | |||||
| test3 | 

select seq from user1 union all select seq from user2;
| seq | id | seq | id | seq | id | 
| 1 | 1 | 1 | |||
| 2 | 2 | 1 | |||
| 3 | 3 | 2 | |||
| 3 | |||||
| 2 | |||||
| 3 | 
'웹 해킹 > SQL Injection' 카테고리의 다른 글
| ORDER BY , UNION 구문 실행 확인 실습 (0) | 2022.08.25 | 
|---|---|
| UNION 공격 검증 (0) | 2022.08.25 | 
| 아이디 중복 조회 기능 제작을 통한 UNION 공격 가능 여부 판단 (0) | 2022.08.24 | 
| 효과적으로 DBMS 에러를 발견하기 위한 방법(설정) (0) | 2022.08.24 | 
| ORACLE ERROR-BASED 공격 실습 (0) | 2022.08.23 |