Web develop/SQL 23

[SQL/ORACLE] 트리거(Trigger) 형식 및 사용예제

트리거(Trigger) : 방아쇠를 당기는것. 사건이 발생했을 때 특정 영역 수행 이벤트 처리(~했을 때 수반되는 처리) 특정테이블에 이벤트(insert, delete, update)가 발생했을 시 다른테이블에 연관된 내용을 변경하도록 하는 일 트리거 형식 CREATE [OR REPLACE] TRIGGER 트리거명 (BEFORE | AFTER) (INSERT | DELETE | UPDATE) --이벤트(사건발생) ON 테이블명 --이벤트가 발생하는 테이블 [FOR EACH ROW] --실행될 문장 행에 각각 적용 [WHEN 조건식] BEGIN --이벤트 발생시 실행할 문장(주로 DML) => 이벤트 처리부 END; / 트리거 사용예제 CREATE OR REPLACE TRIGGER welcome AFTER..

Web develop/SQL 2019.06.16

[SQL/ORACLE] 패키지(Package) 선언, 실행방법 및 사용예제

패키지(Package) 동일한 프로시저명 또는 함수명을 구분 (NameSpace 개념) --------------패키지 선언------------------- CREATE OR REPLACE PACKAGE 패키지명 IS 정의될 저장프로시저와 저장함수 END; / --------------패키지 실행(body)------------- CREATE OR REPLACE PACKAGE BODY 패키지명 IS 저장프로시저와 저장삼후 정의 END; / --실행 EXEC[UTE] 패키지명.저장프로시저명; 패키지 사용예제 ----------------------패키지 선언------------------------------------- create or replace package encore is procedure..

Web develop/SQL 2019.06.16

[SQL/ORACLE] 커서 (CURSOR) 형식, FOR문에 사용하는 커서, ORA-01422 에러

CURSOR SELECT의 결과가 2개행 이상일 때 명시적으로 사용 2개 행 이상을 출력하는 SELECT문을 저장하는 변수 declare --변수선언, 커서정의 CURSOR 커서명 IS SELECT문장; begin OPEN 커서명; -- 커서 사용선언 FETCH 커서명 INTO 변수명 --커서 사용. 데이터 1행 인출 CLOSE 커서명; -- 커서 사용중지 end; / declare CURSOR cur IS SELECT deptno,dname,loc FROM dept; vdept dept%rowtype; -- 테이블을 구성하는 모든 컬럼 참조 begin OPEN cur; dbms_output.put_line('부서번호/부서명/위치'); LOOP FETCH cur INTO vdept; EXIT WHEN c..

Web develop/SQL 2019.06.16

[SQL/ORACLE] 저장함수(Stored Function) 형식 및 사용방법

저장함수 Procedure와 달리 실행(함수호출)후 결과를 되돌려 받을 수 있는 return 데이터; 를 반드시 명시해야 함 CREATE [OR REPLACE] FUNCTION 함수명(매개변수 선언) RETURN 자료형 IS 변수선언 BEGIN (순차적으로)실행할 SQL문 RETURN 데이터; END; / 사용법 CREATE FUNTION~ (함수를 DB에 저장) — 함수 생성 VARIABLE 바인드변수명 자료형; — 변수 선언 EXEC[UTE] :바인드변수명 := 함수명() — 함수호출, 결과값 저장 PRINT 바인드변수명; — 저장 값 확인 자바와 비교한 참고) void hello(String name){ System.out.println("안녕,"+name); } -----> Stored Proce..

Web develop/SQL 2019.06.16

[SQL/ORACLE] 저장 프로시저 (Stored Procedure) 형식, 사용 예제

자주 사용되는 DML, DQL을 모듈화(독립적인 객체) 시켜서 DB에 저장하였다가 필요할 때 호출해서 사용 서로 연관있는 DML과 DQL을 연결해서 실행하는 단위 JAVA의 메소드. 함수와 같음 [IN|OUT] IN은 안으로 데이터를 받는 매개변수의 의미, OUT은 데이터를 내보내는 리턴의 역할. OUT 사용시 호출 ⇒ execute 프로시저명(인자, :변수명) 프로시저 생성 및 실행방법 CREATE [OR REPLACE] PROCEDURE 프로시저명(변수명 [IN|OUT] 자료형, 변수명 자료형) --자료형은 타입만 기재 (ex. 변수명 VARCHAR2) IS 실행부 BEGIN에서 사용할 변수선언; BEGIN --초기화, SQL문, 함수호출, 절차적 요소(조건문, 반복문) 실행할 문장1; 실행할 문장2..

Web develop/SQL 2019.06.16

