Oh! JUN

UNION과 UNION ALL 차이점 실습 본문

웹 해킹/SQL Injection

UNION과 UNION ALL 차이점 실습

Kwon Oh! JUN 2022. 8. 24. 19:29

# 실습 세팅

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 1 admin 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
1 admin 1 admin 1 admin
2 test1 2 test2 2 test1
3 test2 3 test3 3 test2
        2 test2
        3 test3

- id만 조회하니까 seq는 무시되고, id만 보면 admin 중복 제거, test2 중복 제거


 

 

select seq from user1 union select seq from user2;

seq  id seq id seq id
1 admin 1 admin 1 admin
2 test1 2 test2 2 test1
3 test2 3 test3 3 test2
        2 test2
        3 test3

- 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
1 admin 1 admin 1 admin
2 test1 2 test2 1 admin
3 test2 3 test3 2 test1
        3 test2
        2 test2
        3 test3

 

select seq from user1 union all select seq 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