롸?

Subquery - 2 본문

DB/Maria DB

Subquery - 2

허니버터새우깡 2020. 2. 13. 16:41

Any, All 연산자

  • <any : 서브쿼리의 반환값 중 최대값 보다 작은 ~

  • >any : 서브쿼리의 반환값 중 최소값 보다 큰~

  • <all : 서브쿼리의 반환값 중 최소값 보다 작은 ~

  • >all​ : 서브쿼리의 반환값 중 최대값 보다 큰 ~

 

 

From절에서 서브쿼리

ex) 전체 평균 연봉과 최대 연봉 사이의 연봉을 받는 직원은?

SELECT * 
FROM 직원 A(SELECT AVG(연봉) avgs, MAX(연봉) maxs FROM 직원) B
WHERE A.연봉 BETWEEN B.avgs AND B.maxs;

 

 

Group by의 having절에 서브쿼리

ex) 부서별 평균 연봉 중 2번 부서의 평균 연봉보다 많은 직원?

SELECT 부서번호, AVG(연봉) FROM 직원
GROUP BY 부서번호 HAVING AVG(연봉) > (SELECT AVG(연봉) FROM 직원 WHERE 부서번호=2)

 

 

exists 연산자와 서브쿼리

ex) 직원이 있는 부서 출력

 

SELECT *
FROM 부서 dep
WHERE EXISTS (SELECT '임시값' FROM 직원 WHERE 부서번호=dep.부서번호)

 

상관 서브쿼리 : 본쿼리와 서브쿼리가 서로서로 값을 참조하는 경우, 서브쿼리만 따로 실행이 불가능하다.

ex) 각 부서의 최대 급여자는?

SELECT * 
FROM 직원 A  
WHERE A.연봉=(SELECT MAX(B.연봉) FROM 직원 B WHERE A.부서번호=B.부서번호)

 

 

테이블 생성

  • CREATE TABLE 테이블명 AS SELECT * FROM 복사할테이블명

  • CREATE TABLE 테이블명 AS SELECT * FROM 복사할테이블명 WHERE 조건

 

자료 추가

  • INSERT INTO 테이블명 SELECT * FROM WHERE 조건

  • INSERT INTO 티이블명(복사할 칼럼명, ... ) SELECT 복사할칼럼명, ...  FROM 테이블명 WHERE 조건

 

자료 수정

  • UPDATE 테이블명 SET 수정할자료칼럼명=(SELECT 칼럼명 FROM 테이블명 WHERE 조건) WHERE 조건

 

자료 삭제

  • DELETE FROM 테이블명 WHERE 삭제할자료칼럼명=(SELECT 칼럼명 FROM 테이블명)

 

'DB > Maria DB' 카테고리의 다른 글

View  (0) 2020.02.14
트랜잭션(Transactions)  (0) 2020.02.13
Subquery - 1  (0) 2020.02.13
Union & Merge  (0) 2020.02.13
Join  (0) 2020.02.12
Comments