mySQL 더블쿼리, foriegn key, union, outer join 사용법

728x90

 

더블쿼리

더블쿼리를 주는 간단한 예제

 

CROSS JOIN을 사용해서 각각의 table value 값에 average 값을 추가

SELECT * FROM dbtable, (SELECT avg(sal) FROM dbtable)ts WHERE sal > (SELECT avg(sal) FROM dbtable);
#크로스 조인을 사용해서 평균값과 평균보다 급여를 많이 받는 인원을 표시

 

FORIEGN KEY

FORIEGN KEY를 설정할 때 부모와 자식간에 값의 변동이 있으면 table value값이 고아(?)가 되므로 찾을 수가 없다.

따라서 on update cascade, on delete cascade를 사용해서 값이 지워질 때나 변경될 때 두 table이 연동하여 변경되도록 설정

#부모의 값이 변경되면 자식의 값도 변경되어야 하므로 아래의 함수를 사용 = cascade
ALTER TABLE dbtable
	ADD CONSTRAINT FK_deptno
    FOREIGN KEY(deptno) REFERENCES dept(deptno)
    ON DELETE CASCADE ON UPDATE CASCADE;

 

FORIEGN KEY를 제거할 때

#foriegn key 제거
ALTER TABLE dbtable
DROP FOREIGN KEY FK_deptno;

 

UNION & UNION ALL

UNION을 사용해서 조건부 추가를 할 수 있고 UNION ALL을 사용해서 모든 table의 값을 추가할 수 있다.

UNION은 상하로 table이 합쳐지고 JOIN은 좌우로 table이 합쳐짐.

#UNION을 사용하여 상하로 합침. join은 좌우로 합치지만 union은 상하로 합침
SELECT * FROM dbtable WHERE deptno in (30,40) UNION SELECT * FROM dbtable WHERE deptno in (50,60);

#UNION ALL = 조건 상관없이 모두 합침. 똑같은 테이블을 합치면 개수가 2배가 된다고 보면 됨
SELECT * FROM dbtable UNION ALL SELECT * FROM dbtable;

 

OUTER JOIN

on의 값이 동일하지 않더라도 left, right즉 우왼의 table값을 그냥 추가

# 값이 동일하지 않더라도 왼쪽 값을 그냥 추가.
# left, right 두개 혼용하여 적절하게 사용하자
SELECT * FROM dbtable LEFT OUTER JOIN dept on dbtable.deptno = dept.deptno;
728x90

'국비과정 > DB - mySQL' 카테고리의 다른 글

FOREIGN KEY의 사용법, 예제  (0) 2022.03.31
DB의 정규화  (0) 2022.03.21
DB - mySQL을 JAVA와 연동하기  (0) 2022.03.16
mySQL - describe, ordered by, length 등 총 함수 설명  (0) 2022.03.15
mySQL 서버 설치하는 방법  (0) 2022.03.15