1. 게시판 설계도를 그리시오. (Model 2, MVC)
2. DB 관련하여 아래를 정리하시오.
1)게시판 DB 설계 (특히 댓글 관련 컬럼)
· 클라이언트 요청 시, Controller에서 요청에 맞게 Model과 View에 의뢰
· Model에서는 Command, DAO, DTO를 이용하여 View에 반영하고, View에서는 사용자에게 값을 화면에 출력하여 응답
2)게시판 리스트 출력 sql문
· select * from mvc_board order by bGroup desc, bStep asc
3)게시판 글 작성 sql문
· insert into mvc_board(bId, bName, bTitle, bContent, bHit, bGroup, bStep, bIndent)
values(mvc_board_seq. nextval, ?, ?, ?, 0, mvc_board_seq. currval, 0, 0)
4)게시판 글 수정 sql문
· update mvc_board set bName=?, bTitle=?, bContent=? where bId=?
5)댓글 달기 위한 sql문
· replyView: select * from mvc_board where bId=?
bId 값에 해당하는 원본글을 불러오며, reply_view.jsp에서는 원본글 번호에 대해 답변이 생성되어야
하기 때문에 hidden 타입을 사용하여 정보를 숨긴다.
· reply: insert into mvc_board(bId, bName, bTitle, bContent, bGroup, bStep, bIndent)
values(mvc_board_seq. nextval, ?, ?, ?, ?, ?, ?)
· replyShape(): update mvc_board set bStep = bStep + 1 where bGroup = ? and bStep > ?
기존에 있던 답변에 bStep을 증가시켜 밑으로 밀리게 하는 쿼리문
3. Servlet에서 forward 방법은?
· Controller에서 Dispatcher 객체를 이용하여 아래와 같은 방법으로 forward 시킨다.
※SQL문 수업내용
※단일행 서브 쿼리: 하나의 SELECT문 내에 또 다른 SELECT문이 사용되는 경우
select ename, sal from emp where sal> (select avg(sal) from emp); (평균 급여보다 더 많은 급여를 받는 사원을 검색)
select * from emp,dept where emp.deptno=dept.deptno and ename='SMITH'; (SMITH가 속한 부서의 이름 검색)
select dname from dept where deptno = (select deptno from emp where ename='SMITH');
(SMITH가 속한 부서의 이름을 구하는 쿼리문)
※다중행 서브 쿼리: 서브 쿼리의 결과 두 건 이상 출력되는 경우, IN/ANY/ALL 연산자를 사용
· in 연산자
select ename, sal, deptno from emp where deptno in (select distinct deptno from emp where sal >= 3000);
(연봉을 3000이상 받는 사원이 소속된 부서와 동일한 부서에서 근무하는 사원들의 정보를 출력)
select deptno, ename, sal from emp where sal in (select max(sal) from emp group by deptno) order by deptno asc;
select deptno, ename, sal from emp e1 where sal = (select max(sal) from emp e2 where e1. deptno = e2. deptno)
(각 부서의 최대 급여를 받는 사원의 부서코드, 이름, 급여를 출력하는데 부서코드 순으로 오름차순 정렬)
· any 연산자: 범위를 의미
select ename, sal from emp where deptno=30 and sal > (select min(sal) from emp);
select ename, sal from emp where sal > (select min(sal) from emp where deptno=30);
select ename, sal from emp where sal > any (select sal from emp where deptno=30);
(부서 번호가 30번인 사원들의 급여 중 가장 낮은 값보다 높은 급여를 받는 사원의 이름, 급여를 출력하는 쿼리문)
· all 연산자: 최대값과 최소값을 반환
select ename, sal from emp where sal > all (select sal from emp where deptno = 30);
(30번 소속 사원들 중에서 급여를 가장 많이 받는 사원보다 더 많은 급여를 받는 사람의 이름과 급여를 출력)
4. 아래를 sql 문으로 처리하시오.
1)이름에 T가 들어가는 사원이 속한 부서에서 근무하는 모든 사원의 사원번호 및 이름 출력하는 쿼리문
select deptno, ename from emp where deptno in (select deptno from emp where ename like '%T%');
2)KING에게 보고하는 모든 사원의 이름과 급여를 출력하는 쿼리문 (서브쿼리 사용, mgr이 king인 사람)
select ename, sal from emp where mgr in (select mgr from emp where mgr=7839);
select ename, sal from emp where mgr=(select empno from emp where ename='KING');
3)커미션을 받는 사원과 급여가 일치하는 사원의 이름, 부서번호, 급여 출력하는 쿼리문
select ename, deptno, sal from emp where sal in (select sal from emp where comm is not null);
4)자신의 급여가 평균 급여보다 많고 이름에 T가 들어가는 사원과 동일한 부서에 근무하는 모든 사원의 사원 번호,
이름 및 급여를 출력하는 쿼리문
select deptno from emp where sal > (select avg(sal) from emp) and deptno in
(select deptno from emp where ename like '%T%');
5)Dallas에서 근무하는 사원과 직업이 일치하는 사원의 이름, 부서이름 및 급여를 출력하는 쿼리문
select e.ename, d.dname, e.sal from emp e,dept d where e.deptno=d.deptno
and e.job in (select e.job from emp e,dept d where e.deptno=d.deptno and loc='DALLAS');
'bitcamp > 면접족보' 카테고리의 다른 글
면접족보 21/01/18_게시판구현, Javascript (0) | 2021.02.14 |
---|---|
면접족보 21/01/15_데이터 무결성, 부모키 (0) | 2021.02.13 |
면접족보 21/01/13_SQL문, 게시판구현 (0) | 2021.02.13 |
면접족보 21/01/12_오라클 table 생성법 (0) | 2021.02.13 |
면접족보 21/01/11_EL, JSTL, JOIN (0) | 2021.02.13 |