오라클 16

[JDBC] PreparedStatement

PreparedStatement 특징 SQL문을 바로 실행하지 않고 잠시 보관하는 개념 미완성된 SQL문을 먼저 전달하고 실행하기전에 완성 형태로 만든 후 실행만 하면 됨 미완성된 SQL문 만들기(사용자가 입력한 값들이 들어갈 수 있는 공간을 ?(위치홀더) 로 확보 각 위치홀더에 맞는 값들을 세팅 *차이점* 1) Statement는 완성된 SQL문, PreparedStatement는 미완성된 SQL문 2) Statement객체 생성시 stmt = conn.createStatement(); PreparedStatement객체 생성시 pstmt = conn.prepareStatement(sql); 3) Statement로 SQL문 실행 시 결과 = stmt.executeXXXX(sql); PreparedSt..

*JDBC_Oracle* 2021.11.25

OBJECT < SEQUENCE >

시퀀스 (SEQUENCE) 자동으로 번호를 발생시켜주는 역할을 하는 객체 정수값을 자동으로 순차적으로 생성해줌 예 ) 회원번호, 사번, 게시글 번호 등등... 채번 할 때 사용 1. 시퀀스 객체 생성 구문 CREATE SEQUENCE 시퀀스명 START WITH 시작숫자 => 생략가능, 처음 발생시킬 시작값 지정 INCREMENT BY 증가값 => 생략가능, 몇씩 증가시킬건지 결정 MAXVALUE => 생략가능, 최대값 지정 MINVALUE => 생략가능, 최소값 지정 CYCLE/NOCYCLE => 생략가능, 값 순환 여부 CACHE 바이트크기/NOCACHE => 생략가능, 캐시메모리 쓸거야? 기본값은 20Byte * SEQUENCE CACHE MEMORY : 미리 발생할 값들을 생성해서 저장해두는 공간..

*SQL_Oracle* 2021.11.12

OBJECT < VIEW > 옵션

VIEW 옵션 [표현법] [ 상세표현법 ] CREATE OR REPLACE FORCE/NOFORCE VIEW 뷰명 AS 서브쿼리 WITH CHECK OPTION; WITH READ ONLY; 1) OR REPLACE : 해당 뷰가 존재하지 않으면 새로 생성 / 존재하면 갱신시켜주는 옵션 2) FORCE / NOFORCE - FORCE : 서브쿼리에 기술된 테이블이 존재하지 않아도 뷰가 생성 - NOFRORCE : 서브쿼리에 기술된 테이블이 반드시 존재해야만 뷰가 생성 3) WITH CHECK OPTION : 서브쿼리의 조건절에 기술된 내용에 만족하는 값으로만 DML 가능 조건에 부합하지 않은 값으로 수정하는 경우 오류 발생 4) WITH READ ONLY : 뷰에 대해 조회만 가능 (DML 수행 불가, ..

*SQL_Oracle* 2021.11.12

OBJECT < VIEW >

VIEW 뷰 SELECT(쿼리문)을 저장해둘 수 있는 객체 (자주 쓰는 긴 SELECT문을 저장해두면 긴 SELECT문을 매번 다시 기술 할 필요가 없음) 임시테이블(실제 데이터가 들어가는것은 아니다) 1. VIEW 생성방법 [ 표현법 ] - CREATE VIEW 뷰명 AS 서브쿼리; - CREATE OR REPLACE VIEW 뷰명 AS 서브 쿼리; -> OR REPLACE는 생략이 가능하다. 뷰 생성 시 기존에 중복된 이름이 없다면 새로 만들고 기존에 중복된 이름의 뷰가 있다면 해당 뷰를 변경(갱신)하는 옵션 요렇게 다중조인과 긴 쿼리문이 있다. 위의 긴 쿼리문을 'VW_EMPLOYEE'라는 뷰로 생성을 한다. 이렇게 뷰를 테이블처럼 써서 조회하면 편하게 조회가 가능하다. 기존의 뷰에 없는 컬럼을 추..

*SQL_Oracle* 2021.11.11

TCL < COMMIT, ROLLBACK >

TCL : TARNSACTION CONTROL LANGUAGE 트랜잭션을 제어하는 언어 * 트랜잭션 (TRANSACTION) - 데이터베이스의 논리적 연산단위 - 데이터의 변경사항 (DML)들을 하나의 트랜잭션에 묶어서 처리 COMMIT(확정)하기 전까지는 변경사항들을 하나의 트랜잭션에 담게 됨 - 트랜잭션의 대상이 되는 SQL : INSERT, UPDATE, DELETE COMMIT (트랜잭션 종료처리 후 확정) ROLLBACK (트랜잭션 취소) SAVEPOINT (임시저장) COMMIT; 진행 : 하나의 트랜잭션에 담겨있는 변경사항들을 실제 DB에 반영하겠다. 실제 반영시킨 후 트랜잭션은 비워짐 ROLLABCK; : 하나의 트랜잭션에 담겨있는 변경사항들을 삭제한 후 마지막 COMMIT 시점으로 돌아감..

*SQL_Oracle* 2021.11.11

DCL < GRANT, REVOKE>

DCL : DATA CONTROL LANGUAGE 데이터 제어 언어 계정에게 객체접근권한, 시스템권한 부여(GRANT)하거나 회수(REVOKE)하는 언어 * 권한 부여(GRANT) - 시스템권한 : 특정 DB에 접근하는 권한, 객체들을 생성할 수 있는 권한 - 객체접근권한 : 특정 객체들에 접근해서 조작할 수 있는 권한 [표현법] GRANT 권한1, 권한2, .....TO 계정명; * 시스템 권한의 종류 - CREATE SESSION : 계정에 접속할 수 있는 권한 - CREATE TABLE : 테이블을 생성할 수 있는 권한 - CREATE VIEW : 뷰를 생성할 수 있는 권한 - CREATE SEQUESCE : 시퀀스를 생성할 수 있는 권한 - CREATE USER : 계정을 생성할 수 있는 권한 -..

*SQL_Oracle* 2021.11.11

DDL < ALTER, DROP >

DDL : DATA DEFINITION LANGUAGE 데이터 정의 언어 1. ALTER 객체 구조를 수정하는 구문 ALTER TABLE 테이블명 수정할내용; - 수정할 내용 1) 컬럼 추가 / 수정 / 삭제 2) 제약조건 추가 / 삭제 => 수정은 불가 (수정하고자하면 삭제 후 새롭게 추가) 3) 테이블명 / 컬럼명 / 제약조건명 변경 1)컬럼 추가 / 수정 / 삭제 1_1) 컬럼 추가 (ADD) : ADD 추가할컬럼명 데이터타입 /* DEFAULT 기본값 */ 1-2) 컬럼 수정 (MODIFY) -- 데이터타입 수정 : MODIFY 수정할 컬럼명 바꾸고자하는 데이터타입 -- DEFAULT 값 수정 : MODIFY 수정할 컬럼명 DEFAULT 바꾸고자하는 기본값 -- 현재 변경하고..

