본문 바로가기

[PL/SQL] 모듈 (Stored Block) 3번의 경우 : 을 붙인 것은 프로시저에서 정의한 변수 (bind 변수 = host 변수 = global 변수) 라고 함 7_BIND_SQL 은 중요하다. 호스트 언어의 도움 없이 PL SQL 만으로 하나의 개발이 가능하다. VARIABLE, PRINT 를 과제할 때 활용해야 한다 - 과제 >>>>>>> 에러 로그를 특정 테이블에 모두 생성하게끔!!!!!!!!! 8차시 여기서 :OLD, :NEW는 호스트 변수가 아님
[PL/SQL] SELECT & CURSOR NO_DATA_FOUND, TOO_MANY_ROWS 만 기억해둬! INTO를 사용하는 것 기억 OPEN CUR_EMP; → IS 이하의 SQL을 EXECUTE 한다는 의미 → DBMS 서버 내에 ResultSet이 만들어진다. (실행할 경우) CURSOR에 있는 값을 선언한 변수에 넣는 것이 fetch CUR_EMP 은 ResultSet 을 가리킴 result set은 테이블이 아니고 서버 내부에 선언된 메모리 덩어리임 close CUR_EMP 하면 result set이 사라짐 CUR_EMP%ROWCOUNT → % 속성 연산자 / 커서를 통해 FETCH한 RECORD 갯수를 화면에 출력하기!! (몇 건의 데이터가 출력이 되었는지 확인하기 위함) INSERT가 암시적인 커서 명시적 커서만 알고 있으면 돼!..
[PL/SQL] 알고 있어야 하는 필수 상식 Transaction Type 1) OLTP (Online Transaction Processing) 은행 9시 ~ 4시반 일어나는 작은 단위의 Transaction 2) DSS (Decision Support System) ( = Batch processing ) 집계, 통계 - 일괄 처리 ( 은행 4시반 이후 ) 3) DTP (Distributed Transaction Processing) (= 분산처리 ) 1) Statement 2) Prepared Statement 3) Callable Statement
[PL/SQL] Data Type 레코드만 보면 돼! 레코드 예시 레코드는 커서를 이해하기 위해 배울 뿐이지 레코드 타입을 직접 정의하여 쓰는 경우는 없다. 알아두세요. - 로그 남길 때 SQLCODE , SQLERRM 존재하지 않는 데이터를 검색할 경우 -> NO_DATA_FOUND 라는 EXCEPTION이 발생 EMPNO의 변수의 타입을 참조하여 변수를 선언하여라 %는 참조연산자 SELECT 시에는 INTO 가 와야 함. REC_EMP 가 없으면 굉장히 불편하죠 ? 변수들을 개별 정의해야 한다. 레코드명.필드명임 %ROWTYPE 이렇게 선언하면 REC_EMP는 레코드로 변환됨
[PL/SQL] 개요 및 주요 특징 DECLARE와 BEGIN 사이를 선언부라고 한다. := 을 통해 초기화를 하지 않으면 DEPTNO 에는 NULL이 들어간다 CURSOR 커서이름 IS 이하의 SELECT가 CURSOR의 정의한다. (CURSOR는 PL/SQL을 쓰는 이유) SELECT를 하게 되면 DBMS 내부에 RS(Result Set)이 만들어짐. BEGIN, EXCEPTION 실행부 EXCEPTION, END 예외처리부 예외처리 ? CATCH와 LOG (2) 통합성 - 중요 PL/SQL에서 BLOCK 이란? [BLOCK] DECLARE BEGIN EXCEPTION END Anonymous 블럭은 이름이 없는 블럭 이름을 붙이는 이유? 불러서 계속 쓸려고 (3) 성능 PL/SQL은 전체 BLOCK을 한 번에 DBMS 서버에 보낸다 ..
오라클 실습 - VIEW VIEW의 정의는 시스템 카탈로그에 저장된다. 뷰는 데이터를 가지고 있지 않고, 정의되는 SQL 구문만 데이터 딕셔너리 (= 시스템 카탈로그 ) 에 저장돼.. 오브젝트는 맞지만 세그먼트는 아니다 뷰를 통해 원본 테이블의 이외의 칼럼을 조회하는 것을 불가능하다. → 보안성을 높일 수 있음 SELECT * FROM USER_VIEWS; 뷰는 실제 테이블이 아니고 logical table Materialized View 는 M뷰라고도 함 - 일반 뷰와 다르게 뷰가 데이터를 가지고 있음 M 뷰는 변경 주기를 결정 (실시간 변경되거나 주기적으로 변경) ( = CTAS와 유사 - 하지만 CTAS는 동기화를 안해서 원본 데이터가 변해도 변하지 않음) 왜 씀 ? 데이터의 양이 많아질 때 데이터를 동기화하여 빠르게 집계..
오라클 정리 (190612) Data Dictionary ( = System Catalog ) - DBMS가 운영하기 위해 필요한 정보를 저장한 테이블들과 뷰들의 집합 - 읽기 전용 (인간에게는) - 수정 (DBMS의 역할) - DBA USER, OBJECT ... USER_TABLES - 내가 소유한(=만든) 모든 것 (Owner) ALL_TABLES - 내가 접근 가능한 모든 것 (Accessible) DBA_TABLES - DBMS 내에 존재하는 모든 것 DBA_OBJECTS -> DBA를 ALL로 바꾼다 데이터베이스 소유자 계정과 개발자 계정을 구분 - 안전성을 위해서 테이블, 인덱스는 object인 동시에 segment 시퀀스, 시너님(synonym), 뷰(view) 은 object o, segment x 그래서 시퀀스, ..
오라클 - 기본키와 외래키 (190611) desc customer4 로는 primary key 구분이 안돼 하지만 select * from user_constraints 로 조회를 할 경우 나옴 CREATE TABLE CUSTOMER5 AS SELECT * FROM CUSTOMER4 로 했을 시 PRIMARY KEY가 COPY가 안돼.. DATA DICTIONARY - 시험 나옴 DBA_ ALL_ USER_ SELECT * FROM USER_TABLES; -> 내 소유의 모든 테이블을 조회하기 Primary key, Foreign key 선언적 무결성 제약사항이라고 한다 - check 제약사항 - 1. 선언적 무결성 제약사항 (p.k, f.k 로 가능) -> db서버 2. 트리거 -> db서버 3. application logic - 데이터 무..