ddodoi 님의 블로그
8주차-파트01: LEFT JOIN, MYSQL에서 시간 구하기, 페이징(Paging) 본문
CHAPTER 1. LEFT JOIN
books테이블과 category테이블을 category_id를 기준으로 LEFT JOIN 시켜주었다.
SELECT * FROM books LEFT
JOIN category ON books.category_id = category.id;
두 테이블을 left join시킨 후의 모습.
이번에는 left join 후 books.id가=1인 행만 뽑아보자. WHERE절로 조건을 추가해준다.
SELECT * FROM books LEFT
JOIN category ON books.category_id = category.id WHERE books.id = 1 ;
dbdiagram.io 홈페이지에서 books테이블과 category테이블의 연관 관계를 나타내었다. 둘을 n:1관계이다.(category의 id값을 books의 category_id가 참조한다.)
CHAPTER 2. MYSQL: 데이터베이스 시간 구하기
✔️시간 더하기
DATE_ADD(기준, 날짜, INTERVAL ____)
✔️시간 빼기
DATE_SUB(기준, 날짜, INTERVAL ____)
✔️시간 범위를 설정해서 SELECT
SELECT * FROM 테이블명 WHERE 날짜칼럼명 BETWEEN __ AND __;
실습에서 최근으로부터 한달내의 출간된 도서는 신간으로 치라 했으니 다음처럼 코드를 쳐본다.(데이터들이 2023년 기준이라 특정 날짜를 잡고 하였다.)
SELECT * FROM books WHERE pub_date BETWEEN DATE_SUB('2023-12-17',INTERVAL 1 MONTH) AND '2023-12-17';
만약 현재 날짜를 기준으로 하고 싶다면 NOW()를 이용하면 된다.
SELECT * FROM books WHERE pub_date BETWEEN DATE_SUB(NOW(),INTERVAL 1 MONTH) AND NOW();
※ +로 sql query문 붙일 때 띄어쓰기 잘하기
코드 실행해도 자꾸 다음 오류가 나서 뭔가 했더니
그냥 sql문 앞에 더할때 WHERE앞 띄어쓰기를 안해서 그런거였다..
CHAPTER 3. 데이터베이스 페이징(Paging)
✔️페이징
한페이지에 데이터를 꾸려줄 수 있는 만큼만 전달하겠다.
ex) SELECT * FROM books; => 전체 도서 리스트 100개
.....8개씩 받기
.....4개씩 받기
가장 첫번째 행은 0부터 시작한다. 즉, 시작지점으로 가장 첫번째 행으로 하고 싶다면 시작지점에 0을 넣어주면 된다.
SELECT * FROM Bookshop.books LIMIT 출력할 행의 개수 OFFSET 시작지점;
다음처럼 더 간단하게 쓸 수도 있다.
SELECT * FROM Bookshop.books LIMIT 출력할 행의 개수, 시작지점;
'웹풀스택 일일정리' 카테고리의 다른 글
8주차-파트04: MySQL 에러: errno: 121, Foreign Key 제약조건, IN, SQL로 배열 값 받기 (0) | 2024.10.13 |
---|---|
8주차-파트02: SAFE MODE 해제, count(), AS, 서브쿼리, EXISTS (0) | 2024.10.12 |
7주차-파트05: Lorem Picsum, URL이 같을 경우 (0) | 2024.10.05 |
7주차-파트03:http-status-codes 모듈, 컨트롤러, 해싱,비밀번호 암호화(crypto) (0) | 2024.10.04 |
7주차-파트02: Express-generator 구조 , 프로젝트 셋팅, Primarykey VS Uniquekey (0) | 2024.10.04 |