728x90

일단 해보는 코딩/Oracle SQL 22

[오라클/SQL] Cursor(커서) 종류와 구조 그리고 예제

Cursor(커서) Cursor는 쿼리 수행으로 반환되는 여러 값을 처리할 때 사용되는데 글로벌 영역 내의 저장공간을 사용해서 사용자가 쿼리를 수행하면 결과 값을 저장 공간에 가지고 있다가 원하는 시기에 순차적으로 가져와서 처리해서 결과를 반환하는 기법이다. 즉, 커서란 특정 SQL 문장을 처리한 결과를 담고 있는 메모리 영역을 가리키는 일종의 포인터로 볼 수 있다. 대부분의 SQL문 결과 ROW는 여러 개인데 커서를 사용하면 이 ROW에 순차적으로 접근이 가능하다. 오라클 서버는 SQL문을 실행 시마다 처리를 위한 메모리 공간을 사용한다. 즉, 사용자가 요청하는 데이터를 데이터베이스 버퍼 캐시에서 커서로 복사해 온 후 커서에서 원하는 데이터를 추출하여 후속 작업을 한다. Oracle에서 쿼리를 수행하면..

[오라클/SQL] Trigger(트리거)

Trigger(트리거) 란? 트리거는 사전적 의미로 '방아쇠를 당기다'인데 쿼리에서 어느 지정한 조건이 만족되면 연관된 다른 이벤트가 발생하게 한다. SQL 실행 시기를 기준으로 before 트리거( INSERT, UPDATE, DELETE 실행하기 전에 트리거 먼저 실행 됨), after 트리거(INSERT, UPDATE, DELETE 실행하고 난 후 트리거 실행 됨)가 있고, 실행 시 영향을 받는 곳을 기준으로 row 트리거(행:실행된 트 리거가 row(행) 하나하나 마다 실행 됨), statement 트리거(문장:실행된 트리거가 INSERT,UPDATE,DELETE 문장에 한 번만 실행됨)이 있다. 트리거는 트랜잭션 제어문 (COMMIT,ROLLBACK, SAVEPOINT)을 사용할 수 없고, 트리..

[오라클/SQL]Oracle SQL Developer 설치 및 설정

