Join
join: 두개 이상의 테이블에서 중복이거나 특정 연관있는 데이터를 기반으로 데이터를 출력, 조회하는 기능
여러개의 테이블의 데이터를 가져와 마치 하나의 테이블인 것처럼 출력하는 기능
아무 데이터나 가져와서 출력하는 기능은 아니고 연관있는 데이터를 조건으로 지정하여 출력하는 기능
컬럼을 기반으로 출력
특정 테이블의 컬럼의 데이터와 다른 데이터의 컬럼의 데이터를 가져와 마치 하나의 테이블처럼 붙여서 출력
Join 종류
- - INNER JOIN(내부 조인) : 교집합
- OUTER JOIN(외부 조인) : 합집합
- LEFT OUTER JOIN(왼쪽 외부 조인)
- RIGHT OUTER JOIN(오른쪽 외부 조인)
- FULL OUTER JOIN(완전 외부 조인)
INNER JOIN(내부 조인)
MariaDB > SELECT <컬럼 [ ,... ]> FROM <테이블A> INNER JOIN <테이블B> ON <조건 구문> ;
select m_name,s_level,s_attack,m_seller from market inner join sword on m_name=s_name;
- 암시적조인표현
MariaDB > SELECT <컬럼 [ ,... ]> FROM <테이블A> , <테이블B> WHERE <조건 구문> ;
select s_name,m_category,m_seller from market,sword where m_name=s_name;
*inner join만 가능하고 다른 join은 where로 쓸 수가 없음
다 on으로 써야 한다
LEFT OUTER JOIN(왼쪽 외부 조인)
MariaDB > SELECT <컬럼 [ ,... ]> FROM <테이블A> LEFT JOIN <테이블B> ON <조건 구문> ;
select m_no,m_name,m_seller,s_level,s_attack from market left join sword on m_name=s_name;
RIGHT OUTER JOIN(오른쪽 외부 조인)
MariaDB > SELECT <컬럼 [ ,... ]> FROM <테이블A> RIGHT JOIN <테이블B> ON <조건 구문> ;
컬럼명을 동일하게 쓰는 경우가 많다. 따라서 이름이 같을 시 테이블명을 꼭 앞에 붙여줘야 한다.
select market.name,sword.name from market inner join sword on market.name=sword.name;
union
union: 집합 연산자 중 하나의 기능이며 중복된 데이터를 생략해주는 기능
select 컬럼명,컬럼명 from 테이블명1 union select 컬럼명,컬럼명 from 테이블명2;
select 컬럼명,컬럼명 from 테이블명1 union select 컬럼명,컬럼명 from 테이블명2 union select 컬럼명,컬럼명 from 테이블명3;
select m_name,m_seller from market union select s_name,s_level from sword;
*주의점: 첫번째 테이블1과 두번째 테이블2의 컬럼 수가 동일해야 한다.
select문 사이에 union만 잘 넣어주면 된다. 컬럼 수 동일하게만 맞춰주기. 그래서 사이에 where를 넣어도 되고 ~~ 상관없음
select * from sword union select * from staff order by s_attack desc;
정렬을 할때는 기준을 첫번째 칼럼을 기준으로 한다.
select * from market inner join sword on m_name=s_name union select * from market inner join staff on M_name=f_name;
'DB' 카테고리의 다른 글
서브쿼리 sub query 란 무엇인가, 의미, 기본, 종류, 예시, 주의점 (0) | 2025.05.12 |
---|---|
MariaDB - schema스키마/ information_schema (0) | 2025.05.11 |
database engine / 데이터베이스 엔진 (0) | 2025.05.11 |
연습문제 풀이 SQL (DDL,DML,DCL,Join,Union,서브쿼리) (0) | 2025.05.10 |
DML (데이터 조작 언어) 명령어+ 추가로 알아두면 좋은 select 절 (0) | 2025.05.08 |