본문 바로가기

Oracle

(45)
Oracle(PL /SQL ) 기본구조 PL / SQL 소스 프로그램의 기본 단위를 블록 이라고 하는데, 블록은 선언부, 실행부, 예외 처리 부로 구성된다. 이 블록은 다시 이름이 없는 블록과 이름이 있는 블록으로 구분할 수 있는데 전자에 속하는 것이 익명 블록이며 , 함수, 프로시저, 패키지 등이 후자에 속한다. PL/ SQL 의 블록 구조는 다음과 같다. 이름부 IS(AS) 선언부 BEGIN 실행부 EXCEPTION 예외 처리부 END; 이름부 : 블록의 명칭이 오는데, 생략할 때는 익명 블록이 된다. 선언부: DECLARE로 시작되며 , 실행부와 예외 처리부에서 사용할 각종 변수, 상수, 커서 등을 선언한다. 중요한 점은 변수 선언이나 실행부와 예외 처리부에서 사용하는 각종 문장의 끝에 반드시 세미콜론을 찍어야 한다는 것이다 세미콜론이 ..
Oracle(표현식) 표현식 이란 한개 이사으이 값과 연산자 , SQL 함수 등이 결합된 식이다. 이 절에서는 특정 조건에 따라 값을 변경해서 보이는 CASE표현식에 대해 알아보자. CASE WHEN 조건1 THEN 값1 WHEN 조건2 THEN 값2 ELSE 기타값 END SELECT ROWNUM,EMPLOYEE_ID,SALARY, CASE WHEN SALARY 5000 AND SALARY
Oracle(의사컬럼) 의사컬럼이란 테이블의 컬럼처럼 동작하지만 실제로 테이블에 저장되지 않는 컬럼을 말한다 SELECT 문에서는 의사컬럼을 사용할수 있지만, 의사컬럼 값을 INSERT , UPDATE , DELETE 할수 없다. NEXTVAL , CURRVAL 도 의사컬럼의 일종이다. 대표적인 의사컬럼의 종류를 열거하면 다음과 같다. CONNECT_BY_ISCYCLE, CONNECT_BY_ISLEAF,LEVEL 계층형 쿼리에서 사용하는 의사컬럼이다. NEXTVAL , CURRVAL 시퀀스에서 사용하는 의사컬럼이다. ROWNUM,ROWID ROWNUM은 쿼리에서 반환되는 각 로우들에 대한 순서 값으 나타내는 의사컬럼이다. SELECT ROWNUM , EMPLOYEE_ID FROM EMPLOYEES; 테이블에 데이터가 많으면 S..
Oracle(MERGE) MERGE 문은 조건을 비교해서 태이블에 해당 조건에 맞는 데이터가 없으면 INSERT 있으면 UPDAT를 수행하는 문장이다. 특정 조건에 따라 어떤 때는 INSERT를 또 다른경우에는 UPDATE를 수행하는 문장이다. 특정 조건에 따라 어떤 때는 INSER를 또, 다른 경우에는 UPDAT문을 수행해야 할때, 과거에는 해당 조건을 처리하는 로직을 별도로 작성해야 했지만 MERGE문이 나온덕분에 이제 한 문장으로 처리할 수 있게 되었다. MERGE INTO [스키아.] 테이블명 USING(UPDATE나 INSER될 데이터 원천) ON(UPDATE 될 조건) WHEN MATCHED THEN SET 컬럼1 = 값1 , 컬럼2 = 값2.. WHERE UPDATE 조건 DELETE WHERE UPDATE_DELE..
Oracle (index) 인덱스는 테이블에 있는 데이터를 빨리 찾기 위한 용도의 데이터베이스 객체다, 책을 볼 때 특정 내용을 빨리 찾기 위해 맨 뒤에 있는 찾아보기 항목을 사용해 본 적이 있을텐데, 이 찾아보기 부분이 인덱스라고 생각하면된다. 그 특성에 따라 대표적인 인덱스를 분류하면 대략 다음과 같다. 인덱스 구성 컬럼 개수에 따른 분류 : 단일 인덱스와 결합 인덱스 유일성 여부에 따른 분류 UNIQUE 인덱스, NON-UNIQUE 인덱스 인덱스 내부 구조에 따른 분류: B-tree 인덱스, 비트맵 인덱스, 함수 기반 인덱스 1과 2는 인덱스 형태와 속성에 따른 분류이며 , 3은 구조와 내부 알고리즘에 따른 분류로 보면 된다. 인덱스는 테이블에 있는 한 개 이상의 컬럼으로 만들수 있다. 표준인 B-tree 인덱스 키 (인덱스..
오라클 View view는 하나 이상의 테이블이나 다른 뷰의 데이터를 볼수 있게 하는 데이터베이스 객체다. 실제 데이터는 뷰를 구성하는 테이블에 담겨 있지만 마치 테이블처럼 사용할수 있다. 또한 테이블 뿐만 아니라 다른 뷰를 참조해 새로운 뷰를 만들어 사용할수 있다. 데이터를 본다는 의미가 있으므로 뷰의 정의는 데이터를 조회 하는 SELECT 문으로 구성된다. 뷰생성 CREATE OR REPLACE VIEW EMP_DEPT_V1 AS SELECT A.EMPLOYEE_ID, A.FIRST_NAME,A.DEPARTMENT_ID, B.DEPARTMENT_NAME FROM EMPLOYEES A, DEPARTMENTS B WHERE A.DEPARTMENT_ID = B.DEPARTMENT_ID; 뷰객체가 만들어 졌으니 이젠 EMP..
Oracle(트리거생성,UPDATE,INSERT) 일단 트리거를 쓰는 이유, 고려할점에 대해서 구글링 해본 내용등를 보자 ! 활용 1.데이터 무결성의 강화 -전체 데이터베이스에 걸쳐 영향 받은 테이블을 연속적으로 변경함으로서 데이터 무결성을 강화하는데 사용될 수 있다. - 중복되었거나 파생된 데이터에 대해 트리거를 사용하는 것이 좋다. 2.참조 무결성의 강화 -연속적인 삭제 / 갱신이 일어날 필요가 있을 때 적절한 작업을 하도록 보장하는데 유용하다. - FOREIGN KEY, REFERENCE 제약을 사용할 수도 있다. - 자신의 오류 메시지를 정의할 수 있다. 3.업무 규칙의 설정 - 제약에 의해 표현될 수 있는 것보다 복잡한 제약을 표현할 수 있다. 4.감사기능의확장 -상세한 변경 내역을 추적하려면, 트리거를 적용하거나 Log Miner를 이용해 아..
Oracle(프로시저) 매게 변수 없는 프로시저 CREATE OR REPLACE PROCEDURE MEMBER IS # 사용할 변수선언 BEGIN #실행구간 PL/SQL ,EXCEPTION INSERT INTO TBL_MEMBER(MEMBER_NAME,MEMBER_PASSWORD)VALUES('TEST','1'); END MEMBER; 실행구문 EXECUTE MEMBER; 실행하게 되면 MEMBER_NAME 과 MEMBER_PASSWOR에 'TEST','1' 이 저장될것이다. 매게 변수 있는 프로시저 CREATE OR REPLACE PROCEDURE MEMBER (MEMBER_NAME IN VARCHAR2, MEMBER_PASSWORD IN VARCHAR2, MEMBER_ROLE IN VARCHAR2, MEMBER_EMAIL ..