함수
똑같은 처리를 반복적으로 사용할  쓰는 것으로 로직을 수행한  특정한 값을 반환하는 서브 프로그램이다.
함수 생성
CREATE OR REPLACE FUNCTION 함수이름(매개변수명1 매개변수1타입, 매개변수2 매개변수2타입,매개변수3 매개변수3 타입, …)
RETURN 반환 타입;
IS
  선언부
BEGIN
실행부
RETURN 반환값;
[EXCEPTION
예외처리부
END [함수이름];
 
함수 호출
함수명(매개변수1, 매개변수2, 매개변수3, …);
 
매개변수가 없는 함수를 생성할 수도 있다. (호출시 함수명만 기제해도됨)

프로시저
함수는 로직을 수행한  값을 반환하지만 프로시저는 로직 수행만  수있다.
 
프로시저 생성
CREATE OR REPLACE PROCEDURE 프로시저이름
            (매개변수1 [IN / OUT / IN OUT] 데이터 타입 [ := 기본값],
            매개변수2 [IN / OUT / IN OUT] 데이터 타입 [ := 기본값],
            매개변수3 [IN / OUT / IN OUT] 데이터 타입 [ := 기본값], …)
IS
  선언부
BEGIN
  실행부
[EXCEPTION
예외 처리부]
END [프로시저 이름 ];

함수와 다르게 매개변수에 값이 안들어왔을 경우의 값을 설정할  있다.
매개변수에 붙는 IN 입력받을 , OUT 출력할  사용하는 용어이다.
값을 프로시저를 호출한 로직의 다른 변수에 넣어주고 싶을  OUT 사용하면 된다아무것도 안적을 경우 기본적으로 IN 선언된다.
프로시저에서도 RETURN 사용할  있는데 이것은 함수와 같이 결과값을 출력하는 용도가 아닌 로직을 빠져나가는 용도로 사용한다.

프로시저 실행
EXEC 프로시저명(매개변수매개변수매개변수);
EXECUTE 프로시저명(매개변수매개변수매개변수);
 
EXEC 프로시저명(매개변수1 => 매개변수매개변수2 => 매개변수매개변수3 => 매개변수);
EXECUTE 프로시저명(매개변수1 => 매개변수매개변수2 => 매개변수매개변수3 =>매개변수);

매개변수를 순서대로 기입하는 방법도 있지만 하나씩 매칭해주는 방법도 있다.


'프로그래밍 > 오라클' 카테고리의 다른 글

(오라클) PL/SQL  (0) 2016.07.10
(오라클) With 절  (0) 2016.07.10
(오라클) 계층형 쿼리  (0) 2016.07.10
(오라클) 조인, 안시 조인  (0) 2016.07.10
(오라클) SQL 함수  (0) 2016.07.10

기본 구성
이름
IS(AS)
DECLARE
  선언부
BEGIN
실행부
EXCEPTION
  예외 처리부
END;
 
이름
이름은 사용하지 않을 수도 있다. 그러한 블록을 익명 블록이라고 한다.
 
선언부
DECLARE 시작하며 실행부와 예외 처리에서 사용할 변수,상수 등을 설정하는 곳이다.
변수 선언
  변수명 데이터타입 := 초깃값;
데이터 타입은 SQL 데이터 타입을 사용해도 된다.
상수 선언
상수명 CONSTANT 데이터타입 := 상수값;
상수는 변수와 다르게 한번 선언하면 값을 바꿀  없다.
 
PRAGMA
컴파일러가 실행되기 전에 처리하는 전처리기 역활을 하는 것으로 선언부에 명시하여 사용한다.
PRAGMA AUTONOMOUS_TRANSACTION
    트랜잭션 처리를 담당하는 PRAGMA,  트랜잭션이나 다른 트랜잭션에 영향을 받지 않고 독립적으로 현재 블록 내부에서 데이터베이스에 가해진 변경사항을 COMMIT이나 ROLLBACK하라는 지시를하는 역활을 한다.
PRAGMA EXCEPTION_INIT(예외명, 예외번호)
    사용자 정의 예외 처리를   사용하는 PRAGMA이다. 특정 예외번호를 명시해서 컴파일러에  예외를 사용한다는 것을 알린다.
PRAGMA RESTRICT_REFERECES(서브 프로그램명, 옵션)
    오라클 패키지를 사용할  선언하는 PRAGMA이다. 선언을 해놓으면 패키지에 속한 서브 프로그램에서 옵션 값에 따라 특정 동작을 제한할  사용된다.
PRAGMA SERIALLY_RESUABLE
패키지 메모리 관리를 쉽게  목적으로 사용되는 PRAGMA이다. 패키지에 선언된 변수에 대해 한번 호출된  메모리를 해제시킨다. (패키지 변수에 값을 할당해도 다음 번에 호출할 때는 할당한 값이 사라져변수를 초기값이나 NULL값으로 만듬)
 
실행부
실제 로직을 처리하는 부분이다. 일반 SQL문과 제어문이 들어갈  있고 DDL문은 사용할  없지만 DML문은 사용할  있다. 
DML문을 사용할  선언부에서 선언한 변수를 사용하고 싶다면 
SELECT쿼리명1, 쿼리명2, … INTO 변수명1, 변수명2, … FROM …
같이 INTO 절을 사용하여 타입에 맞는 변수를 넣어주면 된다. 
다른 프로그래밍 언어와같이 문장마다 세미콜론을 붙어야 한다.
 
예외처리 : 실행부를 수행하다가 예외가 발생하면 EXCEPTION이하의 문장을 수행하는 곳이다.
 
연산자
** : 제곱 연산자
+,-,*,/ : 사칙연산
|| : 문자열 연결 연산자
=,<,>,<=,>=,<>,!=~=,^=,is null, Like, Between, in : 비교 연산자
not, and ,or : 논리 연산자
 
 
주석
실제 로직에서 처리가 안되는 부분으로 부가설명을 붙이기위한 용도로 사용한다.
한줄만 주석을 하고싶다면 ‘--‘(- 두개) 블록단위로 주석을 만들고 싶다면 양끝에/* */ 붙이면 된다.
 
라벨
라벨생성 : <<라벨명>>
프로그램 상에 특정 부분에 이름을 부여하는 것으로 가독성을 높이는 것과 GOTO문을 사용할  사용한다.
GOTO 
라벨명이 있는 곳으로 이동하는 제어문 이다.
GOTO 라벨명;
 
PL/SQL 제어문
다른 프로그래밍 언어에서 제공하는 제어문들을 PL/SQL에서도 지원한다.
IF, CASE, LOOP, WHILE, FOR, CONTINUE, GOTO  이있다.
 
IF
 
IF 조건 THEN
  조건 처리;
END IF;
 
IF 조건 THEN
조건 처리;
ELSE
  조건 처리
END IF;
 
IF 조건1 THEN
  조건 처리
ELSIF 조건2 THEN
  조건 처리
ELSE
  조건 처리
END IF;
 
다른 프로그래밍 언어에서 사용하는것과 유사한 IF문이다.  else if 썼던 것을 elsif  쓴다는 점과 if문이 끝나는 곳에 세미콜론’;’ 붙여줘야 한다는 점이 다르다.
 
CASE
If문과 같은 처리를하는 제어문이다.
 
CASE 표현식
    WHEN 결과1 THEN
        처리문1;
    WHEN 결과2 THEN
        처리문2;
    ELSE
        처리문 3;
END CASE;
 
CASE WHEN 표현식1 THEN
        처리문1;
CASE WHEN 표현식2 THEN
        처리문2;
    ELSE
        처리문 3;
END CASE;
 
LOOP 
특정조건을 만존할 때까지 무한 반복하는 제어문 이다.
 
LOOP
    연산;
    EXIT WHEN 조건;
END LOOP;
 
WHILE
먼저 조건을 대조후 반복문에 들어가는 제어문이다.
 
WHILE 조건
LOOP
    연산;
END LOOP;
 
FOR
인덱스의 초기값과 최종값을 정하여 인덱스가 최종값이 될때까지 반복하는 제어문이다.
FOR 인덱스 IN [REVERSE] 초깃값..최종값
LOOP
    연산;
END LOOP;
 
CONTINUE
위의 반복문들 내에 사용하는 제어문으로 특정조건에서 CONTINUE아래 로직을 생략하고 상단의 루프로 건너가는 역활을 한다.
CONTINUE WHEN 조건;



'프로그래밍 > 오라클' 카테고리의 다른 글

(오라클) PL/SQL 함수와 프로시저  (0) 2016.07.10
(오라클) With 절  (0) 2016.07.10
(오라클) 계층형 쿼리  (0) 2016.07.10
(오라클) 조인, 안시 조인  (0) 2016.07.10
(오라클) SQL 함수  (0) 2016.07.10

WITH 

동일한 구문을 WITH절을 통해  번만 적으면 다른 서브쿼리내에서 참조하여  사용할  있는 것이다.


With 별칭1 AS (select ),

별칭2 AS (select ),

별칭 3 AS (select )

          …

Select 


순환 서브 쿼리

With 내에 계층형 쿼리 처럼순환 서브쿼리로 계층을 표현   있다.

계층형 쿼리에서 사용했던 ORDER SIBLINGS BY 절과 같은 기능으로 쿼리를 레벨별로 정렬하려면 SEARCH 구문을 사용하면 된다.

SEARCH 구문의 사용방법

 

  • DEPTH FIRST BY : 같은 노드에 있는 로우 형제로우 보다 자식 로우가 먼저 조회된다. (깊이우선)
  • BREADTH FIRST BY : 자식 로우보다 형제 로우가 먼저 조회된다. (레벨순)
  • 같은 레벨에 있는 형제 로우일 때는 BY 다음에 명시한 컬럼 순으로 조회된다.
  • SET 다음에는 가상 컬럼 형태로 최종 SELECT 절에서 사용할  있다.


'프로그래밍 > 오라클' 카테고리의 다른 글

(오라클) PL/SQL 함수와 프로시저  (0) 2016.07.10
(오라클) PL/SQL  (0) 2016.07.10
(오라클) 계층형 쿼리  (0) 2016.07.10
(오라클) 조인, 안시 조인  (0) 2016.07.10
(오라클) SQL 함수  (0) 2016.07.10

계층형 쿼리 기본양식

Select 출력할 퀄럼

From 테이블명

Where 조건

Start With 최상위 계층의 조건

Connet by [NoCycle] 계층이 연결되는 조건

Order [Siblings] by 정렬할 퀄럼

 

Order by 사용할 경우 계층형 구조에 관계없이 정렬하기 때문에 문제가 된다.

그래서 정렬이 필요할  ‘Order Siblings by’절을 사용해서 계층형 구조를 보존해야 한다.

 

 

계층형 쿼리의 내부 절차

1.     조인이 있으면 조인을 먼저 처리

2.     START WITH 절을 참조해 최상위 계층을 선택

3.     CONNECT BY 절에 명시된 구문에 따라 계층형 관계를 파악해 하위 계층을 차례로 선택.

4.     WHERE조건에 맞는지 찾음

 

계층형 쿼리 관련 함수, 의사 퀄럼

Level : 계층형 쿼리에서만 사용할  있는 의사퀄럼이다계층형 구조에 따른 레벨

             값을 자동으로 반환해준다.(값은 1부터 시작)

 

Connect_By_Root [퀄럼이름] : 계층형 쿼리에서 최상위 행을 반환하는 연산자이다.

 

Connect_By_IsLeaf : 계층형 구조에서 자신이 최하위 계층이면 아니면 0

                                    반환하는 의사 퀄럼이다.

 

Connect_By_IsCycle : 계층형 구조에서 하위계층으로 탐색중 무한루프에 빠지는

                                    퀄럼이 있을 경우 1 출력하는 의사 퀄럼이다.

 

Sys_Connect_By_Path(퀄럼, char1) : 최상위 계층에서 자기자신까지 연결된 경로를

                                                            출력하는 것으로 중간에 char1값이 들어간다.

'프로그래밍 > 오라클' 카테고리의 다른 글

(오라클) PL/SQL  (0) 2016.07.10
(오라클) With 절  (0) 2016.07.10
(오라클) 조인, 안시 조인  (0) 2016.07.10
(오라클) SQL 함수  (0) 2016.07.10
(오라클) 의사퀄럼, 표현식, 조건식  (0) 2016.07.10

조인

관계형 데이터베이스에서 SQL을 이용해 관계를 맺는 방법이다.

조인에는 내부조인외부조인, ANSI조인등이 있다.

 

내부조인

동등조인 조건절에서 등호(=) 연산자를 사용해 2개 이상의 테이블뷰를 연결한 조인이다.

(WHERE 절 안의 등호(=) )

         WHERE 테이블1의 컬럼 테이블2의 컬럼

세미조인 서브쿼리를 사용해 서브 쿼리에 존재하는 데이터만 메인 쿼리에서 추출하는 방법이다.

                동등조인과 비슷해보이지만 중복을 제거하는 효과를 가지고있다.

       (WHERE절 안의 IN, EXIST)

안티조인 서브 쿼리에 존재하지 않는 데이터만 메인 쿼리에서 추출하는 방법.

                세미조인과 반대되는 개념이다역시 중복처리가 된다.

                (WHERE 절 안의 NOT IN, NOT EXISTS)

셀프조인 한테이블을 사용해 조인하는 방법.

 

외부조인

MERGE랑 비슷한 구조인데 조인 조건에 만족하는 데이터 외에 조건에 명시된 컬럼에 갑싱 없거나 데이터가 아예없더라도 추출하는 조인 방법이다.

WHERE 절에서 외부조인으로 설정할 컬럼뒤에 ‘ (+) ‘ 를 붙여 외부조인이란 것을 명시하여 사용한다.

외부조인을 사용할 경우 조건에 해당하는 모든 것에 외부조인마크를 붙여야한다.

·      조인 대상 테이블 중 데이터가 없는 테이블 조인 조건에 (+)를 붙인다

·      외부 조인의 조인 조건이 여러 개일 때 모든 조건에 (+)를 붙인다

·      한번에 한 테이블에만 외부 조인을 할 수 있다.

·      (+)연산자가 붙은 조건과 OR,IN 연산자를 같이 사용 할 수 없다.(IN은 결과가 1개일땐 가능함)

 

크로스(카타시안조인

WHERE 절에 조인 조건을 안넣는 조인으로 조인이 없기 때문에 테이블 * 테이블행의 결과값이 나온다.

 


안시(ANSI) 조인

ANSI SQL 문법에서 사용한 조인을 오라클에서 변환해서 사용하는 것이다.

WHERE에서 조인하는 것이 아닌 FROM 절에서 조인한다.

 

내부조인

FROM 

INNER JOIN 테이블,뷰 이름 ON (조인 조건)

    (조인조건에 쓰인 컬럼 이름이 동일 할 경우 ON대신에 USING으로 바꾸고 테이블명 빼도 됨)

WHERE 

 

외부조인

FROM 테이블1

LEFT(RIGHT) [OUTER] JOIN 테이블2 ON (조인 조건)

         기준 테이블이 왼쪽에있으면 LEFT 오른쪽에있으면 RIGHT를 붙이면된다 OUTER생략가능

WHERE

 

크로스(카타시안)조인

FROM 테이블1

CROSS JOIN 테이블 2;


FULL OUTER조인

외부 조인은 한쪽을 대상으로 빈곳도 그대로 출력했는데 FULL OUTER는 두개다 외부 조인을 적용하는 것이다.

FROM 테이블1

FULL OUTER JOIN 테이블2 ON 조인조건

숫자 함수

         ABS(n) : 매개변수로 숫자를 받아 그 절대값을 반환하는 함수

         CEIL(n) : 매개변수 n과 같거나 가장 큰 정수를 반환한다.

         FLOOR(n) : 매개변수 n보다 작거나 가장 큰 정수를 반환한다.

         ROUND(n,i) : 매개변수 n값을 i+1번째 소수점에서 반올림 하는 것(소숫점 i번째까지 출력)

                             i가 음수가 되면 i번째에서 반올림

         TRUNC(n,i) : 매개변수 n값을 i+1번째 소수점에서 버림 하는 것(소숫점 i번째까지 출력)

                             i가 음수가 되면 i번째에서 버림

 

문자 함수

      INITCAP(char) : 구문자 기준 첫글자를 대문자로 나머지는 소문자로 반환

         LOWER(char) : 전부 소문자

         UPPER(char) : 전부 대문자

         CONCAT(char1, char2) : 두 문자를 합쳐서 반환

         SUBSTR(char, pos, len) : char문자의 pos번째에서 len길이 만큼 짜른 문자를 반환

         LTRIM(char1, char2) : char1 왼쪽에서 char2문자를 비교해가면서 같으면 제거한 문자를 반환

         RTRIM(char1, char2) : char1 오른쪽에서 char2문자를 비교해가면서 같으면 제거한 문자를 반환

         LPAD(expr1, n, expr2) : expr2 문자열을 n자리만큼 왼쪽부터 채워서 expr1를 반환하는 함수

         RPAD(expr1, n, expr2) : expr2 문자열을 n자리만큼 오른쪽부터 채워서 expr1를 반환하는 함수

         REPLACE(char, search, replace) : char에 search 문자를 찾아 replace 값으로 바꾸어 반환하는 함수

         TRANSLATE(char, from_str, to_str) : REPLACE와 유사하나 한글자씩 매핑하여 바꾼 결과를 반환

         INSTR(str, substr, pos, occur) : str 문자열에 substr과 일치하는 위치를 반환하는데 pos

                                               시작위치, occur 몇 번째 일치하는가를 적는다.

         LENGTH(char) : char의 문자열의 개수

         LENGTHB(char) : char의 문자열의 바이트 수

날짜 함수

         SYSDATE : 현재날짜와 시간을 알려주는 함수 (DATE)

         SYSTIMESTAMP : 현재날짜와 시간을 알려주는 함수 (TIMESTAMP)

         ADD_MONTHS(date, int) : date값에 int 값만큼 월을 더한 날짜를 반환

         MONTHS_BETWEEN(date1, date2) : 두 날짜의 개월 수 차이를 반환하는 함수 date1-date2

         LAST_DAY(date) : date에 있는 달의 마지막 일자를 반환

         ROUND(date, format) : date 값에 format에 맞춰서 반올림한 날짜를 반환한다.

         TRUNC(date, format) : date 값에 format에 맞춰서 버림한 날짜를 반환한다.

         NEXT_DAY(date, char) : date를 char에 명시한 날짜로 다음 주 주중 일자를 반환한다.

변환함수

         TO_CHAR(숫자,날짜, format) : 문자로 변환해주는 함수, format으로 형식에맞게 출력가능

         TO_NUMBER(expr, format) : 문자를 숫자로

         TO_DATE(char,format) : 문자를 DATE값으로 변환

         TO_TIMESTAMP(char, format) : 문자를 TIMESTAMP 값으로 변환

NULL관련 함수

         NVL(expr1, expr2) : expr1이 NULL일 때 expr2를 반환

         NVL2(expr1,expr2,expr3) : 순서대로 NULL인지 비교해서 NULL이면 다음값 반환

         COALESCE(expr1, expr2, …) : 매개변수로 들어오는 표현식에서 NULL이아닌 값을 찾아 반환

         LNNVL(조건식) : 조건식 결과가 TRUE 이면 FALSE, FALSE이거나 UNKNOWN이면 TRUE반환

         NULLIF(expr1, expr2) : exp1과 expr2를 비교해서 같으면 NULL, 아니면 expr1을 반환

기타 함수

         GREATEST(expr1, expr2, …) : 가장 큰 값을 반환

         LEAST(expr1, expr2, …) : 가장 작은 값을 반환

         DECODE(expr, search1, result1, search2, result2, .., default) : switch case문과 유사함

의사 퀄럼

테이블의 퀄럼처럼 동작하는 것들을 말하며 여기서 나온 값을INSERT, UPDATE, DELETE 할 수 없다.

 

시퀀스에서는 NEXTVAL과 CURRVAL를 사용 할 수있다.

시퀀스명.NEXTVAL : 해당 시퀀스에 다음 순번 값을 가져온다. (, SELECT문에서 사용해도 값이 변함)

시퀀스명.CURRVAL : 해당 시퀀스에 현재 순번 값을 가져온다.

 

ROWNUM : 쿼리를 통해 각 행에 대한 순서 값을 나타내는 의사컬럼이다.

ROWID      :  테이블에 저장된 각 행이 저장된 주소 값을 가리키는 의사컬럼이다.

(SELECT 문에서 쓴다)

 

연산자

수식 연산자 : +, -, *, /

문자 연산자 : ||                                                   - 두문자를 붙일 때 사용

논리 연산자 : >, <, >=, <=, =, <>, !=, ^=

집합 연산자 : UNION, UNION ALL, INTERSECT, MINUS

UNION – 합집합을 의미하는데 집합 원소(SELECT 결과)를 모두 포함한 결과가 반환

                 (중복은 하나만 나옴)

UNION ALL – UNION + 중복도 모두 나옴

INTERSORT – 교집합을 의미하는데 데이터 집합에서 공통인 요소만 출력

MINUS – 차집합을 의미하는데 MINUS 연산자 기준 앞의 데이터 집합에서 뒤의 데이터 집합을 뺀다.(겹치는 부분을 제외한다)

 

집합 연산자 사용시 주의사항

·       집합 연산자로 연결되는 각 SELECT 문의 SELECT 리스트의 개수와 데이터 타입이 일치해야한다.

·       ORDER BY 절은 맨 마지막 문장에서만 사용 할 수 있다.

·       BLOB, CLOB, BFILE 타입의 컬럼에 대해서는 집합 연산자를 사용할 수 없다.

·       UNION, INTERSECT, MINUS 연산자는 LONG형 컬럼에는 사용할 수 없다.

 

표현식

CASE ~ END 문으로 한개 이상의 값과 연산자등이 결합된 식이다.

기본 구문

CASE WHEN 조건 THEN 

          WHEN 조건 THEN 값ㅌ

END


조건식

비교 조건식

         컬럼명 = [ANY, ALL, SOME 중 하나] ( 1, 2, …, n)

         ANY, SOME : 괄호 안에 들어간 값중 등호(또는 부등호)가 성립하는 행를 골라냄 (OR로 변환할 수 있음)

         ALL : 괄호 안에 들어간 값들이 모두 등호(또는 부등호)가 성립하는 행을 나타냄

논리 조건식

         AND : 모든 조건을 만족해야함

OR : 여러 조건 중 하나만 만족해도됨

NOT : 조건의 결과를 반대로 바꿈 (FALSE -> TRUE, TRUE -> FALSE)

 

BETWEEN 1 AND 2 : 1 <= 검색하는 값 <= 에 해당하는 행을 조회하는 식

IN (1,2,…): ‘=ANY (1, 2, …)’ 와 동일함 값1,2,.. 들중에 같은 값이 있으면 TRUE를 반환하는 식

EXISTS (서브쿼리) : IN과 비슷하지만 값을 입력하는게 아닌 서브쿼리가 와야한다또한 서브 쿼리 내에서

                        조인 조건이 있어야 한다.

LIKE ‘문자 또는 문자열’ : 문자열의 패턴을 검색할 때 사용하는 조건식으로 ‘%’를 붙이면 아무 글자가 몇글자가 와도

                            상관없고 ‘_’가 오면 아무 글자가 한글자 와도 되는 것이다.

                           Ex) LIKE ‘B%’ -> 첫글자가 B인 아무 문자열

                               LIKE ‘%C’ -> 마지막 글자가 C인 아무 문자열

                               LIKE ‘_A%” ->  첫글자는 아무거나 두번째 글자는 A인 아무 문자열

SELECT 

테이블이나 뷰에 있는 데이터를 조회할 때 사용하는 문장이다.

 

문장 구문

SELECT * (또는 컬럼)         -> 결과창에 나올 컬럼 입력( *는 테이블의 모든 컬럼)

FROM 테이블 명              -> 어느 테이블에서 검색할지 입력

WHERE 조건                   -> 해당 조건이 맞는 것을 추출

GROUP BY 컬럼 or 표현식 -> 그룹으로 묶을 컬럼명이나 표현식을 입력해서 사용 대신 GROUP BY 절에 사용한 컬럼

중에서만 결과창에 나올 컬럼으로 사용 할 수 있다.

ROLLUP(expr1, expr2, …) : expr로 명시한 표현식을 기준으로 집계한 결과를 보여준다.

         표현식 개수가 n개면 n+1레벨까지 하위 레벨에서 상위 레벨 순으로 데이터가 집계된다.

         N개의 표현식 -> N+1개 결과 나옴

        일반 컬럼과 같이 쓸 경우 일반 컬럼으로 그루핑후 ROLLUP을 수행한다.

CUBE(expr1, expr2, …) : expr로 명시한 표현식 개수에 따라 가능한 모든 조합별로 집계한 결과를 반환한다.

                           Expr수가 n이면 집계 결과의 유형은 총 2^n개로 표현

HAVING BY 조건식           -> 그룹으로 묶인 결과를 다시한번 걸러내는 역활을 한다.

ORDER BY 컬럼;              -> 정렬 방식 asc(Default) 오름차순 dsc 내림차순

 

기본적으로 SELECT ~ FROM 까지만 쓰면 사용 할 수 있고 나머지는 선택적으로 사용할 수 있다.

(HAVING BY GROUP BY절을 사용 할 때만 사용 할 수 있다.)

 

FROM 절에는 테이블이 하나만 올 수 있지만 그 이상도 올 수 있다. (당연히 추가한 테이블은 조건이나 결과창에

나올 컬럼란에도 쓸수있다.)

 

WHERE 절은 AND, OR 연산자를 넣어 조건을 추가할 수 있다.

AND : 조건이 둘다 성립하는 경우

OR : 조건 중 하나만 성립하는 경우

(후에 자세히 다룰 예정)

 

INSERT 

테이블에 데이터를 입력할 때 사용하는 문장.

문장 구문

INSERT INTO 테이블명(컬럼1, 컬럼2, …) VALUES (1, 2, …);

컬럼을 입력 안하면 SELECT문을 통해 보이는 컬럼 순서대로 VALUES 괄호 안에 넣으면 됟다.

위 문장을 쓸경우 한번에 한개의 데이터를 보낼 수 있다.

 

INSERT INTO  테이블명(컬럼1, 컬럼2,…) SELECT 

위 문장을 쓸경우 여러개의 데이터가 들어갈 수 있다하지만 테이블에 기본키유니크키가 겹치면 오류가 뜨면서 데이터 전체가 들어가지 않는다. SELECT 문은 당연히 입력되는 컬럼 순서에 맞게 데이터 타입을 맞춰야 한다.

 

UPDATE 

테이블에 있는 기존 데이터를 수정할 때 사용하는 문장

문장 구문

UPDATE 테이블명                                   -> 데이터를 변경할 테이블의 이름

SET 컬럼1 = 변경값1, 컬럼2 = 변경값2, … -> 조건 만족시 변경할 컬럼과 변경될 값 입력  

WHERE 조건;                                         -> 변경할 때의 조건을 입력

 

 

 

MERGE 

조건을 비교해서 테이블에 해당 조건이 있으면 UPDATE없으면 INSERT 문을 수행하는 문장이다.

문장 구문

MERGE INTO 테이블 명

         USING (비교할 데이터 객체)

         ON (비교할 조건)

WHEN MATCHED THEN

         조건이 맞을 경우 수행할 문장

WHEN NOT MATCHED THEN

         조건이 안 맞을 경우 수행할 문장

 

DELETE 

테이블에 있는 데이터를 삭제할 때 사용하는 문장.

 

문장 구문

DELETE 테이블 명

WHERE delete조건;

조건을 안적을 경우 테이블에 있는 모든 데이터를 지운다.

 

데이터 저장 및 복구

COMMIT; 데이터베이스에 마지막으로 반영하는 역활

ROLLBACK; 변경한 데이터를 변경하기 이전 상태로 되돌리는 역활

TRUNCATE TABLE 테이블 명 : ROLLBACK을 실행해도 돌아오지 않음

하나 이상의 테이블이나 다른 뷰의 데이터를   있게 하는 데이터베이스 객체

실제 데이터는 뷰를 구성하는 테이블에 담겨 있지만 테이블 처럼 사용하는 것으로

데이터를 조회하는 SELECT문으로 구성되있다.


 생성

CREATE OR REPLACE VIEW 뷰명 AS SELECT 문장;

▲동일한 뷰가 있으면 덮어씌움


 삭제

DROP VIEW 뷰명;


인덱스

테이블에 있는 데이터를 빨리 찾기 위한 용도의 데이터베이스 객체.


인덱스 분류

  1. 인덱스 구성 컬럼 개수에 따른 분류 : 단일 인덱스와 결합 인덱스 
  2. 유일성 여부에 따른 분류: UNIQUE 인덱스, NON-UNIQUE 인덱스
  3. 인덱스 내부 구조에 따른 분류 : B-tree 인덱스비트맵 인덱스 , 함수 기반 인덱스


인덱스 생성

CREATE [UNIQUE] INDEX 인덱스명


인덱스 삭제

DROP INDEX 인덱스명;


시노님

데이터베이스 객체의 이름을 대신하는 것을 만드는 걸로 외부유출을 막거나

객체이름이 너무길어지는걸 줄여쓰기위해 사용한다.


시노님 생성

CREATE OR REPLACE [PUBLIC] SYNONYM 시노님명 FOR 객체명;

기본설정이 PRIVATE이고 PUBLIC 삭제할때 PUBLIC 붙어야한다.


시노님 삭제

DROP [PUBLIC] SYNONYM 시노님명;







시퀀스

자동 순번을 반환하는 데이터베이스 객체이다.


시퀀스 생성

CREATE SEQUENCE 시퀀스명

INCREMENT BY 증감 숫자

START WITH 시작숫자

NOMINVALUE 또는 MINVALUE 최솟값   

NOMAXVALUE 또는 MAXVALUE 최대값

NOCYCLE 또는 CYCLE       최대값(최솟값범위를 넘어갈때 값을 최솟값(최대값)에서 시작하는 

NOCACHE 또는 CACHE     메모리에 시퀀스 값을 미리 할당해 놓는 

NOMINVALUE : 증감숫자가 양수면 1, 감소면 -1026 설정

NOMAXVALUE : 증감숫자가 양수면 10027, 감소면 -1 설정


시퀀스 제거

DROP SEQUENCE 시퀀스명


파티션 테이블

테이블에 있는 특정 컬럼 값을 기준으로 데이터를 나눠서 저장하는 것이다.


파티션 생성

(테이블생성 코드 )

PARTITION BY RANGE(컬럼 )

(

PARTITION 파티션명 VALUES ()

 );

오라클 테이블

 

테이블 - 데이터를 담고 있는 객체, 로우(행)과 컬럼(열)으로 구성된 2차원 형태(표)의 객체로 액셀과 구조가 같음

테이블 생성

CREATE TABLE 테이블명(

         컬럼컬럼1_데이터타입 (NULL, NOT NULL),

         컬럼컬럼 2_데이터타입(NULL, NOT NULL),

);

 

테이블 복사

CREATE TABLE 테이블명 AS (서브쿼리)

 

테이블 변경

ALTER TABLE 테이블 명 (변경 할 것들)

1.     컬렴명 변경

ALTER TABLE 테이블 명 RENAME COLUMN 변경전컬럼명 TO 변경후컬럼명;

2.     컬럼 타입 변경

ALTER TABLE 테이블 명 MODIFY 컬럼명 데이터타입;

3.     컬럼 추가

ALTER TABLE 테이블 명 ADD 컬렴명 데이터타입;

   4.     컬럼 삭제

ALTER TABLE 테이블 명 DROP COLUMN 컬럼명;

5.     제약조건 추가

ALTER TABLE 테이블 명 ADD CONSTRAINTS 제약조건명 (제약조건) (컬럼명);

6.     제약조건 삭제

ALTER TABLE 테이블 명 DROP CONSTRAINTS 제약조건명;

 

테이블 삭제

DROP TABLE 테이블명;

 

 

컬럼의 데이터 타입

데이터 타입

설명

VARCHAR2( 크기 [byte or char] )

가변길이 문자최대 4000byte, 기본 값 1byte

NUMBER[ (p[,s]) ]

가변숫자 p(1~38 기본 38) s(-84~127 기본 0) 십진수 기준 최대 22byte

FLOAT[(p)]

NUMBER의 하위타입, p는 1~128 기본값 128 이진수 기준 최대 22byte

DATE

BC 4712년 1월 1일부터 9999년 12월 31,,,,,초까지 입력 가능

NULL or NOT NULL

등호를 쓰는 것이 아닌 IS NULL이나 IS NOT NULL을 쓴다.



컬럼의 제약조건

1.     NOT NULL  해당 컬럼에는 반드시 데이터를 입력해야 하는 제약조건이다.

2.     UNIQUE 해당 테이블에 중복 값을 허용하지 않는 제약조건이다.

컬럼명 데이터타입 UNIQUE     또는

CONSTRANINTS 제약조건명 UNIQUE ( 컬럼명 )

3.     PRIMARY KEY(기본키) NOT NULL과 UNIQUE 제약조건을 합친 제약조건이다.

컬럼명 데이터타입 PRIMARY KEY    또는

CONSTRAINTS 제약조건명 PRIMARY KEY (컬럼명)

4.     FOREIGN KEY(외래키) 테이블 간의 참조 데이터 무결성을 위한 제약조건이다.

CONSTRAINTS 외래키명 FOREIGN KEY (컬럼명) REFERENCES 참조 테이블(참조 테이블 컬럼명)

5.     CHECK 컬럼에 입력될 데이터가 특정조건을 만족해야 입력되는 제약조건

CONSTRAINTS 체크명 CHECK (제약조건)

+ Recent posts