반응형

DATABASE/Oracle 10

[ORACLE] 프로시저(PROCEDURE) 생성, 호출

특정한 로직을 수행하기만 하고 결과 값을 반환하지 않는 서브 프로그램이다. 보통 프로그래밍 언어의 function과 유사한 점이 있다. PL/SQL에서는 대표적으로 2가지의 서브 프로그램이 있는데, 함수(function)와 프로시저(procedure)이다. 프로시저로 생성한 로직은 DB안에 저장되기 때문에 DB내에서는 언제든지 프로시저를 실행하여 저장한 로직을 실행할 수 있는 장점이 있다. 프로시저 생성 CREATE OR REPLACE PROCEDURE 프로시저명 (파라미터 [IN || OUT || IN OUT] 데이터타입...) IS 변수 선언, 값 대입 BEGIN 코드 END; 파라미터와 같은 인자가 있어도 생성가능하고 없어도 생성가능하다. 파라미터가 있을시 반드시 파라미터의 데이터타입도 설정해주어야..

DATABASE/Oracle 2020.02.08

[ORACLE] 커서(CURSOR) 종류, 생성, 사용

SQL 문장을 처리한 결과를 가지고 있는 메모리를 영역을 가리키는 포인터이다. SQL문의 사용결과 행이 여러개 일때 커서를 사용하면 행에 순차적으로 접근이 가능하다. 커서의 종류는 2가지가 있으며 SQL문이 실행될때 자동으로 생성되고 실행되는 암시적 커서와 사용자가 직접 정의해서 사용하는 명시적 커서가 있다. 커서의 종류 1. 암시적 커서 오라클에서 실행되는 모든 SQL문장은 암시적 커서가 생성된다. SQL문이 실행되는 순간 자동으로 실행된다. 암시적 커서 속성 SQL%FOUND : 해당 SQL문에 의해 반환된 행수가 1개 이상이면 TRUE SQL%NOTFOUND : 해당 SQL문에 의해 반환된 행수가 더이상 없을 경우 TRUE SQL%ISOPEN : PL/SQL에서는 FALSE 값을 가지고 있다. (암..

DATABASE/Oracle 2020.02.07

[ORACLE] 기본적인 뷰 생성, 수정, 조회, 삭제

뷰는 하나 이상의 테이블이나 뷰 데이터를 볼 수 있는 데이터베이스 객체이다. 실제 데이터가 저장되는것은 아니지만 뷰를 통해서 관리를 할 수있다. 쉽게말해 가상 테이블이라고 생각하면 된다. 여러개의 테이블에서 필요한 정보를 추합하여 사용할 때가 있다. 이때 뷰를 사용하면 간단한 쿼리로 결과를 얻을 수 있다. 여러 테이블의 복잡한 쿼리를 뷰로 저장시켜 놓으면 저장한 뷰의 검색을 통해 데이터를 얻을 수도 있어 편리하게 사용할 수 있다. 뷰(VIEW) 생성 및 수정 서브쿼리를 이용하여 테이블을 사용하는 법과 굉장히 유사하다. -- 예1) 생성 및 수정이 가능하다. CREATE OR REPLACE VIEW 뷰명 AS SELECT 칼럼 FROM 테이블명; -- 예2) 생성만 가능하다. CREATE VIEW 뷰명 A..

DATABASE/Oracle 2020.02.06

[ORACLE] 시퀀스(SEQUENCE) 생성, 수정, 조회, 사용

