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 |