728x90
게시판 댓글관리 구현 중 삭제된 게시글(tb_board.delete_yn = 'Y')에 달렸던 댓글은 댓글관리에서 볼 수 없게 하기위한 처리를 진행하다가 조인이 불가피하여 사용하였다. (조인은 속도를 늦추니 불가피한 경우에만 사용하면 좋다고 기억)
그 과정에서 탐색한 조인 방법을 정리한다.
1. 테이블
CREATE TABLE `tb_board` (
`id` int NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL,
`content` text NOT NULL,
`writer_id` int NOT NULL,
`writer` varchar(20) NOT NULL,
`delete_yn` varchar(1) DEFAULT 'N',
`create_date` datetime DEFAULT NULL,
`views` int DEFAULT '0',
`image` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `writer_id` (`writer_id`),
CONSTRAINT `tb_board_ibfk_1` FOREIGN KEY (`writer_id`) REFERENCES `tb_userinfo` (`id`) ON DELETE CASCADE
)
CREATE TABLE `tb_comment` (
`id` int NOT NULL AUTO_INCREMENT,
`board_id` int NOT NULL,
`content` text NOT NULL,
`writer_id` int NOT NULL,
`writer` varchar(20) NOT NULL,
`create_date` datetime NOT NULL,
PRIMARY KEY (`id`),
KEY `board_id` (`board_id`),
KEY `writer_id` (`writer_id`),
CONSTRAINT `tb_comment_ibfk_1` FOREIGN KEY (`board_id`) REFERENCES `tb_board` (`id`) ON DELETE CASCADE,
CONSTRAINT `tb_comment_ibfk_2` FOREIGN KEY (`writer_id`) REFERENCES `tb_userinfo` (`id`) ON DELETE CASCADE
)
2. Inner Join 예시
select c.*
from board.tb_board b join board.tb_comment c
on b.delete_yn='y' and b.id = c.board_id and c.writer = 'rhkdals'
order by b.id;
- select * from [ ] join [ ] on [조건]
- select c.* : tb_comment 테이블의 컬럼만 모두 조회
'DataBase > MySQL' 카테고리의 다른 글
[DataBase] Spring Boot 게시판 프로젝트 ERD (0) | 2022.01.26 |
---|---|
[MySQL] 기존 테이블에 외래키(FK)추가 & 제약조건 확인 (0) | 2022.01.04 |
[MySQL] 참조 데이터 삭제 시 같이 삭제 - CASCADE (0) | 2021.12.20 |
[DataBase] MySQL 복합키 설계 (0) | 2021.12.18 |
[MySQL] 테이블 삭제 및 데이터 삭제 (0) | 2021.12.16 |