sungyup's.

PostgreSQL / Database Structure Design Patterns / 3.6 Writing Complex Queries

3.6Writing Complex Queries

디자인한 데이터베이스 스키마에서 쿼리 조회하기

시작 전

더미 데이터 넣기

데이터 파일(.sql)을 가지고 있다는 전제 하에, PGAdmin에서 만들어둔 데이터베이스를 우클릭해 Restore 버튼을 누른다. 이후, 가지고 있는 파일을 업로드한다.

데이터 복원하기

만약 작업 중 테이블을 잘못 건드려 컬럼을 지웠거나 테이블을 지웠다면, 처음부터 복원을 해야한다.

  1. 먼저 모든 Query 탭을 닫는다.
  2. 작업하고 있는 데이터베이스의 Dashboard를 열어서 State의 Sessions에 하나의 세션만 있는지 확인한다. 만약 다른 세션이 있다면 맨 왼쪽의 X 버튼을 눌러 중단한다.
  3. 잘못 작업한 데이터베이스를 우클릭한 후 Delete를 클릭해 데이터베이스를 없애고 다시 만든다.
How to properly delete database
만약 Dashboard 탭이 보이지 않는다면 메뉴에서 Reset Layout을 누르면 보인다.

데이터베이스 스키마에서 쿼리 작성하기(예시)

  1. id가 200인 user의 username과 이 유저가 만든 모든 포스트의 캡션들을 조회하기.
sql
SELECT username, caption FROM users JOIN posts ON posts.user_id = users.id WHERE users.id = 200;
개인적으로 이 문제를 풀 때, 한번에 쿼리를 작성하려다보니 caption 컬럼명을 까먹고 content, captions 등을 넣어보느라 시간을 날렸다. 이럴때 처음에는 *를 써서 원하는 컬럼명을 파악한 후 추려내는 것도 방법이다.

또, FROM users u JOIN posts p ... 식으로 작성했는데, 이런 식으로 alias가 필수적인 것은 쿼리 안의 쿼리인 subquery일때만이다.
  1. 유저명과 해당 유저의 총 like 수 목록 조회하기
sql
SELECT username, COUNT(*) FROM users JOIN likes ON likes.user_id = users.id GROUP BY username