
흔히 조건 제어문에는 IF ELSE, SWITCH CASE문을 많이 사용한다. PL/SQL에서는 위의 문법을 제공하지만 순수 SQL에서는 이와 같은 문법을 제공하지 않는다. ORACLE에서는 DECODE함수와 CASE표현식을 통해 위와 같은 기능을 제공하고 있다.오라클

면접에 단골로 나오는 질문이다.일반적으로 다음과 같이 설명할 수 있다.이런 결측치를 바탕으로 사용할 수 있는 함수들에 대해 알아보자입력된 값이 null이면 실제 값으로 리턴하는 함수로 주로 결측치 처리에 사용할 수 있다.단, 입력 값과 실제 값의 자료형은 일치해야 한다

여러행 당 하나의 결과를 반환하는 함수를 그룹함수 또는 집계함수라고 한다.집계 함수에는 일반적으로 다음과 같은 종류가 있다.sumavgmedian(중앙값)variance(분산)stddev(표준편차)maxmincount그룹 함수 중 sum, avg, median, va

GROUP BY절은 성격이 비슷한 칼럼데이터들을 묶어주는 절이다. 주로 테이블을 작은 행의 그룹으로 나눠준다.GROUP BY에서 칼럼을 나누는 알고리즘은 다음 두 가지 방법이 있다.SORT 알고리즘HASH 알고리즘성능적인 측면에서 HASH 알고리즘이 더욱 뛰어나기 때문
주의 본 내용을 수업 중 내용을 반영한 것으로 모든 정보를 담고있지 않습니다.오라클은 자바 설치하면서 한번 쯤 본 기억이 있을 것이다. 오라클은 엄밀히 말해 회사 이름이고 우리는 앞으로 이 회사에서 제공하는 오라클 데이터베이스를 사용할 예정이다.오라클의 데이터베이스는
일반적으로 Oracle에서 데이터를 조회하기 위해서는 반드시 테이블이 존재해야 한다.하지만, 테이블에 존재하지 않는 데이터나, 내장함수를 조회할 때는 테이블이 불필요한데 이때 사용하느 테이블이 dual테이블 이다.dual테이블은 오라클에서 기본적으로 제공하는 더미 테이
여러 데이터들을 하나의 칼럼 안에서 표현하고 싶을 때 사용할 수 있는 연산자로 연결 연산자인||가 존재한다.일반적으로 이와 비슷한 concat()함수가 존재하지만, 2개 이상의 데이터를 연결할 때 concat은 중복해서 사용해야 하지만, 연결 연산자를 사용하면 그럴 필
ORACLE에서 OUTER JOIN만 ORACLE 전용이고 나머지는 공용이다.솔직히 잘 안쓰는 JOIN이다. 유지관리가 어렵기 때문에 못 쓰게하는 회사도 있다.EQUI JOIN의 일환으로 조인조건 술어를 명칭이 동일한 모든 칼럼을 기준으로 자동으로 생성한다.동일한 명칭
110번 사원의 급여보다 더 많은 급여를 받는 사원 정보 추출해당 정보를 추출하기 위해서는 다음과 같은 과정을 거쳐야 한다.110번 사원의 급여 추출추출한 값을 기준으로 비교이런 과정을 한번에 처리할 수 없기 때문에 우리는 서브쿼리를 이용하여 해결한다.실행 과정이 서브
자기 부서의 평균보다 큰 salary를 받는 사원의 정보를 조회하시오.일반적으로 위 문장을 쿼리로 작성하기 위해서는 다음과 같은 과정을 진행한다.자신이 해당하는 부서의 평균을 구한다.자신의 SALART가 해당 부서의 평균보다 크면 정보를 출력한다.이러한 방법을 CORE
데이터를 출력할 때 세로로 출력하는 것이 아니라, 가로로 출력을 원할 때도 있다.일반적으로 데이터는 세로로 출력되지만 집계함수와 조건함수를 사용하면 가로로도 출력할 수 있다. 단, 현재 단계에서는 집계하고자 하는 정보(department_id)에 대한 결과를 알고 있어
FROM절 안에서 사용된 SUBQUERY를 우리는 INNER VIEW라고 한다.INNER VIEW에서 도출된 결과 값을 바탕으로 우리는 쿼리를 좀 더 다양하게 작성할 수 있다.자신이 속한 부서의 평균 연봉보다 더 많이 받는 사원의 데이터를 출력하시오.우리는 앞전의 CO

