본문 바로가기

BackEnd/DB, SQL28

SQL 24편: 저장 서브프로그램(프로시저, 함수, 패키지, 트리거) PL/SQL로 작성한 내용을 단 한 번 실행하는 데 사용하는 경우는 익명 블록이라고 한다. 익명 블록은 오라클에 저장 되지 않기 때문에 다시 실행하려면 PL/SQL블록을 다시 작성하여 실행하여야 한다. 이런 불편함 때문에 필요한 것이 이름을 지정하여 오라클에 저장해두는 PL/SQL 프로그램인 '저장 서브프로그램'이다. 저장 서브프로그램은 저장할 때 한 번 컴파일을 하며, 공유하여 사용할 수 있고, 다른 응용 프로그램에서 호출도 가능하다. 대표적인 구현 방식은 다음과 같다. 저장 프로시저 특정 처리 작업 수행을 위한 서브 프로그램. SQL문에서는 사용할 수 없다. 저장 함수 특정 연산을 거친 결과 값을 반환하는 서브프로그램. SQL문에서 사용할 수 있다. 패키지 저장 서브프로그램을 그룹화 하는데 사용한다... 2022. 1. 26.
SQL 23편: 예외 처리 오류, 예외 오류는 크게 두 가지로 구분된다. 1) 문법이 잘못되었거나 오타로 인한 오류: 컴파일 오류=문법 오류 2) 명령문의 실행 중 발생한 오류: 런타임 오류=실행 오류 이 중에서 오라클은 런타임 오류=실행 오류를 예외라고 한다. 예외 처리부 예외 처리는 예외가 발생하였을 때 프로그램이 비정상 종료가 되는 것을 막기 위해 EXCEPTION 영역에 필요 코드를 작 성하는 것을 뜻한다. 예외 처리부가 실행되면 예외가 발생한 코드 이후의 내용은 실행 되지 않는다. WHEN~THEN 절을 예외 핸들러라고 한다. 기본형식 EXCEPTION WHEN 예외이름1[OR 예외이름2] THEN 예외 처리에 사용할 명령어; WHEN 예외이름3[OR 예외이름4] THEN 예외 처리에 사용할 명령어; ... WHEN OT.. 2022. 1. 25.
SQL 22편: 커서 커서 SELECT문 또는 데이터 조작어 같은 SQL문을 실행했을 때 해당 SQL문을 처리하는 정보를 저장한 메모리 공간이다. SQL문의 결과 값을 사용할 수 있다. SELECT 문의 결과 값이 여러 행으로 나왔을 때, 각 행별로 특정 작업을 수행하도록 기능을 구현하는 것이다. 사용 방법에 따라 명시적 커서와 묵시적 커서로 나뉜다. *메모리 공간: =Private SQL Area, 커서는 이 메모리의 포인터를 말한다. SELECT INTO 방식이 조회되는 데이터가 단 하나의 행일 때 사용 가능한 방식인 것에 비해 커서는 결과 행이 하나이든 여러 개이든 상관 없이 사용할 수 있다. SELECT 열1, 열2, .... INTO 변수1, 변수2, ... FROM ... 1. 명시적 커서 기본 형식 DECLARE.. 2022. 1. 23.
SQL 22편: 레코드와 컬렉션 레코드 - 자료형이 각기 다른 데이터를 하나의 변수에 저장하는 데 사용한다. - 변수는 여러 개 지정할 수 있고(한 줄 당 변수 한 개), 각 변수는 쉼표로 구분한다. - 레코드에 포함된 변수를 사용할 때는 레코드이름.변수이름 으로 사용할 수 있다. 레코드 '자료형' 생성하기 TYPE 레코드이름 IS RECORD( 변수이름 자료형 NOT NULL := 표현식 ) 위에서 생성한 자료형으로 변수를 만들 때는 아래 쪽에 다음과 같이 선언해주어야 한다. 변수이름 레코드이름; 레코드를 사용하여 INSERT 하기 INSERT INTO 테이블이름 VALUES 레코드변수; 레코드를 사용하여 UPDATE 하기 UPDATE 테이블이름 SET ROW = 레코드변수 WHERE 조건식; 컬렉션 컬렉션의 종류 - 연관 배열 - .. 2022. 1. 20.
SQL 21편: 조건 제어문(IF, CASE), 반복 제어문(LOOP) 조건 제어문 1. IF 조건문 종류 설명 IF-THEN 특정 조건을 만족하는 경우 수행 IF-THEN-ELSE 특정 조건을 만족하는 경우와 반대 경우에 각각 지정한 작업 수행 IF-THEN-ELSIF 여러 조건에 따라 각각 지정한 작업 수행 1) IF-THEN IF 조건식 THEN 수행할 문장; END IF; 2) IF-THEN-ELSE IF 조건식 THEN 수행할 문장; ELSE 수행할 문장; END IF; 3) IF-THEN-ELSIF IF 조건식 THEN 수행할 문장; ELSIF 조건식 수행할 문장; ELSIF 수행할 문장; ... ELSE 수행할 문장; END IF; 2. CASE 문 IF-THEN-ELSIF 문과 같이 조건식의 결과 값이 여러가지 일 때, CASE문을 사용하면 더욱 단순하게 표현.. 2022. 1. 19.
SQL 20편: PL/SQL 기초(블록, 변수와 상수 정의하기) 블록 PL/SQL프로그램의 기본 단위 블록을 구성하는 키워드 DECLARE 선언부, 선택 실행에 사용될 변수, 상수, 커서 등을 선언 BEGIN 실행부, 필수 조건문, 반복문, SELECT, DML, 함수 등 정의 EXCEPTION 예외 처리부, 선택 예외 상황 처리 END 필수 블록을 종료 PL/SQL문 작성 규칙 1. 블록을 구성하는 DECLARE, BEGIN, EXCEPTION 키워드에는 세미콜론을 사용하지 않는다. 2. 블록의 각 부분에서 실행해야 하는 문장 끝에는 ;을 사용한다. 3. PL/SQL문은 마지막에 슬래시(/)를 사용하여 실행한다. 4. 주석 사용이 가능하다. (-- 또는 /* */) *PL/SQL 실행 결과를 화면에 출력하기 위해서는 SERVEROUTPUT 환경 변수 값을 ON으로 .. 2022. 1. 18.
SQL 19편: 사용자, 권한, 롤 관리 사용자 데이터 베이스에 접속하여 데이터를 관리하는 계정을 사용자(USER)라고 표현한다. 데이터베이스 스키마 데이터 간 관계, 데이터 구조, 제약 조건 등 데이터를 저장 및 관리하기 위해 정의한 데이터베이스 구조의 범위를 스키마를 통해 그룹 단위로 분류한다. 사용자는 데이터를 사용 및 관리하기 위해 오라클 데이터베이스에 접속하는 개체를 의미하고, 스키마는 오라클 데이터베이스에 접속한 사용자와 연결된 객체를 의미한다. 예를 들어 사용자 A가 생성한 테이블, 뷰, 제약 조건, 인덱스 등의 사용자 A가 만든 모든 객체는 사용자 A의 스키마가 된다. 사용자 생성 CREATE USER 사용자 이름 IDENTIFIED BY 패스워드 DEFAULT TABLESPACE 테이블 스페이스 이름 TEMPORARY TABLE.. 2022. 1. 16.
SQL 18편: 제약 조건 제약 조건 제약조건을 지정한 열에는 제약 조건에 부합하지 않는 데이터를 저장할 수 없도록 한다. 제약 조건 지정 방식에 따라 기존 데이터의 수정이나 삭제 가능 여부도 영향을 받는다. 제약 조건의 종류 NOT NULL NULL 불가 UNIQUE 중복 불가 PRIMARY KEY 중복 불가, NULL 불가 FOREIGN KEY 다른 테이블의 열을 참조하여 존재하는 값만 입력 가능 CHECK( ) 괄호 안의 조건식을 만족하는 데이터만 입력 가능 DEFAULT A 값이 지정되지 않을 경우 A로 지정, 제약 조건은 아니지만 같은 위치에 지정 데이터 무결성 DB에 저장되는 데이터의 정확성과 일관성을 보장한다는 의미. 이를 위해 항상 유지해야 하는 기본 규칙을 가지고 있다. 영역 무결성 열에 저장되는 값의 적정 여부... 2022. 1. 15.
SQL 17편: 객체(데이터 사전, 인덱스, 뷰, 시퀀스, 동의어) 객체 종류 테이블 데이터 사전 인덱스 뷰 시퀀스 동의어 데이터 사전 데이터베이스에서 테이블은 1.사용자 테이블과 2.데이터 사전으로 나뉜다. 데이터 사전은 데이터베이스의 사용자, 권한 등의 데이터베이스 설정을 저장하기 위한 특별한 테이블로 이해하면 될 듯 하다. 사용자 테이블은 Normal Table, 데이터 사전은 Base Table이라고 불리기도 한다. 메모리,성능,사용자,권한,객체 등 DB 운영에 중요한 데이터가 보관되어 있다. 데이터 사전 정보에 직접 접근이나 작업하는 것은 허용하지 않으며, SELECT문으로 정보 열람을 할 수 있게 해 둔다. 데이터 사전 뷰는 접두어를 보고 용도를 파악할 수 있다. 접두어 설명 USER_XXXX 현재 데이터베이스에 접속한 사용자가 소유한 객체 정보 ALL_XXX.. 2022. 1. 9.
SQL 16편: 데이터 정의어 DDL(CREATE, ALTER, RENAME, TRUNCATE, DROP) 데이터 정의어 DDL(Data Definition Language) - 객체의 생성/변경/삭제 관련 기능 수행 - DML(데이터 조작어)와 달리 명령어를 수행하자마자 DB에 수행한 내용이 바로 반영된다(즉 바로 COMMIT 되는 것이며, ROLLBACK이 불가하다). 대표적으로 CREATE, ALTER가 있다. CREATE 테이블을 생성하는 명령어 CREATE TABLE 소유계정.테이블 이름(열이름1 열1자료형, 열이름2 열2자료형, .... ); 테이블 이름 생성 규칙 1. 테이블 이름은 문자로 시작해야 한다. 2. 30byte 이하여야 한다. 3. 같은 사용자 소유의 테이블 이름은 중복될 수 없다 4. 특수문자는 $, #, _ 를 사용할 수 있다. 5. SQL 키워드는 테이블 이름으로 사용할 수 없다.. 2022. 1. 9.
SQL 15편: 트랜잭션과 세션 (ROLLBACK, COMMIT, 읽기 일관성, LOCK, HANG) 트랜잭션 - 한 개 이상의 데이터 조작 명령어(DML)로 이루어진 어떤 기능 한 가지를 수행하는 SQL문 덩어리이다. - 하나의 트랜잭션 내에 있는 여러 명령어를 한 번에 수행하여 작업을 완료하거나 아예 모두 수행하지 않는 상태, 즉 모든 작업을 취소하도록 한다. ='ALL OR NOTHING' - 트랜잭션을 제어하기 위해 사용하는 명령어를 TCL이라고 하며, COMMIT과 ROLLBACK이 이에 해당된다. - 데이터베이스에 접속하는 동시에 시작되어 TCL, DDL, DCL을 실행할 때 기존 트랜잭션이 끝나고 새 트랜잭션이 시작되는 것이 반복된다. ROLLBACK :트랜잭션을 취소하고 싶을 때 현재 트랜잭션에 포함된 데이터 조작 관련 명령어의 수행을 모두 취소한다. 명령어가 취소될 경우에 대비해 변경 전.. 2022. 1. 3.
SQL 14편: 데이터 조작어 DML(INSERT, DELETE, UPDATE) INSERT문 INSERT INTO 테이블 이름 (열1, 열2, ...) (생략시= 테이블을 만들 때 설정한 순서) VALUES (열1 값, 열2 값, ...); 특정 테이블에 데이터를 새로 추가할 때 사용한다. 열 지정을 생략하면 해당 테이블을 만들 때 설정한 열 순서대로 모두 나열되어 있다고 가정하고 데이터를 작성하면 된다. NULL을 INSERT하고 싶은 경우 세 가지 방법 1. NULL이라고 작성하기 - VALUES(1, 'A', NULL); 2. ''으로 표현하기 - VALUES(1, 'A', ''); 3. INSERT INTO 절에서 열 이름을 생략하는 방법 - INSERT INTO 테이블 이름 (열1, 열2) VALUES(1, 'A') 날짜 데이터를 INSERT하고 싶은 경우 1. '2021.. 2021. 12. 30.