본문 바로가기
개발일지

개발일지 -db 응용-

by 태운콩즙 2024. 1. 8.
728x90
반응형

오늘은 지난시간에 작성했던 회원목록을 활용하여 여러 기능들을 만들어 보았다

 

-- 게시글 카테고리 
-- 게시판 카테고리는 자유게시판, 공지사항, 가입인사 세가지가 있음.
-- 카테고리 세가지 미리 저장

-- 게시글 카테고리 
insert into category_table (category_name) values ('자유게시판');
insert into category_table (category_name) values ('공지사항');
insert into category_table (category_name) values ('가입인사');
select*from category_table;

카테고리 테이블에 카테고리를 생성하였다


-- 게시판 기능 
-- 1. 게시글 작성(파일첨부 x) 3개 이상 
-- 1번 회원이 자유게시판 글 2개, 공지사항 글 1개 작성 

insert into board_table(board_title,board_writer,board_contents,board_file_attached,member_id,category_id) 
values ('ㅎㅇ?','aa','aaaaaa',0,1,1);
insert into board_table(board_title,board_writer,board_contents,board_file_attached,member_id,category_id)
values ('ㅂㅇ', 'aa','aaaa',0,1,1);
insert into board_table(board_title,board_writer,board_contents,board_file_attached,member_id,category_id)
values ('공지는 김공지','aa','aaaa',0,1,2);

각각 게시판에 1번회원이 글을 작성 해주었다


-- 2번 회원이 자유게시판 글 3개 작성

insert into board_table(board_title,board_writer,board_contents,board_file_attached,member_id,category_id)
values ('고구려의 흥망성쇠','bb','bbbb',0,2,1);
insert into board_table(board_title,board_writer,board_contents,board_file_attached,member_id,category_id)
values ('행운의 편지', 'bb','bbbb',0,2,1);
insert into board_table(board_title,board_writer,board_contents,board_file_attached,member_id,category_id)
values ('나만 없어 고양이','bb','bbbb',0,2,1);

2번 회원의 글
-- 3번 회원이 가입인사 글 1개 작성 

insert into board_table(board_title,board_writer,board_contents,board_file_attached,member_id,category_id)
values ('가입은 김가입','cc','cccc',0,3,3);

3번 회원의 글
-- 1.1. 게시글 작성(파일첨부 o)
-- 2번 회원이 파일있는 자유게시판 글 2개 작성

insert into board_table(board_title,board_writer,board_contents,board_file_attached,member_id,category_id)
values ('다운받지마시오','cc','cccc',1,2,1);
insert into board_table(board_title,board_writer,board_contents,board_file_attached,member_id,category_id)
values ('디도스 바이러스','cc','cccc',1,2,1);

2번회원이 파일이 있는 게시글을 작성 하였다 파일이 있는 게시글은 board_contents,board_file_attached 를 1 로 만들어 준다

 

이때 첨부된 파일 정보를 확인하려면

-- 첨부된 파일 정보를 board_flie_table에 저장
-- 사용자가 첨부한 파일 이름: 00.jpg
insert into board_file_table(orginal_file_name,stored_file_name,board_id)
	values('ddddd.jpg','23415641385_dddd.jpg',8); -- 여기서 8은 게시글의 번호 (id)

위와같이 저장을 해주면 확인을 할수 있다

 


-- 2. 게시글 목록 조회 

-- 2.1 전체글 목록 조회

select*from board_table;


-- 2.2 자유게시판 목록 조회 

select*from board_table where category_table.id = 1;


-- 2.3 공지사항 목록 조회 

select*from board_table where category_table.id;


-- 2.4 목록 조회시 카테고리 이름도 함께 나오게 조회

select*from category_table,board_table where board_table.category_id = category_table.id;


-- 3. 2번 게시글 조회 (조회수 처리 필요함)

update board_table set board_hits = board_hits+1 where id=2;
select*from board_table where id= 2;


-- 3.1. 파일 첨부된 게시글 조회 (게시글 내용과 파일을 함께)

update board_table set board_hits = board_hits+1 where id=8;

-- 게시글의 내용만 가져옴

select * from board_table where id= 8;


-- 4. 1번 회원이 자유게시판에 첫번째로 작성한 게시글의 제목, 내용 수정

select * from board_table where id= 1;
update board_table set board_title= '안녕하십니까_수정' , board_contents='aaaaaa' where id = 1;


-- 5. 2번 회원이 자유게시판에 첫번째로 작성한 게시글 삭제 

delete from board_table where id = 4;


-- 7. 페이징 처리(한 페이지당 글 3개씩)

select*from board_table order by id desc;
select*from board_table order by id desc limit 0,3; -- 16 15 14 1페이지

select*from board_table order by id desc limit 3,3; -- 13 12 11 2페이지

select*from board_table order by id desc limit 6,3; -- 10 9 8 3페이지
-- 앞쪽의 숫자는 일련번호를 뜻 함 
-- 한 페이지당 글 5개 씩
select*from board_table order by id desc limit 0,5; -- 1페이지
-- 한페이지당 3개씩 출력하는 경우 전체 글 갯수가 20개라면 필요한 페이지 갯수는? 7개
select count(*) from board_table;
-- 7.2. 두번째 페이지
select*from board_table order by id desc limit 5,5; -- 2페이지
-- 7.3. 세번째 페이지
select*from board_table order by id desc limit 10,5; -- 3페이지 
-- 8. 검색(글제목 기준)
select*from board_table where board_title like '%오늘%';
-- 8.1 검색결과를 오래된 순으로 조회 
select*from board_table where board_title like '%오늘%' order by id asc;
-- 8.2 검색결과를 조회수 내림차순으로 조회 
select*from board_table where board_title like '%오늘%'order by board_hits desc;
-- 8.3 검색결과 페이징 처리 
select*from board_table where board_title like '%오늘%'order by board_hits desc limit 0,3;

 

-- 댓글 기능 
-- 1. 댓글 작성 
-- 1.1. 1번 회원이 1번 게시글에 댓글 작성 

insert into comment_table(comment_writer,comment_contents,board_id,member_id) values ('aa','aaaaa',1,1);


-- 1.2. 2번 회원이 1번 게시글에 댓글 작성 

insert into comment_table(comment_writer,comment_contents,board_id,member_id) values ('bb','bbbb',1,2);


-- 2. 댓글 조회

select*from board_table where id=1;
select*from comment_table where board_id=1;
select*from board_table b, comment_table c where b.id=c.board_id and b.id = 1;


-- 3. 댓글 좋아요 

-- 3.1. 1번 회원이 2번 회원이 작성한 댓글에 좋아요 클릭
-- 좋아요 했는지 체크
select id from good_table where comment_id=2 and member_id =1;
-- 좋아요
insert into good_table(comment_id , member_id) values (2,1);
-- 좋아요 취소
delete from good_table where id =1;
-- 3.2. 3번 회원이 2번 회원이 작성한 댓글에 좋아요 클릭 
insert into good_table(comment_id , member_id) values  (2,3);
-- 4. 댓글 조회시 좋아요 갯수도 함께 조회
select count(*) from good_table where comment_id =1;

 

728x90
반응형