데이터베이스를 저장하는 것에는 크게 물리적으로 저장하는 방법과 논리적으로 저장하는 방법이있다.oracle의 데이터베이스에 저장되는 형태로 구조는 다음과 같다.tablespace > segment > extent > block위 코드를 통해 그 저장형태를 확인할 수 있다

DCL은 각 시스템 객체에 대한 권한을 부여, 제거하는 명령어이다.데이터베이스에 직접적인 영향을 줄 수 있는 권한으로 오로지 DBA로 부터만 권한을 위임받을 수 있다.각 객체(TABLE)에 대해 접근할 수 있는 권한으로 DBA 또는 객체 소유자에게 위임받을 수 있다.

특정 사용자에게 권한을 위임하는 명령어로 사용된다.예를들어 다음과 같이 사용자가 생성되었다고 가정하자.위 코드에서 이미 insa라는 계정을 생성할 때 기본 tablespace를 user, quota의 크기를 10mb, 계정상태가 unlock과 같은 여러가지 권한을 부여

이전 포스트에서 GRANT를 통해 권한을 부여받았다면 반대로, REVOKE를 통해 권한을 회수할 수 있다.우리는 위 권한을 통해 insa계정의 CREATE SESSION권한을 회수할 수 있다.현재 접속되어 있는 계정에 대해서 접속은 유지되지만, 해당 계정의 권한은 사라

저번 시간에 생성했던 INSA 계정의 경우 HR계정의 테이블에 SELECT를 통해 조회를 하려면 다음과 같은 오류가 발생되는 것을 확인할 수 있다.ERROR at line 1: ORA-00942: table or view does not exist오류에는 해당 테이블이

테이블을 생성하기 위해 몇가지 고려해야할 사항이 있다.테이블 이름, 칼럼이름, 유저이름, 객체이름, 제약조건 이름은 문자로 시작한다.한글을 사용할 수 있지만, 데이터가 언어에 종속되기 때문에 타 지역에서 한글이 깨질 수 있다. 보편적으로 영어 사용문자의 길이는 1~30
Transaction Control Language로 Transaction을 관리하는 SQL문DML 작업을 영구히 저장 (저장하시겠습니까? 예Y)DML 작업을 영구히 취소 (저장하시겠습니까? 아니오N)ROLLBACK 기능을 도와주는 표시자. ROLLBACK의 기준점DC
MERGE의 문법은 대략적으로 다음과 같다.위 작업을 여러개의 insert, update, delete 문을 통해 실행할 수 있지만, MERGE문을 사용함으로서 실행 계획도 줄이고, io를 줄이면서 더 깔끔하고 성능 좋은 SQL을 작성할 수 있다.이미 target_ta
9i 버전부터 제공되는 기능으로 source테이블에서 데이터를 추출해 여러 target table로 데이터를 로드하는 방식의 기능을 제공한다. 이것 또한 insert의 서브쿼리 작업으로 ETL작업 중 하나이다.기존에 데이터를 다음과 같이 입력하였다면...기초적인 분법은
ALTER TABLE ... ADD ... ...ALTER TABLE ... MODIFY ... ...단, 서로 다른 타입에 대해 수정은 가능하나, 기존 데이터가 저장되어 있는 경우 오류가 발생할 수 있음을 주의하자.ALTER TABLE ... DROP CLOUMN .

데이터의 무결성, 품질을 유지하기 위해 만든 데이터 입출력에 제한을 거는 조건이다.제약 조건은 사용자 관점과 DBA 관점에서 조회할 수 있다.사용자 관점에서 제약 조건 조회사용자 관점에서 테이블의 칼럼에 대한 제약조건DBA 관점에서 조회하는 방법은 owner를 지정하면

UNIQUE + NOT NULL 제약조건. 테이블당 하나만 생성할 수 있다.자동으로 UNIQUE INDEX를 생성한다.다음 두 가지 방법으로 추가할 수 있다.제약조건 명으로 부여하기.이때 제약조건 명이 중복되면 오류가 발생한다.제약조건 생략하고 키워드로 부여하기.이때

