< Union >  
Join    => 컬럼을 합치는 것   
A 테이블의 a,b,c 컬럼과  
B 테이블의   d,e 컬럼을 합쳐서  
a , b,  c ,d ,e  컬럼으로 보여주는 것  
Union  => 레코드를 합치는 것 ( 합집합 ) 
  => 중복되는거 하나로 봄  
create table A( 
select * from employees  
where department_id = 50);  
create table B( 
select * from employees  
where salary < 10000); 
재난지원금 주고싶다.  
50번 부서사람들 한테 줄꺼고  
봉급낮은 사람 줄거다.  
=> 합집합 =>  중복 X => 중복지급 X    
select first_name from A 
Union                
select first_name from B;  
      
< Union All  => 중복되던 말던 그냥 다 보여줘 >
< SubQuery 서브쿼리 > 
select - select 서브쿼리  
select department_id from employees 
where first_name = 'kelly';   => 50 
켈리 부서번호를 찾아서 (50이네) 
그 부서번호의 다른 사원들 찾아보고싶다  
select first_name
from employees  
where department_id = 50;  
=> 이걸 서브쿼리로 합쳐서 한번에 가능  
Select  first_name, department_id 
from employees  
where department_id =  
( Select department_id from employees 
where first_name = 'kelly' ) ;   
=> 괄호처리 를 해서 서브쿼리임을 알리고  
먼저 실행하게 한다. 
=> 그 결과 값을 넣어서 사용
위와 같이 department_id  =    이퀄을 사용할 경우에는 
- ( )서브쿼리 리턴값의 개수와 타입은  
그걸 받는 개수 타입과 같아야 한다. 
예를들어, 부서id 가 50 하나 리턴이면 위의 결과 잘 나오지만  
부서 id 가 50, 80 두개를 리턴하는데,  = 이퀄이면 오류난다. 
=> IN 을 사용한다  
< 다중행 서브쿼리 => IN 사용 >  
select first_name, deparment_id 
from employees  
where deparment_id  IN
( select department_id  
from emplyees 
where first_name = peter);  
( 몇개 나올지 모를때도 IN 쓰면 다 해결.  
반드시 하나만 나오는게 확실할 때만 = 쓴다 )  
<* NOT IN > => 없을때 ! ( 여집합 )
<  서브쿼리로도,  데이터 여러개 조회 가능  >
select first_name, department_id 
from employees  
where ( job_id, department_id ) =  
(select  job_id,  department_id  from employees 
where first_name = 'kelly'); 
=> where 조건과 숫자 타입 맞춰서 사용 
'Back to the DataBase' 카테고리의 다른 글
| JAVA 에서 SQL 문으로 DB 이용하기 (0) | 2022.07.18 | 
|---|---|
| JAVA => JDBC => MySQL DB 연동 (0) | 2022.07.18 | 
| Foreign Key / CASCADE / 그리고 Constraint 제약조건들. (0) | 2022.07.15 | 
| MySQL Join 쿼리 / 효율적인 DB의 시작 (0) | 2022.07.14 | 
| MySQL 데이터타입 => int / decimal / varchar / datetime (0) | 2022.07.14 |