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주차-파트02: SAFE MODE 해제, count(), AS, 서브쿼리, EXISTS 본문

웹풀스택 일일정리

8주차-파트02: SAFE MODE 해제, count(), AS, 서브쿼리, EXISTS

ddodoi 2024. 10. 12. 23:17

CHAPTER 1. SAFE MODE 해제

테이블에 primary 키가 없을 경우 테이블에서 직접적으로 값을 입력하지 못하고 읽기모드로만 보는것이 가능하다(safe mode). safe mode를 해제해 쓰기모드도 되도록 해보자(필자는 안돼서 그냥 mysql에서 일일히 INSERT문을 입력해줬다). 

https://velog.io/@suran-kim/MySQL-safe-mode%ED%95%B4%EC%A0%9C

 

💾 MySQL - safe mode해제

safe mode를 해제하여 DML를 사용할 때 select절에 pk가 아닌 컬럼을 사용해보자

velog.io

 

 

 

 

 

 

CHAPTER 2. count(), AS, 서브쿼리(subquery)

✔️ count() : 행 개수를 세준다

테이블의 행의 개수를 세고 싶다면 count()를 이용해보자.

SELECT count(*) FROM 테이블명

 

(왼)likes테이블 (오)likes테이블을 count를 이용하여 전체 행을 셈

 

 

이번에는 특정한 조건을 만족한 행들의 개수만 세어보자.

SELECT count(*) FROM 테이블명 WHERE 조건문;

 

 

 

✔️서브쿼리(sub query) : 쿼리 안 쿼리

 

<서브쿼리가 사용 가능한 곳>

- SELECT

- FROM

- WHERE

- HAVING

- ORDER BY

- INSERT문의 VALUES

- UPDATE문의 SET

 

 

SELECT에서의 서브쿼리

//도서테이블 전체 조회 + 컬럼 1개 추가하기
SELECT *,
	값 AS 새로 추가할 칼럼명(별칭)
    FROM 테이블명;
    
SELECT *,
	(각 행마다 likes 테이블에 liked_book_id로 가지고 있는 행 수) AS likes
    FROM books;
    
SELECT *,
	(SELECT count(*) FROM likes WHERE books.id = liked_book_id) AS likes
    FROM books;

 

books 테이블에 like테이블이 추가된 모습

 

 

 

✔️AS: 컬럼 별칭

 

 

CHAPTER 3. EXISTS

 

✔️EXISTS: 값이 존재하는지 확인 후 존재하면 TRUE, 존재하지 않으면 FALSE를 반환한다.

 

다음은 해당 유저가 특정 제품에 좋아요를 눌렀는지 확인하기 위한 것이다. 만약 유저가 특정 제품에 좋아요를 눌렀다면 likes테이블안에 조건을 만족시키는 행이 있을 것이므로 1을 반환하고 그렇지 않으면 0 이 반환된다.

SELECT EXISTS(SELECT * FROM likes WHERE user_id = 2 AND liked_book_id = 3);