[SQL/ORACLE] PL/SQL 반복문 형식 (LOOP, FOR, 다중 FOR문,WHILE)

LOOP LOOP 반복실행할 문장1; 반복실행할 문장2; 반복실행할 문장3; EXIT [WHEN 조건식]; END LOOP; -- 1~10까지 출력 declare i NUMBER := 0; begin LOOP i := i+1; dbms_output.put_line(i); EXIT WHEN i=10; END LOOP; END; / FOR FOR 변수 IN [REVERSE] 최소값..최대값 LOOP 반복 실행할 문장; END LOOP; REVERSE : 최소값 최대값이 반대로 명시됨 -- 안녕하세요 10번 출력 declare begin FOR i IN 1..10 LOOP dbms_output.put_line('안녕하세요'||i); END LOOP; END; / 다중 FOR문 -- 3~5단 출력 declare..

Web develop/SQL 2019.06.16

[SQL/ORACLE] PL/SQL 조건문 형식 및 사용예제 (if문, if~else문, if~elif~else문)

if문 if (조건식) --소괄호 생략가능 then -- 시작을 표현 조건식이 참일 때 실행할 문장; end if; -- 끝을 표현 declare su1 number; su2 number := 20; begin su1 := 23; if(su1>su2) then dbms_output.put_line('작다!!'); end if; if(su1 := 대입연산자 if~else문 if 조건식 then 조건식 결과가 참일 때 실행할 문장; else 조건식 결과가 거짓일 때 실행할 문장; end if; -- declare c emp.comm%type; vename emp.ename%type; begin SELECT comm,ename INTO c,vename FROM emp WHERE empno = 7788; if(..

Web develop/SQL 2019.06.15

[SQL/ORACLE] SEQUENCE 사용법 (+ORACLE 11g에서 사용시 설정하는법)

SEQUENCE : 자동번호 부여 숫자값이 일정한 규칙에 의해서 연속적으로 자동증가. CREATE SEQUENCE sequence\_name [INCREMENT BY] 증가치 [START WITH] 초기값 [MAXVALUE n|NOMAXVALUE] [MINVALUE|NOMINVALUE] [CYCLE|NOCYCLE] [CACHE|NOCACHE]; 테이블에 종속적이지 않다(테이블과 독립적) maxvalue : 시퀀스가 가질 수 있는 최대값 지정. nomaxvalue일 경우 ascending순서일 경우 10의 27승 descending일 경우 -1 minvalue : 시퀀스가 가질 수 있는 최소값 지정. nominvalue일 경우 ascending 1 descending 10의 26승으로 설정. cache :..

Web develop/SQL 2019.06.15

[SQL/ORACLE] 제약조건 설명 및 사용법 (NOT NULL, UNIQUE, PK, FK, CHECK)

: 무결성 제약조건 테이블에 부적절한 자료가 입력(INSERT, UPDATE) 되는 것을 방지하기 위해서 테이블 생성할 때 각 컬럼에 대해서 정의하는 여러가지 규칙. (테이블 생성 후 컬럼에 규칙정의하는 것도 가능) NOT NULL 해당 컬럼값으로 NULL을 허용하지 않음 (행 단위)입력시 데이터를 무조건 받음 유일하지 않고 반드시 입력 또는 수정해야 할 컬럼에 설정 UNIQUE 테이블내에서 해당 컬럼값은 항상 유일무이한 값을 가질 것 중복을 허용하지 않음 중복데이터는 방지, NULL의 중복은 방지하지 못함 ADD NOT NULL은 불가능 =>테이블 내의 모든 컬럼은 특별한 설정(NOT NULL또는 PRIMARY KEY)을 하지 않았을 경우 NULL값이 기본으로 설정되어짐 PRIMARY KEY (기본키,..

Web develop/SQL 2019.06.15

[SQL/ORACLE] TOP-N 사용 예제

ROWID: 주소로서 row가 실제로 저장되어있는 공간을 표시 ROWNUM: 번호로서 row의 주소 순서대로 출력되어짐. 출력되는 행에 대해 첫 행부터 순차적인 번호를 부여 (1,2,3,...) SELECT empno, ename, sal, rownum FROM emp; SELECT empno, ename, rownum FROM emp WHERE rownum 해결: rownum을 먼저 1부터 출력하게 하고 그 결과에서 중간번호(1아닌 값)을 조회 SELECT empno, ename, sal FROM (SELECT empno, ename, sal, rownum rb FROM (SELECT empno, ename, sal FROM emp ORDER BY sal desc) --1차: 정렬 ) --2차: 출력된..

Web develop/SQL 2019.06.15