티스토리 뷰
SQL JOIN 조인 메뉴얼
SQL JOIN 조인 메뉴얼
조인(JOIN)
SELECT 명령문의 FROM 절에 적어도 두 개의 테이블 명세가 있고, WHERE 절에는 서로 다른 테이블의 열을 비교하는 조건이 적어도 하나가 있다면 조인(JOIN)이라한다.
INNER JOIN
OUTER JOIN
SELF JOIN
2.2 OUTER JOIN
INNER JOIN 문을 포함하고 한쪽에만 내용이 있더라도 지정한 기준 테이블에 있는 모든 데이터를 가져오는 조인방식
기본형식
SELECT 열목록
FROM 첫번째 테이블
<LEFT | RIGHT | FULL> OUTER JOIN 두번째 테이블
ON(join_condition)
[WHERE 검색조건]
(1) LEFT OUTER JOIN
왼쪽 테이블이 기준이 되어서 그 테이블에 있는 데이터를 모두 가져온다. 기준으로 지정되지 않은 오른쪽 테이블에서 가져올 수 없는 열은 NULL로 표현된다.
mysql> SELECT m.sno, b.name, b.cname FROM student AS m LEFT OUTER JOIN circle AS b ON m.sno = b.sno ORDER BY m.sno;
+------+-----------+--------------+
| sno | name | cname |
+------+-----------+--------------+
| 100 | 홍길동 | 사물놀이 |
| 101 | 김철수 | 사물놀이 |
| 102 | 김순이 | 방송 |
| 103 | 김말동 | 방송 |
| 104 | 정민철 | 연극 |
| 105 | 이만수 | 운동 |
| 106 | 안철수 | 운동 |
| 107 | 김재동 | 방송 |
| 108 | 이미자 | 방송 |
| 109 | 김기철 | 연극 |
| 110 | 이기동 | 운동 |
+------+-----------+--------------+
11 rows in set (0.00 sec)
(2) RIGHT OUTER JOIN
오른쪽 테이블이 기준이 되어서 그 테이블에 있는 데이터를 모두 가져온다. 기준으로 지정되지 않은 왼쪽 테이블에서 가져올 수 없는 열은 NULL로 표현된다.
mysql> SELECT b.sno, b.name, b.cname FROM student AS m RIGHT OUTER JOIN circle AS b ON m.sno = b.sno ORDER BY b.sno;
+------+-----------+--------------+
| sno | name | cname |
+------+-----------+--------------+
| 100 | 홍길동 | 사물놀이 |
| 101 | 김철수 | 사물놀이 |
| 102 | 김순이 | 방송 |
| 103 | 김말동 | 방송 |
| 104 | 정민철 | 연극 |
| 105 | 이만수 | 운동 |
| 106 | 안철수 | 운동 |
| 107 | 김재동 | 방송 |
| 108 | 이미자 | 방송 |
| 109 | 김기철 | 연극 |
| 110 | 이기동 | 운동 |
| 200 | 김만수 | 운동 |
| 201 | 김옥경 | 방송 |
| 202 | 김수경 | 방송 |
| 203 | 김말동 | 운동 |
| 204 | 민영탁 | 운동 |
| 205 | 이경철 | 방송 |
| 206 | 김영진 | 방송 |
| 207 | 탁재훈 | 방송 |
| 208 | 안병훈 | 사물놀이 |
| 209 | 진우형 | 사물놀이 |
| 210 | 노민환 | 사물놀이 |
+------+-----------+--------------+
22 rows in set (0.00 sec)
2 CROSS JOIN
결과값이 한쪽 테이블의 모든행들과 다른쪽 테이블의 모든 행을 조인시킨다.
결과 집합은 두 테이블의 개수를 곱한 값만큼 생성되며, 조인되는 테이블에 공통되는 행이 없어도 되며 조건절인 ON 키워드가 사용되지 않는다.
SELECT m.sno, b.name, b.cname
FROM student AS m
CROSS JOIN circle AS b
ORDER BY m.sno
하나의 테이블에 같은 데이터가 존재하는데 그 의미가 다르게 존재하는 경우. 즉, 같은 데이터이지만 다른 열에 있는 경우에는 두 테이블을 서로 SELF JOIN 문으로 확인가능
SELECT a.sno, a.name, a.cname
FROM circle AS a
INNER JOIN circle AS b
ON a.name = b.cname
WHERE a.name = '홍길동'
이글이 도움이 되셨다면 아래에 로그인이 필요없는 공감 버튼을 클릭해주세요 ^^
'DEVELOPE > MYSQL&MARIADB' 카테고리의 다른 글
SQL VIEW 생성, 사용법 (0) | 2017.10.19 |
---|---|
SQL INDEX 설명, 사용법 (0) | 2017.10.19 |
SQL SUBQUERY 부속질의어 (0) | 2017.10.18 |
SQL UNION / UNION ALL (0) | 2017.10.18 |
SQL 명령어 ORDER BY 정렬 (0) | 2017.10.17 |
- Total
- Today
- Yesterday
- MYSQL 명령어
- 트위터 url 공유
- crontab
- 페이스북 공유소스
- 우분투 다운로드
- mariadb 백업
- 미디어쿼리
- 리눅스 명령어
- SQL 정렬
- CentOS 설치
- ubuntu
- 에디트플러스
- MySQL
- APM 설치
- 부트스트랩
- 트위터 공유소스
- yum
- CentOS
- 우분투
- 카카오스토리 공유소스
- 트위터 공유방법 및 소스
- Q6600
- 카카오스토리 url 공유
- 카카오스토리 sns 공유
- mysql 백업
- 반응형 웹
- centos 7
- SQL 함수
- 트위터 sns 공유
- 우분투 usb 설치
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |