2016년 10월 6일 목요일

52day / DB / Subquery

www.c-sharpcorner.com

Subquery

: Praent Query에 종속되어있는 Inner Query
  • 게시판을 만들다가 Subquery를 배워야하는 이유?
간단히 말하면 페이징 때문이다.
게시판에 글 목록을 보통 10개씩 지정해 놓는다.

만약 그러지 못할 경우?? Subquery를 쓰지 못할 경우??
DB에 게시판의 글이 100개 1000개 10000개가 있을 경우에
비주얼적으로 수많은 글을 한 페이지에 담을 사람은 없을 것이다.
하지만 편법을 쓴다면 일단 DB에서 모든 게시글을 가져온 다음에
Controll이나 View에서 원하는 만큼만 보여줄 수 있다.

이렇게 한다면 당연히 DB에 좋지 않을 것이며 굉장히 무거운 웹사이트가 될 것이 분명하다.

그래서 Subquery로 어떻게?
View -> 원하는 만큼만!! 요청하도록 한다.
Controll -> 원하는 만큼만 전달하도록 한다.
DB -> 당연히 요청한 부분만 조회해온다.

budget 의 최고액을 조회 
SELECT max(amount) FROM budget;
가장 높은 액수(amount)로 지출된 내역(contents)은? 
SELECT contents FROM budget WHERE amount = 25000;
subquery를 이용해서 조회한다 
평균액수(amount)보다 많은 금액과 내역을 조회 
SELECT avg(amount) FROM budget;
SELECT amount,contents FROM budget WHERE amount>17600;
위 두 sql을 Subquery를 이용해 한번에 정의 ( 내림차순 정렬 ) 
SELECT amount,contents FROM budget 
WHERE amount > (SELECT avg(amount) FROM budget)
ORDER BY amount DESC;
연습) 전체 내역의 평균액수보다 낮은 내역 중 가장 높은 액수의 내역은?
SELECT contents,amount FROM budget ORDER BY amount DESC;
1) 평균금액 조회
        SELECT AVG(amount) FROM budget; -- 17600
2) 평균금액보다 작은 내역의 최고액을 조회
        SELECT MAX(amount) FROM budget
        WHERE amount < 17600-- 15000
그 금액에 해당하는 내역을 조회  
        SELECT contents FROM budget 
        WHERE amount = 15000;
위 sql을 Subquery를 이용해 한번에 정의
SELECT contents FROM budget 
    WHERE amount = (
        SELECT MAX(amount) FROM budget
        WHERE amount < (
            SELECT AVG(amount) FROM budget
    )
)
cs

Related Posts:

  • 28day / DB / CRUD Radzishevskyi Sergey blog 수업내용이 27Day와 별반 차이가 없어 CRUD 예제로 대체. CRUD(create, read, update, delete) Create (insert) Insert a s… Read More
  • 27day / DB / Management http://www.sitesbay.com Database와 jdbc를 이용한 회원관리 SQL 과 JDBC 를 이용해 회원 정보를 CRUD(create,read,update,delete) 하는 어플리케이션을 구성해본다  Applicati… Read More
  • 30day / DB / Transaction http://www.slideshare.net/alexbaranau/transactions-over-hbase Transaction 제어 : Transaction 이란 작업단위를 의미  주요 용어 commit : 실제 데이터베이스에 반영 … Read More
  • 29day / DB / Sequence http://www.dbarepublic.com 오라클 시퀀스(sequence)  유일한 값을 생성해준다  주로 primary key 값을 생성할 때 사용한다  시퀀스는 일련의 번호를 순차적으로 증가시킨다  테이블과 독립적… Read More
  • 52day / DB / Subquery www.c-sharpcorner.com Subquery : Praent Query에 종속되어있는 Inner Query 게시판을 만들다가 Subquery를 배워야하는 이유? 간단히 말하면 페이징 때문이다. 게시판에 글 목록을 보통 10개씩 지정해 놓… Read More

0 개의 댓글:

댓글 쓰기