HR, SCOTT 설정은 똑같음 SYS 설정 오류종류 1. 테스트 실패 : IO 오류 : The Network Adapter could not establish the connection 해결 방법 : cmd => ipconfig => IPv4 주소 . . . . . . . . . : 192.168.100.131 를 SQL Developer 호스트 이름에 아이피 주소를 넣어주면 됩니다 2. ORA-28000: the account is locked 해결 방법 : sysdba SYS 질의작성에 명령 create user testt1 identified by testt1; grant connect, resource to testt1; 관리자권한으로 메모장열고 C드라이브에 저장한다.파일명(emp_data.cv..

[오라클/SQL] PL/SQL 실행

PI / SQL PL/SQL은 선언적인 SQL 언어와는 달리 SQL을 프로그래밍해서 처리하는 기법이다. 보통 컴파일러가 이해할 수 있도록 해준다. DECLARE --- 선언(선택) BEGIN --- 실행 코드 (필수) EXCEPTION ---예외 처리(선택) END; / 구문으로 해준다. ∎ 선언 부분에서는 실행문에서 사용될 변수, 쿼리 수행결과로 반환되는 여러 행을 처리해주는 커서(Cursor), 사용자 정의 예외 등을 정의한다. ∎ 실행 부분에서는 질의문이나 DML 문, 그리고 조건이나 제어문(IF 문, LOOP 문)을 정의한다. ∎ 예외처리 부분은 실행 시 발생 가능한 예외를 정의하고 예외 발생 시 처리하는 구문을 정의해준다. 변수는 미리 선언한 뒤 나중에 값을 줄 수도 있지만, 선언과 동시에 값을..

[오라클/SQL] SYNONYM (동의어), MERGE(머지), Data Dictionary(딕셔너리)

SYNONYM 이란? SYNONYM(시노님)은 테이블 이름을 별칭으로 다르게 만들어 주는 것으로 생각하면 된다. 테이블 이름을 변경하는 rename과 다르다. 아래에서와 같이 paul 사용자에게 hr 사용자의 employees 테이블에 접근할 수 있는 권한을 주고, paul 사용자가 hr.employees로 접근할 때 이름이 길고, 불편하다면 Synonym을 사용해서 이 긴 테이블 이름 hr.employees을 HR_EMP식으로 변경해줄 수 있다. SYNONYM 을 사용하는 이유 오브젝트명을 짧게하여 SQL문을 단순화 시킬 수 있다. 스키마, 테이블 명이 변경 되어도 시노님만 재생성하면 SQL문은 변경하지 않아도 된다. 오브젝트를 외부에 제공할 경우 스키마, 오브젝트명을 숨길 수 있어 보안에 좋다. cr..

[오라클/SQL] Subqueries(서브쿼리) 종류와 규칙

1. Subqueries(서브쿼리)란? 서브쿼리란 한 SQL 문장 안에서 보조로 사용되는 또 다른 SELECT문을 의미한다. 최종 결과를 출력하는 쿼리를 메인 쿼리라고 한다면, 이를 위한 중간 단계 혹은 보조 역할을 하는 SELECT문을 서브쿼리라고 한다. 2. Subqueries(서브쿼리)의 규칙 - 연산자를 사용한 비교나 조회대상의 오른쪽에 놓이며 서브 쿼리문을 묶는다 . - 특수한 몇몇 경우를 제외하고 대부분 서브 쿼리 절에는 ORDER BY절을 사용할 수 없다. - 서브 쿼리의 select절에 명시된 열은 메인쿼리의 비교대상과 같은 자료형과 같은 개수로 지정한다. - 서브 쿼리에 있는 select 문의 수행결과로 나오는 행의 수는 메인 쿼리의 연산자 종류와 호환되어야 한다 3. Subqueries..

[오라클/SQL] Sequence 생성/삭제, Role 권한 위임

Sequence(시퀀스)란? Sequence 는 연속적으로 입력되는 데이터 어떤 순서 값을 부여할 때 사용한다. 예를 들어 가입하는 신규 회원을 식별하는 식별자를 회원 테이블에서 자동으로 회원번호를 매기는 경우이다. 일반적으로 Primary Key가 적용된 컬럼에 순서적으로 번호를 부여할 때 시퀀스를 주로 사용한다. 일련 번호지만 한 자리 건너, 중간에 새로운 번호로 시작 등으로 해줄 수 있다. 'CREATE SEQUENCE 시퀀스_명'식으로 시퀀스를 생성해준다. 보통 PK값에 중복값을 방지하기위해 사용합니다 ▪ NEXTVAL을 써주면 자동으로 다음 번호가 매겨지고, ▪ INCREMENT BY 뒤에 증가_값을 지정할 수 있는데 디폴트 증가_값은 1이다. ▪ START WITH로 디폴트 시작_값은 1부터지..

[오라클/SQL] INDEX 생성/조회/삭제/통계정보

INDEX 란? Index는 데이터 베이스에서 데이터를 빠르게 조회하고 위한 데이터베이스 검색 기술이다. 보통 전체에서 2%에 해당되는 정보에 접근할 때에는 인덱스가 유리하다. (즉, 소규모 데이터를 쿼리할 경우) 특정 항목에 대한 인덱스를 생성한 뒤 해당 항목으로 쿼리하면 인덱스가 적용되어 속도가 향상된다. INDEX 생성/조회/삭제 생성 CREATE INDEX [인덱스명] ON [테이블명](컬럼1, 컬럼2, 컬럼3, .......) 조회 SELECT * FROM USER_INDEXES 삭제 DROP [인덱스 명] INDEX 가 불필요한 경우는 ? 데이터가 수천 건 미만인 경우에는 FULL SCAN의 시간이 그리 많이 소요되지 않기 때문에 인덱스를 생성하면 소요시간이 증가 된다. 조회보다 삽입, 수정,..

[오라클/SQL] 스크립트 작성 및 SQL 파일 실행하기

스크립트란? SQL 내용을 지닌 파일을 의미한다. -- 사원 번호를 입력하면 해당 사원의 부서. 부서위치(사는곳,위치, 등등)를 정보를 얻고자 한다. employees, departments, locations, countriesm, regions 5개 테이블을 조인한다. -- 관리자 권한으로 메모장을 열고 아래 소스를 삽입 REM NAME : empINFO.sql REM DESCRIPTION : show employee's information when employee_id is checked REM DATE : 2022.06.10(yyyy.mm.dd) REM EXECUTE : SQL > START empINFO.sql REM UPDATE REM select employee_id, last_name, ..

[오라클/SQL] View 테이블 생성,변경

View (가상테이블) 특징 자주 사용하는 쿼리가 여러 테이블을 조인해서 이뤄질 때 JOIN 하는 테이블 수가 늘어나면 질의문이 길고 복잡해지고 유지보수도 어렵기에 View를 생 성하여 사용한다. 명령어와 스크립트로 생성할 수 있는데 JOIN 하는 과정을 스크립트를 만들어 두거나 STORED PROCEDURE를 사용해서 데이터베이스 서버에 저장해두고 수시로 꺼내서 수정해가면서 재사용할 수 있다. 스크립트는 파일 시스템에 저장되지만 STORED PROCEDURE는 데이터베이스에 저장되어 관리되므로 최초로 compile 한 이후로는 그냥 수정해서 실행하기만 하면 된다. View는 제한된 정보(각 테이블에서 필요한 항목들만 꺼내서)로 새로운 테이블을 생성했기 때문에 내부의 다른 항목들이 보이지 않게 되므로 보..

728x90