728x90
반응형
SMALL
1. JOIN
- 두 개 이상의 테이블을 묶어서 하나의 결과 집합으로 만들어 내는 것
- 서로 다른 테이블에서 데이터를 가져올 때 사용
- SELECT와 더불어 가장 많이 사용하는 옵션 중 하나
select 필드명1, 필드명2, ... from 테이블1
[inner join/ left / right] join
테이블2 on 테이블1.연결할필드(pk) = 테이블2.연결할필드(fk);
1-1. INNER JOIN
- 조인하는 테이블의 on 절의 조건이 일치하는 결과만 출력
- join, inner join, cross join 모두 같은 의미로 사용됨
✅ member 태이블과 profile 테이블을 userid로 inner join 해보기!
select * from member;
select * from profile;
📍 select절에 userid가 어느 테이블의 userid인지 모호함, 테이블의 별명을 설정하여 작성
/* 에러
select userid, username, hp, height, weight, mbti from member
inner join profile on member.userid = profile.userid;
*/
select m.userid, m.username, m.hp, p.height, p.weight, p.mbti from member as m
inner join profile as p on m.userid = p.userid;
profile 테이블 데이터는 memeber 테이블의 데이터가 있는 경우만 입력가능하기 때문에 inner join의 결과와 같음
1-2. LEFT OUTER JOIN
- 두 테이블이 조인될 때 왼쪽 테이블을 기준으 왼쪽 테이블의 데이터를 모두 출력함
- left outer join은 왼쪽 테이블의 on 절의 조건 데이터를 모두 가져옴
✅ member 테이블과 profile 테이블을 userid로 left outer join 해보기!
select m.userid, m.username, m.hp, p.height, p.weight, p.mbti from member as m
left outer join profile as p on m.userid = p.userid;
1-3. RIGHT OUTER JOIN
- 두 테이블이 조인될 때 오른쪽 테이블을 기준으 오른쪽 테이블의 데이터를 모두 출력함
- right outer join은 오른쪽 테이블의 on 절의 조건 데이터를 모두 가져옴
✅ member 테이블과 profile 테이블을 userid로 right outer join 해보기!
select m.userid, m.username, m.hp, p.height, p.weight, p.mbti from member as m
right outer join profile as p on m.userid = p.userid;
2. UNION
- 합집합을 나타내는 연산자로, 중복된 값을 제거함
- 서로 같은 종류의 테이블(컬럼이 같아야 함)에서만 적용이 가능
select 컬럼명1, 컬럼명2,... 테이블1
union
select 컬럼명1, 컬럼명2,... from 테이블2
2-1. UNION
✅ product 테이블과 product_new 테이블을 생성하고 데이터 입력하기
create table product(
code varchar(6) not null,
name varchar(50) not null,
detail varchar(1000),
price int default 0,
regdate datetime default now()
);
insert into product values('100000', '아이폰14', '예뻐요', 1500000, now());
insert into product values('100001', '갤럭시23', '좋아요', 1300000, now());
insert into product values('100002', '맥북에어', '가벼요', 1400000, now());
select * from product;
create table product_new(
code varchar(6) not null,
name varchar(50) not null,
detail varchar(1000),
price int default 0,
regdate datetime default now()
);
insert into product_new values('200000', '엘지그램', '가벼워요', 1500000, now());
insert into product_new values('200001', '삼성모니터', '잘보여요', 500000, now());
insert into product_new values('100001', '갤럭시23', '좋아요', 1300000, now());
select * from product_new;
✅ product 테이블과 product_new 테이블을 union 해보자!
select code, name, price from product
union
select code, name, price from product_new;
📍 두 테이블을 union 할 때 데이터가 동일한 필드만 출력하면 중복된 데이터는 제거되지만, 서로 다른 데이터가 들어있는 필드를 출력하면 중복값이 아니기 때문에 모두 출력됨.
select code, name, price, regdate from product
union all
select code, name, price, regdate from product_new;
2-2) UNION ALL
- 합집합을 나타내는 연산자로, 중복된 값을 제거하지 않음
select code, name, price from product
union all
select code, name, price from product_new;
728x90
반응형
LIST
'DataBase > MySQL' 카테고리의 다른 글
[MySQL] MySQL함수 - 2️⃣문자열 함수 (0) | 2023.03.20 |
---|---|
[MySQL] 서브쿼리(Sub Query)에 대해 알아보자! 🧐 (0) | 2023.03.20 |
[MySQL] MySQL 함수 - 1️⃣ 집계 함수 (0) | 2023.03.16 |
[MySQL] 필드 기준으로 그룹 하기, 그룹에 조건 달기 - GROUP BY, HAVING (0) | 2023.03.16 |
[MySQL] 테이블에서 데이터 정렬하기 - ORDER BY절 (0) | 2023.03.16 |