목록전체 글 (208)
YJ의 새벽
JDBC Connection pool -- 클라이언트에서 데이터베이스 연결을 요청하는 시점에 연결하는것이 아니라 미리 일정수량의 연결 객체들을 만들어 놓고 불러다가 사용하는 방법. -- 미리 일정 갯수의 Connection 을 만들어 Pool (메모리영역 )에 저장 - SQL문 실행 전 ( 프로그램 실행된 후 ) -- 사용자 요청이 발생하면 Connection을 제공, 연결종료되면 Pool에 다시 반환후 보관. - 빌려줄 Connection이 없다면 Connection이 반환될때까지 클라이언트는 대기상태로 전환 **필요한 이유 ? -- 네이버와 같은 웹 어플리케이션은 CRUD와 같은 작업을 처리할 때 주로 데이터베이스를 이용, DBMS나 기타 외부와의 접속이 빈번하게 필요한 시스템에는 반드시 존재해야하는..
뷰 (VIEW) --실체가 없는 테이블 , 다른 테이블에 접근하기 위한 테이블, 중간에 있는 테이블 -- 장점 : 검색속도가 빠르다. 한개의 뷰로 여러 테이블을 검색(조인) 할 수 있다. -- 제한 설정이 가능하다. (읽기전용 : READ ONLY) -- 기본적으로 읽기와 쓰기 모두 가능 . ( SELECT , INSERT , UPDATE , DELETE 모두 가능 ) ** 뷰(VIEW) 정보 조회 : SELECT * FROM USER_VIEWS; --SELECT * FROM 뷰이름 ** 뷰(VIEW) 생성 : CREATE VIEW 뷰이름 AS SELECT문. --읽기 쓰기 모두 가능 --SELECT , INSERT , UPDATE , DELETE 모두 가능 CREATE VIEW 뷰이름 AS SELCET..
오라클 JDBC 연동하여 **execute() : DDL 실행 **executeQuery() : SELECT **executeUpdate() : INSERT , UPDATE, DELETE ** SELECT 문 . public class Example { public void select(Connection con,Statement st,ResultSet rs) { String sql = "SELECT * FROM EMP_TBL"; try { st = con.createStatement(); rs = st.executeQuery(sql); while(rs.next()==true) { String value = rs.getString("ENAME"); System.out.println("ENAME: "+va..
인덱스 (DDL) -- 읽기 용도의 테이블 -- 한 테이블에 여러개의 인덱스 지정이 가능 --인덱스 조회 SELECT * FROM USER_INDEXES WHERE TABLE_NAME = '테이블명'; --테이블 단위의 정보를 관리 SELECT * FROM ALL_IND_COLUMNS WHERE TABLE_NAME = '테이블명'; SELECT TABLE_NAME,INDEX_NAME,COLUMN_NAME FROM ALL_IND_COLUMNS WHERE TABLE_NAME = '테이블명'; --컬럼 단위의 정보를 관리 -- 인덱스 삭제 ( 수정이 없다, 삭제후 다시만들어야한다. ) DROP INDEX 인덱스명; -- 인덱스 생성 CREATE INDEX 인덱스명 ON 테이블명(컬럼명) ; --IND_NAME..
JDBC에서 시퀀스 수정 , 확인하기 **EX ) 시퀀스 수정 : ALTER SEQUENCE SQL문 public class TestJDBC { //ALTER SEQUENCE 수행하는 메소드 정의 // --ALTER SEQUENCE 시퀀스명 MAXVALUE 변경할최댓값 //외부에서 시퀀스이름값 받아오는 매개변수 선언 : String pseqName //연결객체 주소 받아오는 매개변수 선언 : Connection pcon //반환값이 없다 . public void alterSeq(String pseqName, Connection pcon) { //1. 실행할 SQL 문 문자열로 보관 String sql = "ALTER SEQUENCE "+pseqName+ " MAXVALUE 1000"; //2. State..
JDBC 프로그래밍 단계 JDBC 드라이버 로드 --> JDBC driver class / Class.forName() 데이터베이스 연결 --> Java.sql.Connection / getConnection() Statement 생성 --> Java.sql.Statement / createStatement() Java.sql.PreparedStatement / prepareStatment() SQL 문 전송 --> Java.sql.Statement / executeQuery() , excuteUpdate() 결과받기 --> Java.sql.ResultSet / resultSet() 연결해제 --> Java.sql.Connection / close() **PreparedStatement -- DBMS 에..
트리거 --테이블이 변경되면 이를 이벤트로 다른테이블이 자동으로 변경되도록 하기위해 사용. 예 )) 입고 테이블에 상품이 입고되면 ( INSERT 이벤트발생 ) 재고 테이블에 자동으로 상품 증가 . --BEFORE 타이밍은 INSERT , UPDATE , DELETE 문이 실행될때 해당문장이 실행되기 전 트리거가 가지고있는 BEGIN~END 사이의 문장을 실행. --AFTER 타이밍은 INSERT , UPDATE , DELETE 문이 실행되고 난 후 트리거가 가지고있는 BEGIN~END 사이의 문장을 실행. --행 레벨 트리거를 정의하고 할 때에는 FOR EACH ROW 를 기술!! FOW EACH ROW 생략시 문장 레벨 트리거. --:OLD :NEW 명령어. --FOR EACH ROW 절이 있다면 행..
커서 ( CURSOR ) --오라클 서버에서 SQL문 실행할때마다 처리를 위한 메모리공간 --Oracle은 프로시저 내부에서 커서Cursor를 사용할수 있음. --행의 집합을 다루기에 많은 편리한 기능을 제공 --테이블에서 여러개의 행을 쿼리한 후 , 쿼리의 결과인 행 집합을 한 행씩 처리하기 위한 방식 *처리 순서 커서 선언 (CURSOR 커서이름 ) --> 커서열기 ( OPEN 커서이름) --> LOOP문으로 ( 커서에서 데이터 가져오기(FETCH) --> 데이터 처리 ) -->커서 닫기 (CLOSE 커서이름 ) %NOTFOUND : 커서 영역의 자료가 모두 FETCH 됐었다면 TRUE %FOUND : 커서영역에 FETCH 되지않은 자료가 있다면 TRUE %ISOPEN : 커서가 OPEN 상태이면 T..