프로그래밍/자바(java) 융합개발자 2차

[취성패] 자바 배우기 - 7일차 일지(PL/SQL)

aSpring 2020. 12. 23. 08:55
728x90
728x90

14장. Oracle PL/SQL 입문하기

- SQL : select, insert, update, delete, create, alter, drop

- PL : Programing과 가깝다

- Programing과 SQL이 결합된 것

- SQL로 다 해버리면 최고지만 아무리 해도 쿼리가 너무 어려워서 안나오면 -> Programing을 동원해서 부족한 점을 보완하겠다.

 

SQL : 코드는 SQL가 더 좋다, 간단하고 가독성, 독립성(한 줄이다. -> ~~~; 이렇게 끝난다)이 더 좋다.

PL : 종속적이다

 

1. PL/SQL이란?

- 오라클에서 제공하는 프로그래밍 언어

- Procedural Language/SQL의 약자 -> 절자적 -> 위에서 아래로 읽어 나간다

- 일반 프로그래밍 언어적인 요소를 거의 다 가지고 있어서 실무에서 요구되는 절차적인 데이터 처리를 다 할 수 있음. 특히 SQL과 연동되어서 막강한 기능을 구현할 수 있음.

- 데이터 트랜잭션(작업 단위 묶음) 처리능력이나 정보보호, 데이터에 대한 보안, 예외처리 기능, 객체지향 등 데이터베이스와 관련된 중요한 모든 기능을 지원하기 때문에 데이터베이스 업무를 처리하기에 최적화인 언어임.

 -> SQL문장(1개를 만들어 내는게 목표였다.) -> 트랜잭션(여러개의 일련의 작업 단위를 묶어놓은 하나의 작업 단위)

 

ex) 쇼핑몰에서 물건을 사는 것도 쿼리가 들어간다.

물건을 조회하다. -> 구매하기 트랜젝션(ex. 장바구니에 있고 -> 그 안에 들어가서 배송지를 설정하고 -> 결제하고)

-> if) 취소 -> 결제X, 배송지 입력X, 장바구니에 담는 것(데이터 입력)도 취소하는 등 이것을 다 되돌릴 수 있는 하나의 단위

 

ex) 계좌입금 과정을 하나의 묶음으로 묶어놓음 -> 계좌번호 확인, 로그인, 잔액확인, DB(계좌)에 금액 입력 -> 입금

 

원래 python, java, jsp, .. 등의 언어를 사용해야하는데 -> 그냥 DB에서 다 처리하겠다(PL/SQL)

 

2. PL/SQL의 런타임 구조 -1

PL/SQL의 런타임 구조 - 1

블록 -> 영역, 덩어리

1) SQL 문장 -> ORACLE 서버에서 처리

2) PL 문장 -> PL/SQL 엔진에서 처리

-> 두 개가 밀접하게 관계가 있다. 연결이 되어있다. -> 두개를 나눠서 처리한다.

 

{

  {

     {

 

     }

 

  }

}

 

소스파일은 사람이 읽을 수 있으나

프로시저문 실행, sql문 실행자 : 컴파일(번역 -> 동작하게 해줌)

 

 

오늘은 PL/SQL 블록을 학습한다. -> 프로그램 랭귀지와 가깝고 여러 문장으로 되어있다.

 

-- 연결 끊겨서 잠시 듣지 못함 --

 

3. PL/SQL 기본 구조

- 선언부(DECLARE), 실행부(BEGIN), 예외처리부 (EXCEPTION)로 구성.

- Anonymous PL/SQL Block(익명블록) Stored PL/SQL Block(저장된 블록) 이 있.

- 익명 블록은 주로 일회성으로 사용할 경우 많이 사용이 되고, 저장된 블록은 서버에 파싱해서 저장해 놓고 주기적으로 반복해서 사용할 경우 사용됨.

- Stored PL/SQL Block 은 다른 용어로 서브프로그램 또는 프로그램 단위라고도 하며, 스키마를 구성하는 오브젝트로서 파싱 된 후 오라클 서버 내부에 저장되거나 오라클 툴 안에 라이브러리 형태로 저장되어 있.

 

 

 

 

SET SERVEROUTPUT ON;

DECLARE
    -- 변수 1) 만들기(선언) : 변수는 1개의 값을 담는 공간, 변한다
    VNO NUMBER(4); -- VNO 변수      -> COLUMN아님 17을 담고 34를 담고 54를 담는다 -> 54만 저장됨
    VNAME VARCHAR2(20); -- VNAME 변수
    
BEGIN
	select BOOKID, BOOKNAME INTO vno, vname --  sql 문장을 into로 연결
    FROM BOOK
    WHERE BOOKID = 1;
    
    DBMS_OUTPUT.PUT_LINE(VNO || '----' || VNAME);  -> VNO + VAME 합한 것
END;

결과

1----축구의 역사

 

오라클 11g 자체에서 교육용으로 만들어진 테이블이 있다.

id: SCOTT

pw: tiger

-> 접속하면 테이블들이 다 만들어져 있다.

 

이걸 사용해서 학습

 

우리는 이제껏 마당으로 접속을 해왔음

 

SCOTT/tiger 계정 접속 -> 계정 자체가 없다고 함

 

www.gurubee.net/lecture/2150

 

강좌 테스트용 scott user 생성 스크립트

오라클클럽의 SQL 강좌 테스트는 SCOTT 계정의 잠금을 해제하신 후 접속하여 실행하면 됩니다. SCOTT USER 잠금 해제 오라클을 설치하면 기본..

www.gurubee.net

요 포스팅을 참고해서 새로 SCOTT계정을 만들어주었습니다.

 

1. system 계정으로 접속한다.

2. system 계정 워크시트 창에서 작업

  - scott 계정을 만든다. create user

  - scott 계정에 권한을 부여한다. grant

  - 현재 system 워크시트 창이지만, conn으로 scott계정으로 갈아탄다.

3. 그럼 현재 scott계정이 된다. 접속 상태가.

4. 테이블을 만들고, 데이터를 넣는다.

5. 초록색 플러스 버튼을 눌러서, scott 접속 정보를 만든다.

 

--- 아파서 조퇴함 ---

 

 

 

 

 

 

728x90
728x90