SQL기초강좌
집합연산자
집합연산자
하나의 SELECT문의 결과가 다른 Select문의 결과와 합집합, 교집합, 차집합
등 새로운 결과를 만들어 낼 때 사용하는 연산자 이다. 이러한 집한 연산자를
사용하기 위해서는 연산을 하는 SELECT문의 결과와 칼럼 구조(개수, 타입)가
같아야 한다. 즉 같은 데이터 형이며 순서 또한 같아야 한다. 결과의 칼럼 명은
첫번째 SELECT문의 칼럼 명이 사용된다.
UNION : 연결된 Select문의 결과 합을 구해준다. 중복된 것은 하나만 보여줌
UNION ALL : 연결된 Select문의 결과 합을 구해준다.
중복된 ROW가 있더라도 모두 보여줌, 정렬이 일어나지 않는다.
INTERSECT : 연결된 Select문의 결과 교집합을 구해준다.
MINUS : 연결된 Select문의 결과 차를 구해준다.
SQL기초강좌_집합연산자
-- 실습을 위해 고객용 Table 두개를 만들자.
SQL> create table customer1 (
name varchar2(10) not null,
addr varchar2(50));
테이블이 생성되었습니다.
SQL> create table customer2 (
name varchar2(10) not null,
addr varchar2(50));
테이블이 생성되었습니다.
집합연산자
SQL기초강좌_집합연산자
SQL> insert into customer1 values ('나길동','서울');
1 개의 행이 만들어졌습니다.
SQL> insert into customer1 values ('가길동','부산');
1 개의 행이 만들어졌습니다.
SQL> insert into customer2 values ('라길동','서울');
1 개의 행이 만들어졌습니다.
SQL> insert into customer2 values ('가길동','부산');
1 개의 행이 만들어졌습니다.
SQL> commit;
커밋이 완료되었습니다.
집합연산자
SQL기초강좌_집합연산자
SQL> select name, addr from customer1
union
select name, addr from customer2;
NAME ADDR
---------- -----------------------------------
가길동 부산
나길동 서울
라길동 서울
집합연산자
SQL기초강좌_집합연산자
SQL> select name, addr from customer1
union all
select name, addr from customer2;
NAME ADDR
---------- -----------------------------------
나길동 서울
가길동 부산
라길동 서울
가길동 부산
집합연산자
SQL기초강좌_집합연산자
SQL> select name, addr from customer1
intersect
select name, addr from customer2;
NAME ADDR
---------- -----------------------------------
가길동 부산
집합연산자
SQL기초강좌_집합연산자
SQL> select name, addr from customer1
minus
select name, addr from customer2;
NAME ADDR
---------- -----------------------------------
나길동 서울
집합연산자
SQL기초강좌_집합연산자
--아래 예문을 보면 결과 칼럼의 컬 럼명은 첫번째 Select문의 칼럼명이 사용
됨을 알수있다.
SQL> select name as "이름1" , addr as "주소1" from customer1
minus
select name as "이름2" , addr as "주소2" from customer2;
이름1 주소1
---------- --------------------------------------------------
나길동 서울
집합연산자
SQL기초강좌_집합연산자

집합연산자

  • 1.
  • 2.
    집합연산자 하나의 SELECT문의 결과가다른 Select문의 결과와 합집합, 교집합, 차집합 등 새로운 결과를 만들어 낼 때 사용하는 연산자 이다. 이러한 집한 연산자를 사용하기 위해서는 연산을 하는 SELECT문의 결과와 칼럼 구조(개수, 타입)가 같아야 한다. 즉 같은 데이터 형이며 순서 또한 같아야 한다. 결과의 칼럼 명은 첫번째 SELECT문의 칼럼 명이 사용된다. UNION : 연결된 Select문의 결과 합을 구해준다. 중복된 것은 하나만 보여줌 UNION ALL : 연결된 Select문의 결과 합을 구해준다. 중복된 ROW가 있더라도 모두 보여줌, 정렬이 일어나지 않는다. INTERSECT : 연결된 Select문의 결과 교집합을 구해준다. MINUS : 연결된 Select문의 결과 차를 구해준다. SQL기초강좌_집합연산자
  • 3.
    -- 실습을 위해고객용 Table 두개를 만들자. SQL> create table customer1 ( name varchar2(10) not null, addr varchar2(50)); 테이블이 생성되었습니다. SQL> create table customer2 ( name varchar2(10) not null, addr varchar2(50)); 테이블이 생성되었습니다. 집합연산자 SQL기초강좌_집합연산자
  • 4.
    SQL> insert intocustomer1 values ('나길동','서울'); 1 개의 행이 만들어졌습니다. SQL> insert into customer1 values ('가길동','부산'); 1 개의 행이 만들어졌습니다. SQL> insert into customer2 values ('라길동','서울'); 1 개의 행이 만들어졌습니다. SQL> insert into customer2 values ('가길동','부산'); 1 개의 행이 만들어졌습니다. SQL> commit; 커밋이 완료되었습니다. 집합연산자 SQL기초강좌_집합연산자
  • 5.
    SQL> select name,addr from customer1 union select name, addr from customer2; NAME ADDR ---------- ----------------------------------- 가길동 부산 나길동 서울 라길동 서울 집합연산자 SQL기초강좌_집합연산자
  • 6.
    SQL> select name,addr from customer1 union all select name, addr from customer2; NAME ADDR ---------- ----------------------------------- 나길동 서울 가길동 부산 라길동 서울 가길동 부산 집합연산자 SQL기초강좌_집합연산자
  • 7.
    SQL> select name,addr from customer1 intersect select name, addr from customer2; NAME ADDR ---------- ----------------------------------- 가길동 부산 집합연산자 SQL기초강좌_집합연산자
  • 8.
    SQL> select name,addr from customer1 minus select name, addr from customer2; NAME ADDR ---------- ----------------------------------- 나길동 서울 집합연산자 SQL기초강좌_집합연산자
  • 9.
    --아래 예문을 보면결과 칼럼의 컬 럼명은 첫번째 Select문의 칼럼명이 사용 됨을 알수있다. SQL> select name as "이름1" , addr as "주소1" from customer1 minus select name as "이름2" , addr as "주소2" from customer2; 이름1 주소1 ---------- -------------------------------------------------- 나길동 서울 집합연산자 SQL기초강좌_집합연산자