*SQL_Oracle* 2021.11.11

DML <INSERT, UPDATE, DELETE>

데이터 조작 언어 테이블에 새로운 데이터를 삽입(INSERT)하거나, 기존의 데이터를 수정(UPDATE)하거나 삭제(DELETE) 하는 구문 1. INSERT : 테이블에 행을 추가하는 구문 [표현법] 1) INSERT INTO 테이블명 VALUES(값, 값, 값, ........); => 해당 테이블에 모든 컬럼을 추가하고자 하는 값을 내가 직접 제시해서 한 행을 INSERT 하고자 할 때 사용 주의할 점 : 컬럼 순번을 지켜서 VALUES 괄호 안에 나열해야 한다. 2) INSERT INTO 테이블명(컬럼명1, 컬럼명2, 컬럼명3, ......)VALUES(값1, 값2, 값3); => 해당 테이블에 특정 컬럼만 선택해서 그 컬럼에 추가할 값만 제시하고자 할 때 사용 한 행 단위로 추가되기 때문에 선택..

*SQL_Oracle* 2021.11.11

DDL <CREATE> SUBQUERY를 이용한 테이블생성

테이블 복사 뜨는 개념 서브쿼리 -> 메인 SQL문을 보조하는 쿼리문 [ 표현법 ] CREATE TABLE 테이블명 AS 서브쿼리; 서브쿼리 수행결과로 테이블을 생성한다. ※ SELECT절에서 산술연산 또는 함수식이 기술된 경우 엘리어스를 부여해야한다. 안그럼 오류뜸. 테이블이 다 생성된 후 뒤늦게 제약조건 추가 (ALTER TABLE 테이블명 XXXX) PRIMARY KEY : ADD PRIMARY KEY(컬럼명); PRIMARY KEY : ADD FOREIGN KEY(컬럼명) REFERENCES 참조할테이블명(참조할컬럼명) UNIQUE : ADD UNIQUE(컬러명); CHECK : ADD CHECK(컬럼에 대한 조건); NOT NULL : MODIFY 컬럼명 NOT NULL;

*SQL_Oracle* 2021.11.10

DML < SELECT > SUBQUERY(서브쿼리)

하나의 주된 SQL문(SELECT, INSERT, UPDATE, DELET, CREATE.....) 안에 포함된 또 하나의 SELECT 문 메인 SQL문을 보조역할을 하는 쿼리문 [서브쿼리 구분] 서브쿼리를 수행한 결과값이 몇행 몇열이냐에 따라서 분류 - 단일행 서브쿼리 : 서브쿼리를 수행한 결과값이 오로지 1개일 때 - 다중행 서브쿼리 : 서브쿼리를 수행한 결과값이 여러 행일 때 - 다중열 서브쿼리 : 서브쿼리를 수행한 결과값이 여러 열일 때 - 다중행 다중열 서브쿼리 : 서브쿼리를 수행한 결과값이 여러 행 여러열 일 때 => 서브쿼리를 수행한 결과가 몇행 몇열이냐에 따라 사용가능한 연산자도 달라짐 1. 단일행 서브쿼리 (SINGLE ROW SUBQUERY) 서브쿼리의 조회 결과값이 오로지 1개일 때 ..

*SQL_Oracle* 2021.11.06