혼자 개인 개발을 할때에는 복잡한 쿼리를 사용할 일이 없엇지만, 실제로 현업에서 개발을 하다보면 복잡한 쿼리를 쓸경우가 많아진다.
아직 복잡하다, 아니다 를 구분할 정도는 아니지만 안쓰던 단순하게 짜던 쿼리에서 서브쿼리, join을 사용하는 순간부터 머리가 아프다.
서브쿼리란 일반 쿼리 안에서 또하나의 쿼리를 돌릴수 있는 것을 말한다.
저는 보통 insert, select ,where 자주사용합니다
insert 의 경우
예를들어
A테이블에 모든 물품이 들어있고 B테이블에는 이 물품중 과일만 담는경우 다음과 같이 사용할 수 있다
insert into [B테이블] ('과일이름') (select '물품이름','1000원' from [A테이블] where 분류 = '과일')
사실 insert에서는 오늘 처음써봐서 머리속에는 어떤느낌인지는 있는데 , 아직 다양한 예가 생각이 나지 않는다.
저는 주로 select와 where 에서 많이 사용하는데 이미지1 을 예로 다시 where 에서 사용한다면
A테이블에서 물품이름과 B테이블에 과일이름이 같은 것만 가져와 보여달라 고 한다면 아래와 같이 쓸수있다.
select '물품이름;,'분류' from [A테이블] where '물품이름' in ( select '과일이름' from [B테이블] )
마지막으로 select 문에서는 A란 테이블과 상관이 있거나 , 상관이 없는경우 가져와야하는 테이블을 가져올때 사용할 수있다,
예를들어 내가 보고싶은데이터가 문자 보낸사람 이름과 그사람이 보낸 문자 수 일때 subquery를 사용하여 한번에 결과값을 받아볼수있다
select distict('문자보낸사람') as sender, (select count('문자받는사람) from [받는 테이블]) as sendCount from [보낸 테이블]
실제로 이런식의 테이블은 없겠지만 다른테이블에 있는 데이터를 한번에 담아 보여줄수 있다는것이 요지이다. !
여
-더 좋은 방법이있거나 오류가있다면 댓글로 남겨주세요 ㅠ