중복, NULL을 허용하며 동일한 테이블이나 다른 테이블의 PK, UNIQUE KEY 제약조건을 참조한다.다만 FK를 참조하는 데이터가 있을 경우 종속성이 발생하기 때문에 해당 FK, 테이블을 일반적으로 삭제할 수 없다.ALTER TABLE... ADD CONSTRAI

NULL 값을 허용하며 자동으로 UNIQUE INDEX를 생성한다.제약 조건 타입으로 제거할 수 있지만 여러 개의 칼럼이 UNIQUE 제약조건이 있을 수 있으므로 제거하고자 하는 칼럼을 명시해야 한다.제약조건 타입으로 삭제할 수 있는 제약조거는 pk와 unique 제약

null과 중복을 허용한다.조건에 해당하지 않는 값의 insert, update에 대해서는 오류를 반환한다.

alter table add constraint가 아닌 alter table modify constraint를 이용한다.단, 이미 입력된 null이 있을 경우 오류가 발생한다.제약조건명 또는 MODIFY col NULL을 통해 삭제할 수 있다.
위의 경우는 target 테이블의 pk 또는 uk를 가진 칼럼을 다른 테이블에서 참조하고 있을 때 사용할 수 있다.위 조건을 실행시키면 해당 테이블을 참조하는 데이터들 또한 전부 삭제가 진행된다.이와 같이 FK를 지정하고 마지막에 ON DELETE CASCADE옵션을

SQL문을 실행할 때 마다 새로운 실행계획이 생성되고, 생성된 실행 계획에 대한 SQL문장은 shared_pool이라는 공간에 저장된다.이와 같이 사원 번호에 관한 SQL문장에 대해 v$sql뷰를 통해 조호회하여 확인할 수 있다.각각의 문장에 따라 서로다른 실행계획이

PL/SQL의 프로그램은 블록구조 형식으로 이루어져 있다.객체 프로그램이 아니다. (DB에 저장되어 있지 않다.)그 구조는 다음과 같다.일반적으로 PL/SQL은 OUTPUT에 대한 결과를 보여주지 않는다.따라서 SQL PLUS에서는 아래와 같은 코드를 실행시켜 거나sq
이 데이터 타입은 단일 값을 가지는 변수를 의미하며 하나의 변수 안에서 여러개의 값이 존재할 수 없음을 의미한다.그 종류로는 변수, 상수, 바인드 변수가 있다.변수의 일반적인 정의는 다음과 같다.이 정의는 PL/SQL에서도 동일하게 작용된다.변수를 선언할 때는 문자로
PL/SQL에서 사용할 수 있는 SQL 함수는 제한적이다.프로시저문에서 사용할 수 있는 함수단일행 함수 (날짜타입, 형변환)NVL, COALSECE프로시저문에서 사용할 수 없는 함수DECODE, GROUP함수NVL2PL/SQL에서 사용되는 SQL문장을 제외한 문장들EX
익명블럭구조를 중첩 포문처럼 사용할 수 있다.주로 외부에서 사용된 변수를 바탕으로 프로세스를 진행해야 하거나,예외처리 이후 필요한 프로세스를 진행할 때 사용될 수 있다.각 익명블록구조 별로 레이블처리를 하면 필요한 변수를 직접 지정하여 사용할 수 있다.<<>
end case; end;로 끝나느냐독립적으로 사용할 수 있느냐 없느냐return 값이 있느냐 없느냐
PL/SQL에서 순수하게 사용할 수 있는 SQL문의 종류는 다음과 같다.SELECT (ROW 검색)DML (COLUMN 조작 - INSERT, UPDATE, DELETE)TCL (COMMIT, ROLLBACK, SAVEPOINT)USER PROCESSORSQL 개발 툴
SQL은 SQL문의 결과를 PARSE/BIND/EXECUTE/FETCH 모든 절차를 거쳐 사용자에게 제공했다.반면 PL/SQL은 일반적으로 해당 결과를 사용자에게 제공해 주지 않는다. 즉 PARSE/BIND/EXECUTE까지만 진행하여 ACTIVE SETㅇ늘 생성하지만
명시적 커서는 프로그래머가 관리한다.커서 선언 : 이름있는 SQL영역(메모리) 선언커서 OPEN : 메모리 영역을 할당하고 해당 공간에서 (PARSE/BIND/EXECUTE)를 실행하고 ACTIVE SET을 생성한다.FETCH : ACTIVE SET을 변수에 로드한다.