User 테이블
Post 테이블
CommentLike 테이블
PostLike 테이블
PostImg 테이블
위 테이블들을 rds에 생성을 해보자 !
원래 FK연결을 해주어야 하지만 난 무료 버전이라 대충 sql문만 따오는 용도로 만듬.
근데 궁금한게 FK연결을 따로 안해줘도 sql문 상에는 차이가 없는데 왜 그런건지 모르겠다.
그저 연결관계만 보여주는게 끝인건가..?
데이터 베이스를 생성 안하고 erd를rds에 생성하려고 하자 오류가 나서 데이트베이스를 생성을 다시 sql을 넣어줌
쿼리문의 경우 기본적으로 SELECT, FROM, WHERE로 구성된다.
- SELECT : 원하는 요소를 가져온다.
- FROM : 가져오는 테이블을 지칭한다.
- WHERE : 쿼리문에서의 조건이라 생각하면 편하다.
SELECT name,nickName
FROM User
WHERE userIdx=3;
User테이블에서 name과 nickName을 가져오게 된다.
SELECT COUNT(postIdx) FROM Post WHERE status='ACTIVE' and userIdx=2;
Post에서 활성화 상태이면서, userIdx가 2번인 사람의 postIdx를 구하는 것이다
SELECT COUNT(postIdx) FROM Post WHERE status='ACTIVE' and userIdx=2;
Post에서 활성화 상태이면서, userIdx가 2번인 사람의 postIdx를 구하는 것이다
그러면 다음과 같이 postIdx가 2와 3이 반환되는데, 반환되는 postIdx의 갯수를 COUNT함수를 이용하여 센다.
이제 join함수를 사용해보자.
SELECT name, nickName, profileImgUrl, Post.postIdx
FROM User join Post on Post.userIdx = User.userIdx and Post.status='ACTIVE'
WHERE User.status='ACTIVE' and User.userIdx=2;
가장 중요한 것은 FROM 과 WHERE 에서 다른 테이블을 연결하는 과정이기에, 인자 이름이 겹쳐질 수도 있다.
따라서 이를 방지하기위해 객체와 같은 방법을 사용한다.
SELECT name, nickName , profileImgUrl , postIdx
FROM User
join (SELECT postIdx, userIdx
FROM Post
WHERE status='ACTIVE') p on p.userIdx=User.userIdx
WHERE User.status='ACTIVE' and User.userIdx=2;
join의 안쪽을 자세히 보면, Post에서 ACTIVE인 상태의 postIdx와 userIdx을 가져온다.
그리고 이를 p라고 지칭한다. 이후 p.userIdx와 User.userIdx가 같은 경우를 모두 표시한다.
'외부활동 > UMC 2기 서버[Node]' 카테고리의 다른 글
6주차 - RestfulAPI와 Node.js Express 프레임워크 (2) | 2024.01.24 |
---|---|
4주차 -AWS RDS 구축 및 외부 RDS 외부 접속하기 with DataGrip (0) | 2024.01.24 |
3주차 - 도메인/서브 도메인 구매 및 연결 (2) | 2024.01.24 |
3주차 - AWS 서버 환경 구축[Nginx, Php, Mysql ] (0) | 2024.01.24 |
2주차 - Aws EC2 with winscp&putty (0) | 2024.01.24 |