Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

ddodoi 님의 블로그

8주차-파트01: LEFT JOIN, MYSQL에서 시간 구하기, 페이징(Paging) 본문

웹풀스택 일일정리

8주차-파트01: LEFT JOIN, MYSQL에서 시간 구하기, 페이징(Paging)

ddodoi 2024. 10. 10. 22:48

CHAPTER 1. LEFT JOIN

 

books테이블과 category테이블을 category_id를 기준으로 LEFT JOIN 시켜주었다.

SELECT * FROM books LEFT
JOIN category ON books.category_id = category.id;

 

join시키기전, (왼)books테이블, (오)category테이블

 

 

 

 

두 테이블을 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 출력할 행의 개수, 시작지점;

 

 

예시