내부 조인의 기본 ( INNER JOIN)
SELECT <열 목록>
FROM <첫 번째 테이블>
INNER JOIN <두 번째 테이블>
ON < 조인될 조건>
[WHERE <검색조건>]
[ORDER BY <기준>]
예시
USE market_db;
SELECT b.mem_id , m.mem_name, b.prod_name, m.addr, CONCAT(m.phone1, m.phone2) '연락처'
FROM buy b
INNER JOIN member m
ON b.mem_id = m.mem_id
ORDER BY m.mem_id;
외부조인 (OUTER JOIN)
SELECT [컬럼 이름]
FROM [테이블 A 이름]
LEFT JOIN [테이블 B 이름]
ON [테이블 A 이름].[컬럼 A 이름] = [테이블 B 이름].[컬럼 B 이름]
UNION --두 쿼리의 결과를 중복을 제외하고 합쳐서 보여주는 집합연산자
SELECT [컬럼 이름]
FROM [테이블 A 이름]
RIGHT JOIN [테이블 B 이름] ON[테이블A이름].[컬럼A이름]=[테이블B이름].[컬럼B이름];
SELECT <열 목록>
FROM <첫 번째 테이블 (LEFT 테이블)>
<LEFT | RIGHT | FULL> OUTER JOIN <두 번째 테이블(RIGHT 테이블)>
ON < 조인될 조건>
[WHERE <검색조건>]
[ORDER BY <기준>]
- LEFT OUTER JOIN ( LEFT JOIN) : 왼쪽 테이블을 기준으로 외부 조인 (왼쪽 테이블의 내용은 모두 출력되어야 한다)
- FULL OUTER JOIN : 왼쪽이든 오른쪽이든 한쪽에 들어 있는 내용이면 출력
예시
SELECT b.mem_id , m.mem_name, b.prod_name, m.addr
FROM `member` m
LEFT OUTER JOIN buy b
ON m.mem_id = b.mem_id
WHERE b.prod_name IS NULL
ORDER BY m.mem_id ;
기타 조인
상호조인 (CROSS JOIN): 한쪽 테이블과 다른 쪽 테이블의 모든 행을 조인 시키는 기능
SELECT *
FROM buy
CROSS JOIN memeber;
자체조인 (SELF JOIN): 자신의 테이블에서 컬럼끼리 조인
SELECT < 열 목록>
FROM <테이블> 별칭1
INNER JOIN <테이블> 별칭2
ON <조인될 조건>
[WHERE 검색 조건]
예시
SELECT A.emp "직원", B.emp "직속상관", B.phone "직속상관연락처"
FROM emp_talbe A
INNER JOIN emp_table B
ON A.manager = B.emp
WHERE A.emp = '경리부장';
emp | manager | phone |
대표 | NULL | 1111 |
... | ... | ... |
↓
직원 | 직속상관 | 직속상관 연락처 |
경리부장 | 관리이사 | 2222 |
'DataBase > MySQL' 카테고리의 다른 글
MySQL- 테이블 제약조건 (0) | 2023.08.26 |
---|---|
MySQL - SQL 프로그래밍 (IF, CASE, WHILE, 동적 SQL) (0) | 2023.08.26 |
MySQL - 데이터 형 변환 (0) | 2023.08.04 |
MySQL - 변수사용 (0) | 2023.08.04 |
MySQL- 데이터 형식 (0) | 2023.08.04 |