기본키와 같은 값이 절대 없어서는 안될 데이터들을 값을 추가할때마다 중복되지 않는 값을 찾아 넣는다는건 데이터양이 많으면 많을수록 쉽지 않은 일이 될것이다. 이러한 경우 오라클에서는 시퀀스를 이용하여 값을 자동으로 줄 수 있다. 시퀀스란 자동으로 값을 증가시켜 반환하는 데이터베이스 객체이다. 보통 PRIMARY KEY의 값을 생성하기위해 많이 사용한다. 사용자가 정의한 숫자부터 증감될 값을 정하여 그 값만큼 자동으로 증감한다. 시퀀스(SEQUENCE) 생성 -- 가장 기본적인 문법 CREATE SEQUENCE 시퀀스명 START WITH 시작숫자 INCREMENT BY 증감숫자; -- 그 외에 속성들 CREATE SEQUENCE 시퀀스명 START WITH 시작숫자 INCREMENT BY 증감숫자 [NO..

DATABASE/Oracle 2020.02.06

[ORACLE] CONSTRAINT 제약조건 생성,삭제, PRIMARY KEY, UNIQUE, NOT NULL, FOREIGN KEY, CHECK, DEFAULT

제약조건은 컬럼에 대한 속성을 정의하는것이고, 테이블의 부적절한 데이터가 입력되는 것을 방지하기 위해 정의한 규칙이다. 데이터의 무결성을 보호하기 위해 사용한다. 제약조건은 데이터베이스의 객체로 고유의 이름을 지정해주어야 한다. 따로 지정하지 않으면 시스템에서 자동으로 이름을 지정해준다. 제약조건에 대해 오류가 났을때 제약조건에 이름이 오류내용에 출력되는데 오라클에서 자동으로 지정해준 이름이기때문에 코드번호로 적혀있어 외우고 있지 않은 이상 알 수가 없다. 사용자가 특정한 이름을 지정해준다면 오류가 발생한 제약조건에 대해 더 빨리 찾을 수 있을 것이다. 제약조건 이름 지정하기 -- 예시 1) CREATE TABLE TEST( id NUMBER(5) CONSTRAINT pk_id PRIMARY KEY, n..

DATABASE/Oracle 2020.02.05

[ORACLE] 기본적인 OUTER JOIN (외부 조인)

OUTER JOIN 외부 조인이라고도 불리며 join을 했을떄 조건에 맞지 않는 데이터를 표시하고 싶을때 OUTER JOIN을 사용한다. (조건을 만족하지 못하여 매칭되는 데이터가 없을경우 NULL값으로 표시한다.) 연산자로 (+)를 사용하며 조인시킬 값이 없는 쪽에 위치 시키면 된다. PK와 FK로 조인을 했을경우 FK 쪽으로 위치하면 되고 표현식에서 한 편에만 위치할 수 있다. SELECT 컬럼명1, 컬럼명2, 테이블2.컬럼명3 FROM 테이블1, 테이블2 WHERE 테이블1.컬럼명1(+) = 테이블2.컬럼명2; -- NULL값의 데이터만 출력하고 싶을 경우 SELECT 컬럼명1, 컬럼명2, 테이블2.컬럼명3 FROM 테이블1, 테이블2 WHERE 테이블1.컬럼명1(+) = 테이블2.컬럼명2 AND ..

DATABASE/Oracle 2020.02.04

[ORACLE] EQUI JOIN (동등 조인, 등가 조인)

EQUI JOIN (동등 조인, 등가 조인) 두 테이블에서 서로 공통적으로 존재하는 칼럼의 값이있는 행 전체를 연결하여 결과를 생성하는 조인 기법으로 =연산자를 사용하여 테이블간의 값을 연결시킨다. 일반적으로 PK와 그것을 참조하는 FK로 지정된 컬럼을 연결시킬때 많이 사용한다. SELECT 컬럼명1, 컬럼명2, 테이블2.컬럼명3 FROM 테이블1, 테이블2 WHERE 테이블1.컬럼명1 = 테이블2.컬럼명2 -- test 테이블과 apple 테이블, mouse테이블 있다고 가정할때 SELECT test.num, apple.name, age, address, color FROM test, apple, mouse WHERE test.num = apple.num AND test.user_id = mouse.u..

DATABASE/Oracle 2020.02.04

[ORACLE] 기본적인 내장함수

COUNT(*)와 COUNT(컬럼) COUNT(*)와 COUNT(1)은 동일한 기능을 하고 있다. 하지만 COUNT(컬럼)과는 약간의 차이점이 있다. COUNT(*)은 NULL값을 포함한 모든 행의 갯수를 나타낸다 COUNT(컬럼)은 NULL값은 제외한 행의 갯수를 나타낸다. SELECT COUNT(*) FROM EMP; -- 전체 사원수 기본적인 내장 함수 평균값을 나타내는 AVG(컬럼) SELECT AVG(age) FROM TEST; -- 평균나이 이때 평균나이가 소수점 이하로 떨어져 실수가 될 수 있는데 그럴때는 아래 코드처럼 하면된다. SELECT ROUND(AVG(age)) FROM TEST; -- 반올림 : ROUND() SELECT CEIL(AVG(age)) FROM TEST; -- 올림 :..

DATABASE/Oracle 2020.02.04

[ORACLE] 기본적인 테이블 생성하기

테이블 생성 데이터베이스를 사용하려면 가장 먼저 데이터를 담을 테이블을 생성해야 한다. CREATE TABLE 테이블명(컬럼명 데이터타입, 컬럼명 데이터타입.....); --예) CREATE TABLE test( id NUMBER(5) PRIMARY KEY, name VARCHAR(30), loc VARCHAR(30) ); -- 테이블 구조 확인 DESC 테이블명; 위와 같이 테이블 명과 컬럼, 그리고 컬럼의 데이터타입을 정해주고 제약조건이 있을시 적어준다. 이러한 작업을 하면 데이터를 담을 빈 테이블이 생성됐다. 하지만 데이터가 없는 테이블은 중요하지 않다. 중요한것은 테이블안에 있는 데이터들이다! 데이터를 테이블안에 넣어주어야 한다. 테이블의 값 추가하기 --전체 칼럼에 값을 넣을때 INSERT IN..

DATABASE/Oracle 2020.02.04
반응형