✨카테고리 연결하기(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를 받아서 아이템을 몇 개씩 보여줄지 계산한다.