PostgreSQL / Database Structure Design Patterns / 3.6 Writing Complex Queries
3.6Writing Complex Queries
디자인한 데이터베이스 스키마에서 쿼리 조회하기
시작 전
더미 데이터 넣기
데이터 파일(.sql)을 가지고 있다는 전제 하에, PGAdmin에서 만들어둔 데이터베이스를 우클릭해 Restore
버튼을 누른다. 이후, 가지고 있는 파일을 업로드한다.
데이터 복원하기
만약 작업 중 테이블을 잘못 건드려 컬럼을 지웠거나 테이블을 지웠다면, 처음부터 복원을 해야한다.
- 먼저 모든 Query 탭을 닫는다.
- 작업하고 있는 데이터베이스의 Dashboard를 열어서 State의 Sessions에 하나의 세션만 있는지 확인한다. 만약 다른 세션이 있다면 맨 왼쪽의 X 버튼을 눌러 중단한다.
- 잘못 작업한 데이터베이스를 우클릭한 후 Delete를 클릭해 데이터베이스를 없애고 다시 만든다.

데이터베이스 스키마에서 쿼리 작성하기(예시)
- id가 200인 user의 username과 이 유저가 만든 모든 포스트의 캡션들을 조회하기.
sqlSELECT username, caption FROM users JOIN posts ON posts.user_id = users.id WHERE users.id = 200;
개인적으로 이 문제를 풀 때, 한번에 쿼리를 작성하려다보니
또, FROM users u JOIN posts p ... 식으로 작성했는데, 이런 식으로 alias가 필수적인 것은 쿼리 안의 쿼리인 subquery일때만이다.
caption
컬럼명을 까먹고 content, captions 등을 넣어보느라 시간을 날렸다. 이럴때 처음에는 *
를 써서 원하는 컬럼명을 파악한 후 추려내는 것도 방법이다.또, FROM users u JOIN posts p ... 식으로 작성했는데, 이런 식으로 alias가 필수적인 것은 쿼리 안의 쿼리인 subquery일때만이다.
- 유저명과 해당 유저의 총 like 수 목록 조회하기
sqlSELECT username, COUNT(*) FROM users JOIN likes ON likes.user_id = users.id GROUP BY username