본문 바로가기

DataBase

Chapter 6 PL SQL(Procedural Language/SQL) - 6 PLT 6.6 CURSOR ORACLE SERVER은 SQL문장을 실행하기 위하여 Private SQL Area이라 불리는 작업 영역을 사용합니다. Private SQL Area에 이름을 붙이고 저장된 정보를 액세스하기 위해 PL/SQL CURSOR를 사용한다. 블록의 실행 부분이 SQL문장을 실행할 때 PL/SQL은 SQL식별자를 가지는 암시적 CURSOR를 생성하고 자동적으로 이 CURSOR를 관리합니다. 명시적 CURSOR는 명시적으로 선언되고 프로그래머에 의해 명명됩니다. 암시적 CURSOR ORACLE SERVER은 명시적으로 선언된 CURSOR와 관련 없는 각 SQL문장을 수행하기 위해 CURSOR를 암시적으로 생성하여 사용한다. PL/SQL은 SQL CURSOR로써 가장 최근의 암시적 CUR.. 더보기
Chapter 6 PL SQL(Procedural Language/SQL) - 5 PLT 6.5 PL/SQL의 제어 구조 여러 가지 제어 구조를 이용하여 PL/SQL 블럭에 있는 문장들의 논리적 흐름을 변경할 수 있다. 조건에 의해 분기하는 IF문을 이용한 조건 구조와 LOOPING구조(조건 없이 반복하는 BASIC루프, 계수를 이용하여 반복을 하는 FOR루프, 문장이 TRUE인 동안에 반복을 하는 WHILE루프, 루프를 종료하는 EXIT문)가 있다. IF문 PL/SQL의 IF문장은 다른 언어의 IF문장과 거의 유사하다. 즉 일치하는 조건(TRUE,FALSE, NULL)에 따라 선택적으로 작업을 수행할 수 있게 해준다. TRUE면 THEN과 ELSE사이의 문장을 수행하고 FALSE나 NULL이면 ELSE와 END IF사이의 문장을 수행한다. IF condition THEN statem.. 더보기
Chapter 6 PL SQL(Procedural Language/SQL) - 4 PLT 6.4 PL/SQL에서 SQL문장 데이터베이스에서 정보를 추출할 필요가 있을 때 또는 데이터베이스로 변경된 내용을 적용할 필요가 있을 때 SQL을 사용합니다. PL/SQL은 SQL에 있는 DML과 TRANSACTION 제어 명령을 모두 지원합니다. 테이블의 행에서 질의된 값을 변수에 할당 시키기 위해 SELECT문장을 사용합니다. DML문장은 다중 행 처리를 할 수 있지만 SELECT문장은 하나의 행만을 처리할 수 있습니다. PL/SQL에서 SQL문장 사용 n SELECT 명령어를 사용하여 데이터베이스에서 한 행의 데이터를 추출합니다. n DML명령어를 사용하여 데이터베이스의 행에 대해 갱신할 수 있습니다. n COMMIT, ROLLBACK, SAVEPOINT명령어로 TRANSACTION을 제어 .. 더보기
Chapter 6 PL SQL(Procedural Language/SQL) - 3 PLT 6.3 PL/SQL 블록 PL/SQL은 프로그램을 논리적인 블록으로 나누게 하는 구조화된 블록 언어이다. PL/SQL 블록에서 사용하는 변수는 블록에 대해 논리적으로 선언할 수 있고 사용할 수 있다. 변수들과 그 외의 식별자를 참조하고 선언함으로써 PL/SQL 블록 내에서 값을 저장하고 변경할 수 있는 논리적인 단위이다. PL/SQL 블록 구문과 지침 PL/SQL은 SQL의 확장이기 때문에 SQL에 적용하는 일반적인 구문은 PL/SQL 언어에 대해서도 적용 가능하다. 문장은 몇 라인 이상 계속될 수 있습니다. 문법적인 요소는 공백으로 분리될 수 있습니다. 식별자 식별자는 상수, 변수, 예외 ,커서 ,커서 변수, SUBPROGRAM, 패키지를 포함하는PL/SQL프로그램 항목과 요소를 명명하기 위해 .. 더보기
Chapter 6 PL SQL(Procedural Language/SQL) - 2 PLT 6.2 PL/SQL에서의 변수 사용 SQL과 절차적인 문장 안에서 PL/SQL로써 변수를 선언할 수 있고 그것을 사용할 수 있다. 변수는 자료를 일시적으로 저장하고 변경하고 검증하기 위해 하나 또는 그 이상의 변수를 선언하여 사용한다. 또한 변수는 데이터베이스를 액세스하지 않고 계산이나 다른 데이터 조작에 사용할 수 있다. 이러한 변수는 일단 선언되면 다른 선언적 문장을 포함한 다른 문장에서 간단하게 그것을 반복적으로 참조하여 사용할 수 있다. %TYPE와 %ROWTYPE을 사용하여 변수를 선언하면 테이블의 구조가 변경(데이터형과 길이)되어도 Application에서는 실행 시간에 테이블을 참조하여 변수가 정의되므로 데이터의 독립성, 유지비용 절감을 제공하고, 새로운 업무 요구에 충족시키기 위해 .. 더보기
Chapter 6 PL SQL(Procedural Language/SQL) - 1 Chapter 6 PL SQL(Procedural Language/SQL) PLT 6.1 PL/SQL 개요 PL/SQL(Procedural Language/SQL)은 최근의 프로그래밍 언어의 특성을 수용한, SQL의 확장이라 할 수 있다. SQL의 데이터 조작(DML)과 질의문(QUERY)을 블록 구조에 절차적 단위(IF, LOOP, FOR등)로 된 코드를 포함할 수 있으며 절차적 프로그래밍을 가능하게 한 강력한 TRANSACTION 처리 언어이다. PL/SQL은 별개의 Oracle 제품이 아니라 Oracle 서버와 다른 Oracle TOOL에 이용되고 있는 프로그래밍 언어이다. PL/SQL 의 블록은 Oracle 서버나 툴에 내장되는 PL/SQL 엔진에 전달되어 처리된다. 사용하는 엔진은 PL/SQL .. 더보기
PLT 5.8 SUBQUERY PLT 5.8 SUBQUERY 이번 장에서는 알려지지 않은 기준에 의한 데이터 검색을 위한 NESTED SUBQUERY와 데이터 조작 문장에 SUBQUERY를 사용하는 방법을 배우고 SUBQUERY에 의해 검색된 데이터 정렬에 대해 다루기로 한다. SUBQUERY의 개념 다른 SELECT 문장의 절에 내장된 SELECT 문장 입니다. SUBQUERY는 여러 절에서 사용 가능하며 SELECT 문장 안에 기술된 SELECT 문장이다. NESTED SUBQUERY는 MAIN QUERY이전에 한번만 수행되며 SUBQUERY의 결과를 MAIN QUERY에 의해 조건으로 사용된다. SUBQUERY를 사용하여 간단한 문장을 강력한 문장으로 만들 수 있고 테이블 자체의 데이터에 의존하는 조건으로 테이블의 행을 검색할 .. 더보기
PLT 5.7 Join PLT 5.7 Join 하나 이상의 테이블로부터 자료를 검색하기 위하여 조인을 사용합니다. 일반적으로Primary Key(이후 PK로 사용)와 Foreign Key(이후 FK로 사용)을 사용하여 Join하는 경우가 대부분이지만 때로는 논리적인 값들의 연관으로 Join하는 경우도 있습니다. SELECT table1.column1 [,table2.column2, . . . . .] FROM table1, table2 WHERE table1.column1 = table2.column2; l WHERE 절에 조인 조건을 기술한다. l 테이블을 조인하는 SELECT 문장을 작성할 경우 명확성을 위하여 또는 데이터베이스의 Performance 향상을 위하여 열 이름 앞에 테이블 명을 붙인다. l 똑 같은 열 이름이.. 더보기
PLT 5.6 그룹 함수 PLT 5.6 그룹 함수 단일 행 함수와는 달리 그룹 함수는 여러 행 또는 테이블 전체에 대해 함수가 적용되어 하나의 결과를 가져오는 함수를 말한다. 그룹 당 하나의 결과가 주어지도록 행의 집합에 대해 연산할 경우 GROUP BY절을 이용하여 그룹화 할 수 있고 HAVING를 이용하여 그룹에 대한 조건을 제한하는 방법을 배우기로 한다. 그룹 함수의 종류 함 수 설 명 AVG(DISTINCT|ALL|n) NULL값을 제외한 n개 행의 평균값 COUNT(DISTINCT|ALL|expr|*) NULL이 아닌 행의 개수 MAX(DISTINCT|ALL|expr) 최대값 MIN(DISTINCT|ALL|expr) 최소값 STDDEV(DISTINCT|ALL|n) NULL값을 제외한 n의 표준편차 SUM(DISTINCT.. 더보기
변환 함수 4. 변환 함수 TO_CHAR TO_CHAR함수는 DATE형, NUMBER형을 VARCHAR2형으로 바꺼 줍니다. SQL>SELECT TO_CHAR(SYSDATE, 'MONTH') CHARTEST FROM dual ; CHARTEST -------------- JUNE SQL>SELECT TO_CHAR(SYSDATE) CHARTEST FROM dual ; CHARTEST -------------- 00/06/10 TO_DATE TO_DATE함수는 CHAR, VARCHAR2형을 DATE 타입으로 변환합니다. SQL>SELECT TO_DATE('2000/06/16','RRRR/MM/DD') FROM dual ; TO_DATE ------------ 2000/06/16 TO_NUMBER TO_NUMBER함수는.. 더보기