SELECT 컬럼명 변경
SELECT name AS category_name FROM categories;
이와 같이 AS를 활용해 원하는 이름으로 컬럼을 변경해줄 수 있다. name -> category_name
외래키 설정과 조인
books 테이블과 categories 테이블의 FK 설정을 해주었고 LEFT JOIN을 통해 카테고리 이름을 함께 얻어올 수 있게되었다.
SELECT * FROM Bookshop.books LEFT
JOIN categories ON books.category_id = categories.id;
`'1','어린왕자들','7','0','종이책','0','어리다...','많이 어리다...','김어림','100','목차입니다.','20000','2019-01-01','0','동화'
조인에서 강의 오류
SELECT * FROM Bookshop.books LEFT
JOIN categories ON books.category_id = categories.id
WHERE books.id =1 ;
이와 같은 조인 구문을 사용하면 카테고리 id 가 중복해서 들어가게 되고,
postman 에서도 책의 id는 사라지고 category_id가 두번 들어가는 현상이 발생한다. 위의 예시는 책 id는 1이지만 response 에서는 0으로 찍힌다.
이를 방지하기 위해 번거롭지만 다른 방식의 조인을 택하였다.
SELECT books.id, title, img, category_id, form isbn, summary, detail, author, pages, contents,
pub_date, category_name FROM Bookshop.books, Bookshop.categories
WHERE books.category_id = categories.id AND books.id = 1;
Mysql 시간 범위 구하기
- 시간 더하기: DATE_ADD(기준 날짜, INTERVAL 숫자 단위)
- 시간 빼기: DATE_SUB(기준 날짜, INTERVAL 숫자 단위)
사용예시
SELECT DATE_ADD("2024-01-01", INTERVAL 1 DAY);
SELECT DATE_ADD("2024-01-01", INTERVAL 1 MONTH);
SELECT DATE_ADD(NOW(), INTERVAL 1 DAY);
// 2024-01-02
// 2024-02-01
// 현재 날짜 기준 하루 후
시간 범위를 설정해서 SELECT
SELECT * FROM books WHERE pub_date BETWEEN DATE_SUB(NOW(), INTERVAL 1 MONTH) AND NOW();
페이징(paging)
몇개씩 보여줄건지? 데이터베이스에서 명령어로 처리
SELECT * FROM books LIMIT 3 OFFSET 0;
LIMIT 에는 몇개씩 가져올 건지 적고, OFFSET 다음에는 몇번 행부터 시작할 것인지. 제일 처음 행은 0번부터 시작한다.
만약 5개씩 보여주고 그 중 2페이지를 보여주고 싶다면?
SELECT * FROM books LIMIT 5 OFFSET 5;
이와같이 작성하면 된다.
더 간단하게 작성할 수도 있다.
SELECT * FROM books LIMIT 8, 4;
이렇게 쓰면 대신 순서가 바뀌어서 4개씩 보여주고 8번 offset 부터 보여준다는 뜻이다.
후기
조인과 시간 범위 구하기, 그리고 가장 중요한 페이징에 대해 알아본 시간이었다.
키워드: 프로그래머스 데브코스, 국비지원교육, 코딩부트캠프
'프로그래머스 풀스택 데브코스 > 데브코스 TIL' 카테고리의 다른 글
웹 풀사이클 데브코스 TIL 36일차 (0) | 2024.01.09 |
---|---|
웹 풀사이클 데브코스 TIL 35일차 (0) | 2024.01.07 |
웹 풀사이클 데브코스 TIL 33일차 (0) | 2024.01.03 |
웹 풀사이클 데브코스 TIL 32일차 (0) | 2024.01.02 |
웹 풀사이클 데브코스 TIL 31일차 (0) | 2023.12.29 |