본문 바로가기

MySql

MySQL(07.11) - MySQL(Alias, SELF JOIN, OUTER JOIN, SubQuery)

ALIAS

SELECT DISTINCT p.pname AS 상품명
FROM t_order AS o // t_order을 o로 별명(Alias) 지음
INNER JOIN t_user AS u // t_user을 u로 별명(Alias) 지음
ON o.userNo = u.id 
INNER JOIN t_product AS p
ON o.productNo = p.id
WHERE u.userName = '손흥민'
  • 테이블 이름을 Alias로 지어 컬럼을 부를때 별명으로 부를 수 있다.

SELF JOIN

SELECT e1.ENAME AS '이름', e2.ENAME AS '직속상사이름'
FROM EMP AS e1
INNER JOIN EMP AS e2
ON e1.MGR = e2.EMPNO;
  • self join은 자기 자신에게 테이블을 조인하는 법

OUTER JOIN

  • OUTER JOIN은 조인하는 여러 테이블에서 한 쪽에는 데이터가 있고, 한 쪽에는 데이터가 없는 경우, 데이터가 있는 쪽 테이블의 내용을 모두 출력하는 것이다.
    즉, 조건에 맞지 않아도 해당하는 행을 출력하고 싶을 때 사용할 수 있다.

1. LEFT OUTER JOIN

  • 조인문의 왼쪽에 있는 테이블의 모든 결과를 가져 온 후 오른쪽 테이블의 데이터를 매칭하고, 매칭되는 데이터가 없는 경우 NULL로 표시한다.

2. RIGHT OUTER JOIN

  • 조인문의 오른쪽에 있는 테이블의 모든 결과를 가져온 후 왼쪽의 테이블의 데이터를 매칭하고, 매칭되는 데이터가 없는 경우 NULL을 표시한다.
  1. FULL OUTER JOIN
  • LEFT OUTER JOIN과 RIGHT OUTER JOIN을 합친 것으로, 양쪽 모두 조건이 일치하지 않는 것까지 모두 결합해 출력한다.

- MYSQL에서는 FULL OUTER JOIN이 없으므로, LEFT OUTER JOIN과 RIGHT OUTER JOIN을 UNION 하는 식으로 하여 FULL OUTER JOIN을 만들어 준다.

 


서브쿼리(SubQuery)

  • 서브쿼리(Subquery)란 하나의 SQL 문 안에 포함되어 있는 또 다른 SQL문을 말한다.

서브쿼리를 사용할 때 주의할 점

  1. 서브쿼리를 괄호로 감싸서 사용한다.
  2. 서브쿼리는 단일 행 또는 복수 행 비교 연산자와 함께 사용 가능
  3. 서브쿼리에서는 ORDER BY를 사용하지 못한다.

사용쿼리가 사용이 가능한 곳

  • SELECT
  • FROM
  • WHERE
  • HAVING
  • ORDER BY
  • INSERT문의 VALUES
  • UPDATE문의 SET
SELECT 열
FROM 테이블
WHERE 조건식 (SELECT 열 FROM 테이블 WHERE 조건식);
SELECT d.DNAME AS '부서명'
FROM DEPT AS d
WHERE d.DEPTNO = (SELECT e.DEPTNO FROM EMP AS e WHERE e.ENAME = 'JONES')