1. 테이블 형태의 서브쿼리
원래 테이블이 존재하던 위치에 서브쿼리의 결과가 하나의 테이블 형태가 되면 사용할 수 있음
select SubnQueryName.column1, SubQueryName.column2,...
from(서브쿼리) SubQueryName
서브쿼리를 이용해 원하는 데이터 필터링하기
select seoul.name, seoul.close_
from
(select A.name, S.Date_,S.close_
from companyinfo A
join StockPrice S
on A.ID=S.ID
where city = 'Seoul' and S.Date_='20201012'
)seoul
where close_>=500000
=> 괄호 : companyinfo와 stockprice를 조인
=> where 의미 : 서울 소재 기업의 2020년 10월 12일자 주식가격을 반환하라
=> 반환된 쿼리에 SEOUL 이라는 이름을 붙이고, 메인 쿼리에서 그 주식가격이 50만원 이상인 내용을 반환하라
단일 값 형태의 서브쿼리를 이용하는 syntax
- 단일 값을 반환하기 때문에 값이 활용되는 모든 위치에 괄호 형태로 들어갈 수 있음
select (서브쿼리0),SubQueryName,column2,...
from table_name1
where column1=(서브쿼리1) or column2 >=(서브쿼리2)...
select*
from StockPrice
where ID =40853
AND CLOSE_=(select max(close_)from StockPrice where ID=40853) # 서브쿼리
단일 열 테이블
- 열이 하나밖에 없는 테이블
- 테이블 위치에서도 사용할 수 있지만 where 절에서도 사용할 수 있음
- where 절에서는 주로 in 구문을 함께 사용
3. in
- 한 컬럼에 여러 값 조건들을 넣고 싶을 때 사용
- 한 컬럼에 대하여 or 구문을 너무 자주 쓰게 되는 경우 코드가 지저분해져서 나오게 된 코드
ex) 컬럼이 A이거나, B이거나 C 중 하나이면 반환해라
or 사용 : "칼럼=A OR 칼럼 = B OR 칼럼 =C"
in 사용 : "칼럼 IN(A,B,C)" => 서브쿼리를 넣어서 사용할 수도 있음
select*
from StockPrice
where ID =40853
AND CLOSE_=(select max(close_)from StockPrice where ID=40853) # 주식가격 최고가가 50만원 이상인 기업의 ID를 반환하라
4. view
서브쿼리의 단점인, 너무 많아지면 코드가 복잡해져서 읽기 힘들어지는 단점을 보완하기 위해 존재
자주 사용하는 서브쿼리를 하나의 문장으로 저장해 테이블처럼 사용하도록 도와주는 view 기능임
- 하나 이상의 기본 테이블로부터 유도된, 이름을 가지는 가상의 테이블
- 저장장치 내에 물리적으로 존재하지 않지만, 사용자에게 있는 것처럼 사용
- 필요한 데이터만 뷰로 정의해서 처리할 수 있어서 관리가 용이함
- 서브쿼리의 쿼리
syntax
create view 뷰 이름
as
select 를 사용한 쿼리문
create view vw_stockpriceviewname #뷰 이름
as
select a.Name
, s.ID
, s.Date_
, s.Close_
from companyinfo a
join StockPrice s
on a.id=s.id
view는 테이블 처럼 사용이 가능하다.
drop view vw_stockpriceviewname
뷰 삭제
5. with 구문
- 서브쿼리를 재사용하는 방법 중 view 처럼 create, drop 등으로 코드를 생성하지 않고도 쓸 수 있는 방법
- with를 사용해 서브쿼리를 정의하고 정의된 이름을 계속 사용
- 다른 코드에서의 반복 사용성이 낮은 경우, view 보다 with이 더 유용함
with cte_price as
(
select a.Name
, a.ID
, s.Date_
, s.close_
from companyinfo a
join StockPrice s
on a.id =s.id
)
select*from cte_price where Name='NVIDIA'
'SQL' 카테고리의 다른 글
MS SQL 실무_5편 (0) | 2022.06.15 |
---|---|
MS SQL 실무_4편 (0) | 2022.06.06 |
MS SQL 실무_3편 (0) | 2022.05.29 |
MS SQL 실무_2편 (0) | 2022.05.21 |
MS SQL 실무1 (0) | 2022.05.14 |
댓글