티스토리 뷰
MYSQL 조인의 종류
MYSQL 조인의 종류
조인의 종류
1.JOIN
둘 이상의 테이블 간의 논리적 관계를 기준으로 데이터를 검색하여 결과 집합을 만든다.
기본형식
SELECT 열 목록
FROM 첫번째 테이블 join_type 두번째 테이블
ON(join_condition)
* join_type : 수행될 조인 유형을 지정한다. (INNER, OUTER, CROSS, SELF)
* join_condition : 조인할 행의 각 쌍에 대해 선택할 조건을 정의한다. 일반적으로 키와 키를 지정
고려사항
1) 조인은 하나의 쿼리에서 여러 테이블이 참조되기 때문에 모든 열 참조는 명확해야 한다. (테이블이름.컬럼이름)
2) 조인조건은 FROM절이나 WHERE 절에 지정할 수 있으며 FROM 절에 지정하는 것이 좋다.
3) WHERE절과 HAVING 절에는 조인 조건에서 선택된 행을 자세히 필터링하는 검색 조건이 포함될 수 있다.
2. INNER JOIN
결합된 테이블에 조건의 내용이 공통으로 들어가 있는 값을 결과 집합으로 만들어준다. ON 다음에 들어가는 조건에 맞는 내용들만 보여주게 된다.
기본형식
SELECT 열 목록
FROM 첫번째 테이블 [AS 별칭] INNER JOIN 두번째 테이블 [AS별칭]
ON(join_condition)
SELECT 회원이름, 구매한도서, 작가, 구매시기
FROM 회원정보 INNER JOIN 구매내역
WHERE 회원이름 = '김군'
SELECT DISTINCT M.회원정보, M.회원이름, M.거주지역
FROM 회원정보 AS M
INNER JOIN 구매내역 AS B
ON M.회원번호 = B.회원번호
ORDER BY M.회원번호
SELECT M.회원이름, B.구매한도서, P.가격
FROM 회원정보 AS M
INNER JOIN 구매내역 AS B
ON M.회원번호 = B.회원번호
INNER JOIN 가격 AS P
ON B.구매한도서 = P.구매한도서
ORDER BY M.회원이름
2.2 OUTER JOIN
INNER JOIN 문을 포함하고 한쪽에만 내용이 있더라도 지정한 기준 테이블에 있는 모든 데이터를 가져오는 조인방식
기본형식
SELECT 열목록
FROM 첫번째 테이블
<LEFT | RIGHT | FULL> OUTER JOIN 두번째 테이블
ON(join_condition)
[WHERE 검색조건]
(1) LEFT OUTER JOIN
왼쪽 테이블이 기준이 되어서 그 테이블에 있는 데이터를 모두 가져온다. 기준으로 지정되지 않은 오른쪽 테이블에서 가져올 수 없는 열은 NULL로 표현된다.
SELECT M.회원이름, B.구매한도서, B.작가, B.구매시기
FROM 회원정보 AS M
LEFT OUTER JOIN 구매내역 AS B
ON M.회원번호 = B.회원번호
ORDER BY M.회원번호
(2) RIGHT OUTER JOIN
오른쪽 테이블이 기준이 되어서 그 테이블에 있는 데이터를 모두 가져온다. 기준으로 지정되지 않은 왼쪽 테이블에서 가져올 수 없는 열은 NULL로 표현된다.
SELECT B.구매한도서, B.작가, B.구매시기, M.회원이름
FROM 회원정보 AS M
RIGHT OUTER JOIN 구매내역 AS B
ON M.회원번호 = B.회원번호
ORDER BY B.구매시기
(3) FULL OUTER JOIN
왼쪽과 오른쪽에 관계없이 조건이 일치하지 않아도 양쪽의 모든 내용을 포함해서 나타낸다.
SELECT M.회원이름, B.구매한 도서, B.작가, B.구매시기
FROM 회원정보 AS M
FULL OUTER JOIN 구매내역 AS B
ORDER BY M.회원번호
2.3 CROSS JOIN
결과값이 한쪽 테이블의 모든행들과 다른쪽 테이블의 모든 행을 조인시킨다.
결과 집합은 두 테이블의 개수를 곱한 값만큼 생성되며, 조인되는 테이블에 공통되는 행이 없어도 되며 조건절인 ON 키워드가 사용되지 않는다.
SELECT M.회원이름, B.구매한도서, B.작가, B.구매시기
FROM 회원정보 AS M
CROSS JOIN 구매내역 AS B
ORDER BY M.회원번호
2.4 SELF JOIN
하나의 테이블에 같은 데이터가 존재하는데 그 의미가 다르게 존재하는 경우. 즉, 같은 데이터이지만 다른 열에 있는 경우에는 두 테이블을 서로 SELF JOIN 문으로 확인가능
SELECT A.회원이름, A.주거지역, A.연락처, B.회원이름 AS 추천인, B.연락처
FROM 회원정보 AS A
INNER JOIN 회원정보 AS B
ON A.추천한 회원 = B.회원번호
WHERE A.회원이름 = '김군'
'DEVELOPE > MYSQL&MARIADB' 카테고리의 다른 글
mysql에서 root로 접속불가 문제 해결방법 (0) | 2017.02.09 |
---|---|
MYSQL 백업과 복구 (0) | 2017.02.06 |
mysql 프로시저 (0) | 2017.02.01 |
MySQL MyISAM과 InnoDB 엔진 활용 (0) | 2017.02.01 |
mysql 포트변경후 외부접속방법 (0) | 2017.02.01 |
- Total
- Today
- Yesterday
- 부트스트랩
- CentOS 설치
- 리눅스 명령어
- 카카오스토리 url 공유
- 미디어쿼리
- 트위터 공유방법 및 소스
- SQL 함수
- 트위터 공유소스
- 카카오스토리 sns 공유
- 우분투 usb 설치
- 에디트플러스
- yum
- MySQL
- ubuntu
- mysql 백업
- 트위터 sns 공유
- 페이스북 공유소스
- mariadb 백업
- MYSQL 명령어
- 카카오스토리 공유소스
- 우분투
- CentOS
- APM 설치
- SQL 정렬
- 반응형 웹
- 트위터 url 공유
- 우분투 다운로드
- centos 7
- Q6600
- crontab
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |