[데이터베이스] Learn SQL Office Hour

sunn·2022년 3월 8일
0

Instagram Schema Design

  • User : Follower = N : N
  • Post : Hashtag = N : N
  • Like : comment = 1 : N
  • Full Schema

깔끔한 스키마 → 한 테이블에 너무 많은 기능이 있지 않은 지 확인하기


JOIN TABLE 예시

JOIN을 토대로 새로운 TABLE이 만들어 지고 그 테이블에서 필터링 등의 추가 작업을 거친 후 리턴된다.


Instagram Schema를 활용한 예제

  • 1 SELECT, JOIN 댓글을 단 모든 유저의 이름과 댓글 내역 가져오기
    SELECT users.username, post_comments.comment FROM users
    JOIN post_comment ON post_comment.user_id=user.id
    어느 게시물에도 댓글을 달지 않은 유저 가져오기
    SELECT users.username FROM users
    JOIN post_comments ON post_comments.user_id = user.id
    WHERE post_comments.user_id IS NULL
  • 2 INSERT INTO, VALUES 김코딩이 박해커를 팔로우합니다.
    INSERT INTO follow_follower (user_id='박코딩의 PK', follower_id='김코딩의 PK')
    VALUES (
    SELECT id FROM user WHERE users.username = '박해커', 
    SELECT id FROM user WHERE users.username = '김코딩'
    )
  • 3 UPDATE, SET, WHERE
    UPDATE post_comments
    SET comment='Hello World'
    WHERE post_comments.user_id = 1 AND post_id = 21
  • 4 DELETE, subQuary
    DELETE FROM posts_hashtags
    WHERE post_id = 21 AND hashtag_id = (
    SELECT id FROM hashtags WHERE name = '맞팔'
    )

Learn SQL sprint

  • PART5_2_10
    user(컬럼명: name)가 작성한 글의 개수 (컬럼명: ContentCount)를 출력하기 위한 SQL을 작성해주세요.
    
    SELECT user.name, COUNT(content.id) AS ContentCount FROM user
    LEFT JOIN content ON content.user_id = user.id
    GROUP BY user.name
    // 0개도 출력되는 형태
    
    extra)
    JOIN content ON content.user_id = user.id
    // 0개는 제외하고 출력하는 형태
profile
:-)

0개의 댓글