일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- TodayILearned
- 자바스크립트
- sql
- SpringMVC
- 프레임워크
- HTML
- maven
- javascript
- PWA
- javaprogramming
- js
- 국비지원
- CSS
- 스프링
- JavaScript 내장객체
- 오라클
- 서브쿼리
- mybatis
- 자바프로그래밍
- 생활코딩
- Oracle
- progressive web app
- 메이븐
- sqldeveloper
- framework
- TIL
- springaop
- 프로그레시브웹앱
- tdd
- web
- Today
- Total
1cm
자바 프로그래밍_Day_33_서브쿼리(SUBQUERY)(2) 본문
2021. 10. 05
> 단일행 서브쿼리 실습 코드
-> 1차 조건(최저 급여)과 동일한 값(최저 급여를 받는 직원 (=))들의 세부 데이터 조회
-> 1차 조건(노옹철)에 해당하는 값(노옹철과 동일한 급여를 받는 사원)보다 큰 값(노옹철 < 구하고자 하는 값)을 조회
-> 서브 쿼리는 WHERE 절 뿐만 아니라, SELECT / FROM / HAVING 절에서도 사용이 가능하다.
-> WHERE 절에서 사용되는 서브쿼리에서는 ORDER BY 사용 불가능
-> 전지연 사원이 속해있는 부서명을 조회하고, 전지연 사원을 제외한 부서원까지 조회하기
-> ANSI 구문
-> 1. 모든 테이블 JOIN하여 하나의 행으로 출력 -> 2. 원하는 데이터 SELECT문 작성 -> 3. 원하는 데이터 출력을 위한 서브 쿼리문 작성
-> 오라클 구문
-> JOIN문을 오라클 구문으로 작성 후 WHERE 절 안에 서브쿼리문 작성
> 다중행 서브 쿼리 (Multiple-Row Subquery)
-> 서브쿼리의 조회 결과 값의 행이 여러 개인 서브쿼리
-> 다중 행 서브쿼리 앞에는 일반 비교 연산자 사용이 불가능 하다.
-> 사용 가능 연산자 : IN / NOT IN, >ANY / <ANY, >ALL / <ALL, EXIST / NOT EXIST 등
-> FROM / JOIN 절 뒤에 쓰는 서브쿼리 : 인라인 뷰 -> 테이블 위치에 서브쿼리를 넣어서 -> 서브쿼리의 결과를 테이블로 쓰는 것
-> NULL 제외 : IS NOT NULL
-> DISTINCT : 중복되는 값들 제거
-> IN (사수) / NOT IN (사원) 연산자를 사용한 서브쿼리문 작성
-> IN / NOT IN 연산자를 사용한 쿼리문들을 UNION 방식으로 연결
-> SELECT 절에 서브쿼리를 사용하여 사수, 사원 구분
-> CASE 절 -> WHEN 절 -> WHEN절 안에 사수 -> ELSE로 사원 -> IN 절 안에 서브쿼리 작성
-> 출력 순서는 반대로 서브쿼리 -> WHEN -> CASE
-> 기존에 작성한 코드를 좀 더 효율적으로, 깔끔하고 성능이 좋게 코드를 정리하는 작업 : 리팩토링 작업
-> ANY 비교 연산자를 활용하여 서브쿼리문 작성
-> ALL 비교 연산자를 활용하여 서브쿼리문 작성
> 다중열 서브 쿼리 (Multiple-Column Subquery)
-> 쌍비교라고도 부르며, 서브쿼리의 조회 결과 컬럼의 개수가 여러 개인 서브쿼리이다.
-> 원하는 사원의 부서 코드 AND 직급 코드 조회
-> 그 사원과 동일한 부서 코드, 직급 코드인 사원 조회
-> 각각 단일행 서브 쿼리로 작성
-> 다중열 서브 쿼리를 사용해서 하나의 쿼리문으로 작성 (DEPT_CODE, JOB_CODE)를 쌍으로 묶어서 비교한다.
-> 다중열 서브쿼리 일때는 IN절에 넣어도 하나의 값으로만 비교가 된다.
> 다중행, 다중열 서브 쿼리
-> 서브쿼리의 조회 결과 컬럼의 개수와 행의 개수가 여러 개인 서브쿼리
-> 위의 쌍으로 묶은 것보다 더 간결하게 코드 정리 / IN 연산자를 쓰면 쌍으로 묶인 값 여러 개가 IN연산자 안에 값 목록으로 등록이 되며, 그 값들을 비교하며 만족하는 값들을 조회
-> 다중행 다중열 서브쿼리를 활용하여 원하는 데이터 조회
-> NULL값 나오지 않도록 NVL함수 사용하여 '부서없음'으로 출력할 수 있게 한다.
> 상(호연)관 서브쿼리 (Correlated Subquery)
-> 서브쿼리가 만든 결과 값을 메인 쿼리가 비교 연산할 때, 메인 쿼리 테이블의 값이 변경되면 서브쿼리의 결과 값도 바뀌는 서브쿼리
> 스칼라 서브쿼리 (Scala Subquery)
-> 상관쿼리이면서 결과 값이 한 개인 서브쿼리
-> SELECT / WHERE / ORDER BY 절에서 사용이 가능하다.
> 인라인 뷰 (Inline-View)
-> FROM절에 서브쿼리를 사용(제시)하고, 서브 쿼리를 수정한 결과를 테이블 대신에 사용한다.
-> ROWNUM - 조회되는 행의 순번
-> 평균급여 역순 결과(서브쿼리)를 테이블 대신에 사용하여 ROWNUM을 붙여준다.
> WITH
-> 서브쿼리에 이름을 붙여주고 인라인 뷰로 사용 시 서브쿼리의 이름으로 FROM절에 기술 가능하다
-> 같은 서브쿼리가 여러 번 사용될 경우 중복 작성을 피할 수 있고, 실행속도도 빨라진다는 장점이 있다.
-> 중복되는 서브쿼리에 이름을 붙여 서브쿼리를 사용하는 것
'국비지원_Java > Java Programming_1' 카테고리의 다른 글
자바 프로그래밍_Day_35_DDL(CREATE)(2), DDL(ALTER, DROP) (0) | 2021.10.15 |
---|---|
자바 프로그래밍_Day_34_DDL(CREATE) (0) | 2021.10.10 |
자바 프로그래밍_Day_32_JOIN문(2), 서브쿼리(SUBQUERY) (0) | 2021.10.09 |
자바 프로그래밍_Day_31_JOIN문 (0) | 2021.10.09 |
자바 프로그래밍_Day_30_데이터베이스 구현 평가 (0) | 2021.10.09 |