SQL/SQL 개념정리 14

PROCEDURAL LANGUAGE

IF 문 ELSIF 는 한 단어임 END IF 는 두 단어임 조건이 TRUE 이면 관련된 문장 실행 조건이 FALSE 이거나 NULL 이면 관련된 문장 통과 ELSIF 절은 여러 개 가능 ELSE 절은 한 개만 가능 무한 Loop문 LOOP 와 END LOOP 사이의 문장을 반복 처리함 문장이 END LOOP 에 도달하면 다시 LOOP 문장으로 돌아감 LOOP 의 제한이 없으므로 EXIT 문을 사용하여 LOOP 를 벗어남 For Loop 문 INDEX 값이 최소값에서 시작하여 1씩 증가하여 최대값이 될 때까지 LOOP 를 돔 INDEX 는 내부적으로 선언되는 INTEGER TYPE 의 변수며 1씩 증가됨 정해진 횟수만큼 반복 처리함

사용가능한 SQL 문장

Select … into … 문 PL/SQL BLOCK 에서 사용되는 SELECT 문장에는 INTO 절이 추가됨 INTO 절은 SELECT 한 COLUMN 값을 변수에 저장함 SELECT 결과는 1 개가 나와야지 1 개도 없던가 여러 개가 나오면 ERROR 발생 INTO 절의 변수는 RECORE TYPE 의 변수를 사용할 수 있음 Select exceptions NO_DATE_FOUND : SELECT 된 결과가 없을 때 TOO_MANY_ROWS : SELECT 된 결과가 2개 이상일 때 SELECT 문장은 1개의 ROW 만 검색되어야지 그렇지 않으면 ERROR 발생 ERROR 가 발생하면 PL?SQL BLOCK 을 종료함 DML 문 INSERT USER, SYSDATE FUNCTION 사용 SEQUEN..

변수선언

Scalar 변수 선언 💡 PL/SQL BLOCK 에서 필요한 변수 선언 %type attribute COLUMN 값을 저장시킬 변수는 COLUMN 과 같은 TYPE 과 크기를 가져야 함 COLUMN 의 TYPE 을 모를 때, TABLE 의 구조가 바뀌어서 COLUMN 의 정의가 바뀌었을 때, %TYPE 사용하면 편리함 변수의 TYPE 을 TABLE 의 COLUMN 과 같은 TYPE 으로 선언함 Table type 변수 선언 TABLE TYPE 은 DATABASE 의 TABLE 과 같지 않음 TABLE TYPE 은 1 차원 배열과 같음 배열의 크기를 지정하지 않음 Record type 변수 선언 RECORD TYPE 은 DATABASE TABLE 의 ROW 와 같지 않음 RECORD TYPE 은 3GL ..

권한

System 권한 부여 SYSTEM 권한은 80 가지가 있음 이 중에서 사용자들의 LEVEL 에 맞게 적절한 권한을 부여함 SYSTEM 권한은 DBA 가 부여함 사용자에게 SYSTEM 권한을 부여함 Role 생성 ROLE 은 사용자나 다른 ROLE 에게 부여할 수 있는 권한의 집합 DBA 가 ROLE 을 만들고 ROLE 에게 SYSTEM 권한 부여 사용자가 OBJECT 권한을 ROLE 에게 부여 이렇게 만들어진 ROLE 을 DBA 가 사용자에게 부여 CONNECT, RESOURCE. DBA ROLE 이 제공됨 with Admin option 💡 SYSTEM 권한은 DBA 만 부여할 수 있으나 WITH ADMIN OPTION 을 붙여서 SYSTEM 권한을 부여받은 사용자는 자신이 받은 SYSTEM 권한을 ..

Index

Index 생성 💡 TABLE 생성 시 PRIMARY KEY 나 UNIQUE CONSTRAINT 를 지정하면 UNIQUE INDEX 가 자동적으로 만들어짐 COLUMN 이 WHERE 절이나 JOIN 조건식에 빈번하게 사용될 때 COLUMN 값이 넓게 분포되어 있을 때 COLUMN 값에 NULL 값이 많이 포함되어 있을 때 TABLE 이 크고 QUERY 하는 데이터 양이 10% 이하일 때 Index 삭제 💡 INDEX 는 수정할 수 없음 수정하고 싶은 경우 삭제하고 다시 생성

VIEW

Simple view SUBQUERY 문장이 간단한 경우 VIEW 를 통해 SELECT, INSERT, UPDATE, DELETE 를 할 수 있음 SELECT : SUBQUERY 의 조건식을 만족하는 데이터만 검색 INSERT : NOT NULL COLUMN 을 다 포함하고 있는 경우 INSERT 를 할 수 있음 SUBQUERY 의 조건식을 만족하지 않는 데이터도 입력 가능 UPDATE : VIEW 를 통해 SELECT 할 수 있는 데이터만 수정할 수 있음 SUBQUERY 의 조건식을 만족하지 않는 데이터도 수정 가능 DELETE : VIEW 를 통해 SELECT 할 수 있는 데이터만 삭제 가능 With check option 💡 VIEW를 정의할 때 지정한 조건식을 만족하는 데이터만 INSERT, 또는..

Data DICTONARY

DICTIONARY DATABASE 가 만들어 졌을 때 DICTIONARY TABLE 도 만들어짐 DATABASE 가 사용중일 때 DICTIONARY TABLE 은 ORACLE7 SERVER 에 의해 UPDATE 됨 사용자들은 DICTIONARY TABLE 을 SELECT 할 수 있음 DICTIONARY TABLE 은 SYS USER 의 소유임 DICTIONARY TABLE 의 값은 대문자로 들어있음 DICTIONARY TABLE 의 종류 USER : USER가 소유하고 있는 OBJECT 의 정보를 보여줌 ALL : USER 가 ACCESS 할 수 있는 OBJECT 의 정보를 보여줌 DBA : DBA USER 가 ACCESS 할 수 있는 OBJECT 의 정보를 보여줌

Table 생성

이름 붙이는 법 TABLE 명이나 COLUMN 명은 문자로 시작하고 30자 이내로 지정 A ~ Z, a ~ z, 0 ~ 9, _, $, # 을 사용할 수 있음 한 USER 내에서는 다른 OBJECT 의 이름과 동일하게 지정 불가능 ORACLE 7 SERVER 예약어를 사용할 수 없음 대소문자 구별 X Oracle 7 datatype CHAR (size) : 고정된 size 의 문자 값, 최대 255 자까지 지정 가능 VHARCHAR2 (size) : size 내에서의 가변길이 문자 값, 최대 2000 자까지 지정할 수 있음 LONG : 가변길이 문자 값, 최대 2 기가 바이트까지 사용가능 TABLE 당 한 개의 COLUMN 에만 지정할 수 있음 NUMBER (p, s) : 정수, 소수 자리 수의 합이 P..