
조인은 데이터베이스 내의 여러 테이블에서 가져온 레코드를 조합하여 하나의 테이블이나 결과 집합으로 표현해 주는 것이다.
select u.userid, name
from usertbl as u inner join buytbl as b
on u.userid=b.userid
where u.userid="111" -- join을 완료하고 그다음 조건을 따진다.
from 절에 콤마 쓰면 inner join으로 치부된다.
from usertbl u, buytbl b
OUTER JOIN은 LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN이 있으며, LEFT OUTER JOIN을 대부분 사용하고, FULL OUTER JOIN은 성능상 거의 사용하지 않는다.
대부분 DB는 FULL OUTER JOIN을 지원하지 않는다.
두 테이블이 있을 때, 첫 번째 테이블을 기준으로 두 번째 테이블을 조합하는 JOIN
LEFT JOIN을 여러번 할 때 주의할 점
두 테이블이 있을 때, 두 번째 테이블을 기준으로 두 번째 테이블을 조합하는 JOIN
출처: https://inpa.tistory.com/entry/MYSQL-📚-JOIN-조인-그림으로-알기쉽게-정리 [Inpa Dev 👨💻:티스토리]
다른 쿼리 내부에 포함되어 있는 SELECT 문을 의미한다.
서브쿼리는 위치에 따라 명칭이 달라진다.
WHERE 문에 나타나는 서브쿼리
where height > (select height from userTbl where name in ('김경호'));
-> 결과가 값이 하나여야 함
where height = any(select height from userTbl where addr in ('경남'));
조건에 값이 여러개 들어올땐 any.(any = in, or)
where population > all( select population from city where district = 'New York' );
-> all은 도출된 모든 조건값에 대해 만족할때(=and)
FROM 문에 나타나는 서브쿼리
무조건 AS 별칭을 지정해 주어야 한다.
SELECT 문에 나타나는 서브쿼리
출처: https://inpa.tistory.com/entry/MYSQL-📚-서브쿼리-정리 [Inpa Dev 👨💻:티스토리]
Database자체에서 데이터를 끊어서 가져오는 것으로 2가지 형태가 존재한다.
페이지 번호를 찾아내어 이동하는 페이징이다.
limit 10 offset 0;
위와 같이 limit을 통해서 한 페이지에 보여줄 데이터 개수를 정하고,
offset으로 몇 개를 건너뛸지 정한다.
한 페이지에 y개를 보여준다면?
limit y offset(x - 1) * y;
Offset paging의 단점은 페이지로 넘어갈 때 게시글이 추가되면 밀린다는 점이다.
이를 보완한 페이징 기법은 다음과 같다.
커서로 무언가를 가르켜 페이징을 하는 방법이다.
마지막으로 조회한 대상 그 다음부터 가져오게 하려면 다음과 같이 작성하면 된다.
마지막 조회한 대상 id가 3라고 하면,
select * from book where created_at <
(select created_at from book where id = 3)
order by created_at desc limit 15;
하지만 실제 서비스에서는 커서 페이징을 잘 안하고 그냥 몇개 정도는 밀리게 둔다고 한다..