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
블록 -> 영역, 덩어리
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 계정 접속 -> 계정 자체가 없다고 함
요 포스팅을 참고해서 새로 SCOTT계정을 만들어주었습니다.
1. system 계정으로 접속한다.
2. system 계정 워크시트 창에서 작업
- scott 계정을 만든다. create user
- scott 계정에 권한을 부여한다. grant
- 현재 system 워크시트 창이지만, conn으로 scott계정으로 갈아탄다.
3. 그럼 현재 scott계정이 된다. 접속 상태가.
4. 테이블을 만들고, 데이터를 넣는다.
5. 초록색 플러스 버튼을 눌러서, scott 접속 정보를 만든다.
--- 아파서 조퇴함 ---
'프로그래밍 > 자바(java) 융합개발자 2차' 카테고리의 다른 글
[취성패] 자바 배우기 - 9일차 일지(PL/SQL 제어문, 커서) (0) | 2020.12.24 |
---|---|
[취성패] 자바 배우기 - 8일차 일지(PL/SQL) (0) | 2020.12.23 |
[취성패] 자바 배우기 - 6일차 일지(부속질의 - 스칼라, 인라인 뷰, 중첩질의2) (0) | 2020.12.21 |
[취성패] 자바 배우기 - 5일차 일지 2(부속질의 - 스칼라, 인라인 뷰, 중첩질의1) (0) | 2020.12.18 |
[취성패] 자바 배우기 - 5일차 일지(SQL 고급 - 내장함수) (0) | 2020.12.18 |