My SQL 3일차

5w31892p·2023년 1월 12일
0

My SQL

목록 보기
3/4

:: JOIN

  • 두개의 테이블을 묶어 하나의 결과를 만들어 내는 것

:: INNER JOIN

  • 두 테이블 연결시 가장 많이 사용
  • 교집합
  • 두 테이블 모두 가지고 있는 데이터만 출력
SELECT buy.mem_id, member.mem_name, buy.prod_name, member.addr
	FROM buy
		JOIN member
		ON buy.mem_id = member.mem_id;


-- 테이블 이름에 별칭을 붙이면
SELECT B.mem_id, M.mem_name, B.prod_name, M.addr
	FROM buy B
		JOIN member M
		ON B.mem_id = M.mem_id;

:: LEFT JOIN

  • 부분집합
  • 왼쪽에 있는거 다 SELECT
  • 공통 + 왼쪽 SELECT
  • 공통인 부분을 빼기 위해서는 KEY NULL
  • 오라클엔 RIGHT JOIN도 있다.
  • 반대로 RIGHT는 공통 + 오른쪽
SELECT column-names
FROM table1 LEFT OUTER JOIN table2 
ON table1.columnname = table2.columnname

:: OUTER JOIN

  • 합집합
  • 두 테이블 모두 SELECT

:: FULL JOIN

  • 공통되는 부분을 제외한 오른쪽과 왼쪽 모두 SELECT
SELECT column-names
FROM table1 FULL OUTER JOIN table2 
ON table1.columnname = table2.columnname

:: SELF JOIN

  • 동일한 테이블 자체와의 단순 조인
    ex ) 직원은 한명의 고나리자를 가지고, 관리자도 직원이면 각 관리자에 대해 직원 테이블에 레코드
SELECT column-names
FROM table1 t1 JOIN table1 t2 
ON t1.columnname = t2.columnname

:: CROSS JOIN

  • 두 테이블의 곱
  • 왼쪽 테이블의 모든 행을 오른쪽 테이블의 각 행에 연결
  • 쿼리 결과는 왼쪽 테이블 행수 에 오른쪽 테이블 행수 곱한 것
SELECT column-names
FROM table1 t1 CROSS JOIN table1 t2 

참고 사이트


0개의 댓글