본문 바로가기

공부/타입스크립트로 함께하는 웹 풀 사이클 개발(React, Node.js)

프로젝트: Node.js 기반의 REST API 구현(7)-book.js-LEFT JOIN, DATE_ADD, DATE_SUB, LIMIT OFFSET

✨카테고리 연결하기(LEFT JOIN)

join을 할 때 FK를 설정하지 않더라도 가능하다.
하지만 무결성을 위해 FK를 하는것이 좋다고 한다.

그리고 지금은 query()에서 템플릿문자열로 변수를 넣어주고 있는데,
그렇게하면 SQL 인젝션의 위험성이 있다고 한다.
따라서 파라미터화된 쿼리를 사용하는 것이 좋다고 한다❗
⬇️⬇️⬇️⬇️⬇️⬇️⬇️
const [result] = await conn.query('SELECT * FROM books WHERE id = ?', [book_id]);

 

🔥 SQL 데이터베이스 시간 범위 구하기

시간 더하기

DATE_ADD(기준날짜, INTERVAL)

 

시간 빼기

DATE_SUB(기준날짜, INTERVAL)

 

최근 한 달이라는 기준으로 했을때,

DATE_ADD에서 INTERVAL -1 MONTH와

DATE_SUB에서 INTERVAL 1 MONTH는 같다.

SELECT * FROM books WHERE pub_date BETWEEN DATE_ADD(NOW(), INTERVAL -1 MONTH ) AND NOW();
SELECT * FROM books WHERE pub_date BETWEEN DATE_SUB(NOW(), INTERVAL 1 MONTH ) AND NOW();

 

❄️데이터베이스 페이징(pagin)

SELECT * FROM books LIMIT ___ OFFSET ___;

LIMIT: 출력할 행의 수

OFFSET: 시작 지점(몇 페이지인지 알 수 있음)

SELECT * FROM books LIMIT offsetNum, limitNum;

OFFSET을 쓰지않고 콤마로 숫자를 반대로 써서 사용하는 방법도 있다.

 

🗝️LIMIT와 OFFSET을 쿼리스트링 OR 쿼리파라미터로 보낸다.

전체 도서조회에서 쿼리스트링으로 limit과 currentPage를 받아서 아이템을 몇 개씩 보여줄지 계산한다.