티스토리 뷰

학습정리-12-07.txt
0.00MB

1. 게시판 삭제를 구현하시오.

BDao.java에 아래 함수를 추가한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
    public void delete(String bid) {
        System.out.println("delete");
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        
        try {
            connection = dataSource.getConnection();
            String query = "DELETE FROM mvc_board Where bid = ?";
            // DELETE에는 * 쓰는거 아니다...
            preparedStatement = connection.prepareStatement(query);
            preparedStatement.setInt(1, Integer.parseInt(bid));
            // valueOf도 사용 가능
            
            //executeUpdate 함수를 사용하는 방법입니다.
            // -> INSERT / DELETE / UPDATE 관련 구문에서는 반영된 레코드의 건수를 반환합니다.
            // -> CREATE / DROP 관련 구문에서는 -1 을 반환합니다.
            int rn = preparedStatement.executeUpdate();
            System.out.println("삭제 갯수: " + rn);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if(preparedStatement != null)
                    preparedStatement.close();
                if(connection != null)
                    connection.close();
            } catch (Exception e2) {
                e2.printStackTrace();
            }
        }
        
        
    }
cs

 

BController.java의 actionDo 함수의 if~else문에 아래 코드를 추가한다.

1
2
3
4
5
        else if(com.equals("/delete.do")) {
            command = new BDeleteCommand();
            command.execute(request, response);
            viewPage = "list.do";
        }
cs

 

BDeleteCommand.java를 생성한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package edu.kosmo.ex.command;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import edu.kosmo.ex.dao.BDao;
 
 
 
public class BDeleteCommand implements BCommand{
 
    @Override
    public void execute(HttpServletRequest request, HttpServletResponse response) {
        String bid = request.getParameter("bid");
        
        BDao dao = new BDao();
        dao.delete(bid);    
    }
 
}
cs

 

 


2.  데이터 무결성을 위한 제약 조건 4가지는?

  • 테이블에 부적절한 자료가 입력되는 것을 방지하기 위해 테이블을 생성할 때, 각 컬럼에 대해서 정의하는 여러 가지 규칙이다.
  • 무결성 : 데이터베이스 내에 있는 데이터의 정확성 유지
  • 제약 조건 : 바람직하지 않은 데이터가 저장되는 것을 방지하는 것

제약 조건은 총 5가지이지만 수업은 일단 4가지만...

무결성 제약 조건 역할
NOT NULL NULL을 허용하지 않음
UNIQUE 중복된 값을 허용하지 않고, 항상 유일한 값을 갖도록 함
PRIMARY KEY NULL을 허용하지 않고, 중복된 값도 허용하지 않음. (NOT NULL + UNIQUE)
FOREIGN KEY 참조되는 테이블의 컬럼의 값이 존재하면 허용
CHECH 저장 가능한 데이터 값이 범위나 조건을 지정하여, 설정한 값만을 허용

 

 


3. 커밋과 롤백에 대하여 설명하시오.
COMMIT

- 모든 작업을 정상적으로 처리하겠다고 확정하는 명령어.

- 트랜젝션의 처리 과정을 데이터베이스에 반영하기 위해서, 변경된 내용을 모두 영구 저장한다.

- COMMIT 수행하면, 하나의 트랜젝션 과정을 종료하게 된다.

- TRANSACTION(INSERT, UPDATE, DELETE)작업 내용을 실제 DB에 저장한다.

- 이전 데이터가 완전히 UPDATE된다.

- 모든 사용자가 변경한 데이터의 결과를 볼 수 있다.

- 따라서 COMMIT을 하지 않으면 이전 작업 내용이 아직 남아있다.

- COMMIT을 하면 ROLLBACK 불가.

- DDL문 CREATE, ALTER, DROP, RENAME, TRUNCATE등은 자동으로 COMMIT을 실행.

 

ROLLBACK

- 작업 중 문제가 발생했을 때, 트랜젝션의 처리 과정에서 발생한 변경 사항을 취소하고, 트랜젝션 과정을 종료시킨다.

- 트랜젝션으로 인한 하나의 묶음 처리가 시작되기 이전의 상태로 되돌린다.

- TRANSACTION(INSERT, UPDATE, DELETE)작업 내용을 취소한다.

- 이전 COMMIT한 곳까지만 복구한다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
-- delete 명령어
-- 테이블에 저장되어 있는 데이터를 삭제하는 명령문이다.
DROP TABLE DEPT01;
CREATE TABLE DEPT01 AS SELECT * FROM DEPT;
COMMIT;
SELECT * FROM dept01;
 
-- dept01 부서 테이블의 모든 데이터를 삭제
DELETE FROM dept01;
 
-- 30번 부서를 삭제한 후 부서 테이블을 확인
DELETE FROM dept01 WHERE deptno = 30;
 
 
-- 서브 쿼리를 이용하여 데이터 삭제하기
DROP TABLE EMP01;
CREATE TABLE EMP01 AS SELECT * FROM EMP;
COMMIT;
SELECT * FROM emp01;
 
-- 서브 쿼리문으로 부서명이 sales인 부서의 번호부터 알아낸 뒤
-- sales 부서 소속의 사원을 삭제하는 쿼리문
DELETE FROM emp01 WHERE deptno = (SELECT deptno FROM dept WHERE dname = 'SALES');
 
-- commit rollback;
-- 모든 작업을 정상적으로 처리하겠다고 확정하는 명령어이다.
-- 트랜젝션의 처리 과정을 데이터베이스에 반영하기 위해서
-- 변경된 내용을 모두 영구 저장한다.
-- commit을 하기 전까지는 이전 작업내용이 아직 남아있다.....
-- 따라서 insert, update, delete 후에는 반드시 commit을 해야한다!
-- rollback은 이전 상태로 되돌리기
 
ROLLBACK;
-- drop은 rollback이 되지 않는다...주의!
-- 또한 commit을 완료한 경우에도 rollback이 되지 않는다.
-- delete의 경우 commit할 때 주의...
 
-- DDL문 CREATE, ALTER, DROP, RENAME, TRUNCATE등은 자동으로 COMMIT을 실행
 
 
-- 데이터 무결성 = 데이터 정확성?
-- 데이터 무결성 -> 일단 제약 조건이 뭐가 있는지 외우기...이해는 오래 걸린다...
 
-- UNIQUE 제약 조건
-- 부서 번호와 같이이 기본키 제약조건이 설정된 컬럼은 테이블내에 저장되어 있는
-- 부서 번호있지를 확인한 후, 기존에 저장되어 있는 번호가 아닌 경우에만 저장이 가능하다.
INSERT INTO dept01 VALUES (50'TEST''SEOUL');
SELECT * FROM dept01;
 
 
-- NOT NULL
DROP TABLE emp01;
CREATE TABLE emp01(
empno NUMBER(4NOT NULL,
ename VARCHAR2(10NOT NULL,
job VARCHAR2(9),
deptno NUMBER(2)
);
commit;
INSERT INTO emp01(empno, ename, job, deptno) VALUES (NULLNULL'SALESMAN'30);
-- 집어넣는 것 불가
 
INSERT INTO emp01(empno, ename, job, deptno) VALUES (1'집에가자''SALESMAN'30);
 
SELECT * FROM emp01;
cs

69번
 jsp_board_test1 프로젝트를 생성하고, 아래의 객체를 완성하여 list.jsp 를 완성하시오.
- DTO
- DAO
- Controller
- Command

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함