달력

12025  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

'Legend 개발자/Oracle'에 해당되는 글 23건

  1. 2017.06.01 No.003 데이터 제한과 정렬 [2017-06-02]
  2. 2017.06.01 No.002 데이터의 검색 [2017-06-01]
  3. 2017.06.01 No.001 관계형 데이터베이스 [2017-06-01]

1. 특정 행의 검색

 일반적인 경우 테이블에 있는 모든 자료를 조회할 필요 없이 사용자가 원하는 자료를 조회하는 경우가 대부분 입니다. 이러한 질의를 만족하게 하는 것이 WHERE 절입니다. WHERE 절은 수행될 조건 절을 포함하며 FROM절 바로 다음에 기술됩니다.

 

1.1 Syntax

DiSTINCT    중복 행 제거 옵션

*               테이블의 모든 column 출력

alias           해당 column에 대한 다른 이름 부여

table_name  테이블명 질의 대상테이블 이름

WHERE       조건을 만족하는 행들만 검색

condition     column명, 표현식, 문자 상수, 숫자 상수, 비교 연산자로 구성된다.

ORDER BY   질의 결과 정렬을 위한 옵션(ASC: 오름차순(Default), DESC내림차순)

 

1.2 WHERE 절에 사용되는 연산자

 1) WHERE 절을사용하여 행들을 제한할 수 있다.

 2) WHERE 절은 FROM 절 다음에 온다.

 3) 조건은 아래의 것으로 구성된다.

  ① column 명, 표현식, 상수

  ② 비교 연산자, SQL 연산자, 논리연산자

  ③ 문자(Literal)

 

1.2.1 비교 연산자

 연산자

의 미 

같다 

보다 크다 

>= 

보다 크거나 같다 

보다 작다 

<= 

보다 작거나 같다 

<>, !=, ^= 

같지 않다 

NOT Column_name = 

같지 않다 

NOT Column_name > 

보다 크지 않다 

 

문제 1) EMP 테이블에서 급여가 3000 이상인 사원의 정보를 사원번호, 이름, 담당업무, 급여를 출력하여라

 

문제 2) EMP 테이블에서 담당 업무가 Manager 인 사원의 정보를 사원번호, 성명, 담당업무 급여, 부서번호를 출력하여라.

 

문제 3) EMP 테이블에서 입사일자가 1982년 1월 1일 이후에 입사한 사원의 정보를 사원번호, 성명, 담당업무, 급여, 입사일자, 부서번호를 출력하여라

 

참고

 1) 문자STRING과 날짜 값은 단일 인용 부호(' ')를 사용한다.

 2) 문자 값은 대소문자를 구분하고 날짜 값은 날짜 형식을 구분합니다.

 3) Default 날짜 형식은 'DD-MON-YY' 입니다

 

1.2.2 SQL 연산자

 연산자

설명 

BETWEEN a AND b 

a 와 b 사이에 있다.(a,b값 포함)  

IN (list) 

list의 값 중 어느 하나와 일치한다. 

LIKE 

문자 형태와 일치한다. (%,_사용) 

IS NULL 

NULL 값을 가졌다 

NOT BETWEEN a AND b 

a 와 b 사이에 있지 않다. (a,b값 포함하지 않음) 

NOT IN (list) 

list의 값과 일치하지 않는다. 

NOT LIKE 

문자 형태와 일치하지않는다 

NOT IS NULL 

NULL 값을 갖지 않는다. 

 

가) BETWEEN 연산자

  두 값의 범위에 해당하는 행을 촐력하기 위해 사용한다

 

문제 4) EMP 테이블에서 급여가 1250에서 1500 사이의 정보를 성명, 담당업무, 급여, 부서번호를 출력하여라

 

참고

 BETWEEN 연산자를 기술할 경우 명시된 값도 포함 된다. 또한 작은 값을 앞에 기술하고 큰 값은 뒤에 기술하여야 한다.

 

나) IN 연산자

 목록에 있는 값에 대해서 출력하기 위해 iN 연산자를 사용한다.

 

문제 5) EMP 테이블에서 사원번호가 7902,7788,7566인 사원의 정보를 사원번호, 성명, 담당업무, 급여, 입사일자를 출력하여라

다) LIKE 연산자

 1) 검색 STRING 값에 대한 와일드 카드 검색을 위해서 LIKE 연산자를 사용한다.

 2) 검색 조건은 LITERAL 문자나 숫자를 포함할 수 있다.

 3) '%'는 문자가 없거나 하나 이상의 문자를 '_'는 하나의 문자와 대치됩니다.

 4) 패턴 일치 문자를 조합할 수 있습니다.

 5) '%' 나 '_'에 대해서 검색하기 위해서는 Escape 식별자를 이용할 수 있습니다.

 

예) name에 값이 X_Y가 포함되어 있는 문자열을 조회하고자 할 경우 Escape를 사용한다

 

문제 6) EMP 테이블에서 입사일자가 82년도에 입사한 사원의 정보를 사원번호, 성명, 담당업무, 급여, 입사일자, 부서번호를 출력하여라

 

참고

 1) 기본 날짜 형식이 'YY-MM-DD'일 경우는 WHERE hiredate LIKE '82%';로 기술한다.

 2) SQL> ALTER SESSION SET NLS_DATE_FORMAT = 'YY-MM-DD'; 명령어로 연결되어 있는 SQL*Plus 창(SESSION)에서 날짜 타입을 바꿀 수 있다.

 

라) IS NULL 연산자

 NULL 값은 값이 없거나, 알 수 없거나, 적용할 수 없다는 의미이므로 NULL 값을 조회하고자 할경우에 사용한다.

 

문제 7) EMP 테이블에서 보너스가 NULL인 사원의 정보를 사원번호, 성명, 담당업무, 급여, 입사일자, 부서번호를 출력하여라

1.2.3 논리 연산자

 연산자

의미 

AND 

양쪽 컴포넌트의 조건이 TRUE이면 TRUE를 RETURN합니다. 

OR 

한쪽 컴포넌트의 조건만이 TRUE이면 TRUE를 RETURN 합니다 

NOT 

이후의 조건이 FALSE이면 TRUE를 RETURN합니다. 

 

가. AND 연산자

 1) 양쪽의 조건이 참이어야 TRUE를 RETURN한다.

 2) 다음의 테이블은 AND로 두개의 표현식을 조합한 결과를 보여 준다.

AND 

TRUE 

FALSE 

NULL 

TRUE 

TRUE 

FALSE 

NULL 

FALSE 

FALSE 

FALSE 

FALSE 

NULL 

NULL 

FALSE 

NULL 

 

문제 8) EMP 테이블에서 급여가 1100이상이고 JOB이 Manager인 사원의 정보를 사원번호, 성명, 담당업무, 급여, 입사일자, 부서번호를 출력하여라

 

나) OR 연산자

 1) 한쪽의 조건만 참이면 TRUE를 RETURN한다.

2) 다음의 테이블은 OR로 두개의 표현식을 조합한 결과를 보여 준다.

OR 

TRUE 

FALSE 

NULL 

TRUE 

TRUE 

TRUE 

TRUE 

FALSE 

TRUE 

FALSE 

NULL 

NULL 

TRUE 

NULL 

NULL 

 

문제9) EMP테이블에서 급여가 1100 이상이거나 JOB 이 Manager 인 사원의 정보를 사원번호, 성명, 담당업무, 급여, 입사일자, 부서번호를 출력하여라

 

다) NOT 연산자

 1) NOT연산자 우측의 값이 거짓이면 TRUE를 RETURN한다.

 2) 다음의 테이블은 NOT으로 두개의 표현식을 조합한 결과를 보여 준다.

OR 

TRUE 

FALSE 

NULL 

 

FALSE 

TRUE 

NULL 

 

문제 10) EMP 테이블에서 급여가 JOB이 Manager, Clear, Analyst 가 아닌 사원의 정보를 사원번호, 성명, 담당업무, 급여, 부서번호를 출력하여라

참고

 NOT 연산자는 BETWEEN, LIKE, IS NULL 과 같은 다른 SQL 연산자와 함께 사용될 수 있습니다.

 

1.3.4 우선 순위 규칙

 1) 괄호

 2) 모든 비교 연산자

 3) NOT

 4) AND

 5) OR

 

문제 11) 업무가 PRESIDENT 이고 급여가 1500 이상이거나 업무가 SALESMAN인 사원의 정보를 사원번호, 이름, 급여를 출력하여라.

 

문제 12) 업무가 PRESIDENT 또는 SALESMAN이고 급여가 1500 이상이거나 사원의 정보를 사원번호, 이름, 업무, 급여를 출력하여라.

 

2. ORDER BY 절

 질의 결과에 RETURN 되는 행의 순서는 정의되지 않습니다. ORDER BY 절은 행을 정렬하는데 사용할 수 있습니다. ORDER BY 절 사용하는 경우 SELECT 문의 맨 두에 기술되어야 합니다. 정렬을 위한 표현식이나 Alias을 명시할 수 있습니다.

 

2.1 Syntax

ORDER BY    검색된 행이 출력되는 순서를 명시합니다.

ASC            행의 오름차순 정렬(Default)

DESC           행의 내림차순 정렬

 

참고

 ORDER BY 절이 사용되지 않았다면, 정렬 순서가 정의되지 않은 것이며 오라클 서버는 똑같은 질의를 두 번 실행했을 때 행을 똑같은 순서로 나타내지 않을 수도 있습니다.

 

2.2 데이터의 정렬

 1) 디폴트 정렬은 오름차순입니다:

  ① 숫자 값은 가장 적은 값이 먼저 출력됩니다. (예 : 1~999)

  ② 날짜 값은 가장 빠른 값이 먼저 출력됩니다. (예 : 01-JAN-92 ~ 01-JAN-95)

  ③ 문자 값은 알파벳 순서로 출력됩니다. (예 : A ~ Z ~ a ~ z)

  ④ Null 값은 오름차순에서는 제일 나중에 그리고 내림차순에서는 제일 먼저 옵니다.

 2) 디폴트 순서 변경

  ① 행이 디스플레이 되는 순서를 바꾸기 위해서, ORDER BY 절에서 열 이름 뒤에 DESC 키워드를 명시해야 합니다.

 

문제 13) EMP 테이블에서 입사일자 순으로 정렬하여 사원번호, 이름, 업무, 급여, 입사일자, 부서번호를 출력하여라,

 

문제 14) EMP 테이블에서 가장 최근에 입사한 순으로 사원번호, 이름, 업무, 급여, 입사일자, 부서번호를 출력하여라.

 

2.2.1 다양한 정렬 방법

 

2.3 다중 열에 의한 정렬

 1) 하나 이상의 열로 질의 결과를 정렬할 수 있습니다.

 2) 주어진 테이블에 있는 개수까지만 가능합니다.

 3) ORDER BY 절에서 열을 명시하고, 열 이름은 콤마로 구분합니다.

 4) 열의 순서를 바꾸고자 한다면 열 이름 뒤에 DESC를 명시합니다.

 5) SELECT절에 포함되지 않는 열로 정렬할 수도 있습니다.

 

문제 15) EMP ㅌ이블에서 부서번호로 정렬한 후 부서번호가 같을 경우 급여가 많은 순으로 정렬하여 사원번호, 성명, 업무, 부서번호, 급여를 출력하여라.

 

문제 16) EMP 테이블에서 첫번째 정렬은 부서번호로 두번째 정렬은 업무로 세번째 정렬은 급여가 많은 순으로 정렬하여 사원번호, 성명, 입사일자, 부서번호, 업무, 급여를 출력하여라.

Posted by 전설의아이
|

1. 기본적인 SELECT문 사용법

 SELECT 문장을 이용하여 데이터베이스로부터 저장되어 있는 데이터를 검색하는 방법에 대하여 알아보기로 한다.

 

1.1 SQL SELECT 문장의 성능

 1) Seletion : 질의에 대해 RETURN 하고자 하는 테이블의 행을 선택하기 위해 SQL 의 Selection 기능을 사용할 수 있습니다.

 2) Projection : 질의에 대해 RETURN 하고자 하는 테이블의 열을 선택하기 위해 SQL의 Projection 기능을 사용할 수 있습니다.

 3) Join : 공유 테이블 양쪽의 열에 대해 링크를 생성하여 다른 테이블에 저장되어 있는 데이터를 함께 가져오기 위해 SQL의 join 기능을 사용할 수 있습니다.

 

1.2 Syntax

 DISTINCT   중복 행 제거 옵션

 *              테이블의 모든 column 출력

 alias          해당 column에 대한 다른 이름 부여

 table_name 테이블명 질의 대상 테이블 이름

 WHERE      조건을 만족하는 행들만 검색

 condition   column, 표현식, 상수 및 비교 연산자

 ORDR BY   질의 결과 정렬을 위한 옵션(ASC:오름차순(Default),DESC내림차순)

 

 1.3 SQL 문장 작성법

 1) SQL 문장은 대소문자를 구별하지 않습니다.

 2) SQL 문장은 한 줄 또는 여러 줄에 입력될 수 있습니다.

 3) 하나의 명령어는 여러 줄에 나누거나 단축될 수 없습니다.

 4) 절은 보통 읽고 편집하기 쉽게 줄을 나누도록 합니다. (권장)

 5) 탭과 줄 넣기(들여쓰기)는 코드를 보다 읽기 쉽게 하기 위해 사용됩니다. (권장0

 6) 일반적으로 키워드는 대문자로 입력합니다. 다른 모든 단어, 즉 테이블 이름, 열 이름은 소문자로 입력합니다. (권장)

 7) SQL*Plus 에서 SQL 문장은 SQL 프롬프트에 입력되며 1라인 이후의 라인은 라인 번호가 붙습니다. 가장 최근의 명령어가 1개가 SQL buffer에 저장됩니다.

 

1.4 SQL 문장 실행

 1) 마지막 절의 끝에 ";"를 기술하여 명령의 끝을 표시한다.

 2) 버퍼에서 마지막 라인에 슬래시를넣습니다. (OS의 Editor 사용시)

 3) SQL 프롬프트에 슬래시를 입력합니다. (SQL Buffer의 내용 실행)

 4) SQL 프롬프트에서 SQL*Plus RUN 명령어를 실행합니다. (SQL Buffer의 내용 실행)

 

 

1.5 모든 열 선택

 SELECT 키워드에 "*"을 사용하여 테이블의 열 데이터 모두를 조회할 수 있습니다.

 

문제 1) SCOTT이 소유하고 있는 EMP Table의 모든 자료를 출력하여라.

 

1.6 특정 Column 선택

 테이블의 특정 Column을 검색하고자 할 경우 Column 이름을 ","로 구분하여 명시함으로써 특정 Column을 출력할 수 있습니다. 출력순서는 SELECT 문 뒤에 기술한 Column의 순서대로 출력됩니다.

 

문제 2) SCOTT 이 소유하고 있는 EMP Table 에서 사원 번호, 이름, 급여, 담당업무를 출력하여라.

 

1.7 Column의 출력 형태

 날짜 열 헤딩과 데이터 뿐만 아니라 문자 열 헤딩과 데이터는 열 폭 내에서 좌측 정렬됩니다. 숫자 헤딩과 데이터는 우측 정렬입니다.

 

1.8 산술 표현식

 데이터가 출력 되는 방식을 수정하거나 계산을 수행하고자 할 때 산술 표현식을 사용한다. 산술 표현식은 열 이름, 숫자 상수, 문자 상수, 산술 연산자를 포함할 수 있으며 연산자는 +(Add), -(Subtract), *(Multiply). /(Divide)을 사용합니다. SELECT 문장에서는 FROM절을 제외한 SQL 문장의 절에서 사용할 수 있습니다. 또한 산술 표현식이 하나 이상의 연산자를 포함한다면 일반적인 산술 연산자 우선 순위를 따른다.

 

문제 3) 모든 종업원의 급여를 $300 증가 시키기 위해 덧셈 연산자를 사용하고 결과에 SAL+300을 디스플레이 합니다.

 

참고

 계산된 결과 열 SAL+300 은 EMP 테이블의 새로운 열이 아님을 유의하십시오. 이것은 단지 디스플레이를 위한 것일 뿐입니다. 디폴트로 새로운 열의 이름 sal+300 은 생성된 계산식으로부터 유래합니다. 또한 SQL*Plus는 산술 연산자 앞뒤의 공백을 무시합니다.

 

1.9 Null 값의 처리

 행이 특정 열에 대한 데이터 값이 없다면, 값은 null이 됩니다. null 값은 이용할 수 없거나 지정되지 않았거나, 알 수 없거나 또는 적용할 수 없는 값입니다. null 값은 0 이나 공백과는 다릅니다. 0은 숫자이며 공백은 문자입니다. 열이 NOT NILL 로 정의되지 않았거나, 열이 생성될 때 PRIMARY KEY로 정의되지 않았다면, 어떤 데이터형의 열은 null 값을 포함할 수 있습니다. EMP 테이블의 COMM 열에서 오직 SALESMAN 만이 보너스를 받을 수 있음을 주목하십시오.

 

참고

 1) NULL은 이용할 수 없고 할당되지 않고 알려져 있지않고 적용 불가한 값을 의미한다.

 2) NULL이란 0이나 공백(space)과 다르다.

 3) 널 값을 포함한 산술 표현식 결과는 NULL이 된다.

 4) column에 데이터 값이 없으면 그 값 자체가 널 또는 널 값을 포함하고 있다.

 5) 넓 값은 1 바이트의 내부 저장 장치를 오버헤드로 사용하고 있으며 어떠한 datatype column 들이라도 널 값을 포함할 수 있다.

 

문제 4) EMP 테이블에서 사원번호, 이름, 급여, 보너스, 보너스 금액을 출력하여라

 

1.10 NVL 함수

 1) Null값을 어떤 특정한 값(실제 값)으로 변환하는데 사용한다.

 2) 사용될 수 있는 데이터 타입은 날짜, 문자, 숫자입니다.

 3) NVL 함수를 사용할 때 전환되는 값의 데이터 타입을 일치 시켜야 한다.

 

1.10.1 Syntax

expr1       Null 값을 포함하고 있는 Column이나 표현식

expr2       Null 변환을 위한 목표 값

 

1.10.2 다양한 데이터형에 대한 NVL 변형

 데이터형

변환 예 

NUMBER 

NVL(comm,0) 

DATE 

NVL(hiredate, '01-JAN-99') 

CHAR or VARCHAR2 

NVL(job, '업무없음') 

 

문제5) EMP 테이블에서 이름, 급여, 보너스, 연봉을 출력하여라

1.11 열에 별칭(Alias) 부여

 질의의 결과를 출력할 때 보통 SQL*Plus 는 열 Heading으로 선택된 열 이름을 사용합니다. 이 Heading은 때로 사용자가 이해하기가 어려운 경우가 있기 때문에 열 Heading을 변경하여 질의 결과를 출력하면 보다 쉽게 사용자가 이해할 수 있습니다.

 

1.11.1 열 별칭(Alias) 정의

 1) 열 Heading 이름을 변경 합니다.

 2) 계산에 유용합니다.

 3) 열 이름 바로 뒤에 사용합니다. 열 이름과 별칭 사이에 키워드 AS 를 넣기도 합니다.

 4) 공백이나 특수 문자 또는 대문자가 있으면 이중 인용부호(" ")가 필요 합니다.

 

문제6) EMP 테이블에서 ENAME를 NAME 로 SAL을 SALARY로 출력하여라

 

문제7) EMP 테이블에서 ENAME를 Name 로 SAL*12를 Annual Salary로 출력하여라

문제8) EMP 테이블에서 ENAME를 NAME로 SAL*12를 Annual Salary로 출력하여라

1.12 연결 연산자

 연결 연산자(||)를 사용하여 문자 표현식을 생성하기 위해 다른 열, 산술 표현식, 상수 값에 열을 연결 할 수 있습니다. 연결자의 왼쪽에 있는 열은 단일 결과 열을 만들기 위해 조합 됩니다.

 1) 열이나 문자 STRING을 다른 열에 연결 합니다.

 2) 두개의 "||"로 연결 합니다.

 3) 문자 표현식의 결과 열을 생성 합니다.

 

문제9) EMP 테이블에서 이름과 업무를 연결하여 출력하여라. 

 

1.13 LITERAL 문자 STRING

  LITERAL 은 열 이름이나 열 별칭이 아닌 SELECT 목록에 포함되어 있는 문자, 표현식, 숫자입니다. 그것은 RETURN 되는 각각의 행에 대해 출력됩니다. LITERAL 과 STRING 은 질의 결과에 포함될 수 있으며 SELECT 목록에서 열과 똑같이 취급됩니다. 날짜와 문자 LITERAL은 단일 인용 부호(' ')를 사용하여야 하고 숫자 LITERAL은 사용하지 않습니다.

 1) SELECT절에 포함된 LITERAL은 문자, 표현식, 숫자입니다

 2) 날짜와 문자 LITERAL 값은 단일 인용부호(' ')안에 있어야 합니다.

 3) 각각의 문자 STRING은 RETURN된 각 행에 대한 결과입니다.

 

문재 10) EMP 테이블에서 이름과 업무를 "KING is a PRESIDENT" 형식으로 출력하여라.

 

문제 11) EMP 테이블에서 이름과 연봉을 "KING: 1 Year salary = 60000" 형식으로 출력하여라

 

1.14 중복 행의 제거

 특별히 명시되지 않았다면, SQL*Plus 는 중복되지는 행을 제거하지 않고 Query 결과를 출력합니다. 결과에서 중복되는 행을 제거하기 위해서는 SELECT 키워드 바로 뒤에 DISTINCT를 기술한다.

 

문제 12) EMP 테이블에서 JOB을  모두 출력하여라

 

문제 13) EMP 테이블에서 담당하고 있는 업무의 종류를 출력하여라.

문제14) 부서별로 담당하는 업무를 한번씩 출력하여라.

Guidelines

 1) DISTINCT 라는 키워드는 항상 SELECT 바로 다음에 기술한다.

 2) DISTINCT 뒤에 나타나는 칼럼들은 모두 DISTINCT의 영향을 받는다.

 3) DISTINCT 뒤에 여러 개의 칼럼을 기술하였을 때 나타나는 행은 칼럼의 조합들이 중복되지 않게 나타난다.

 4) DISTINCT를 사용하여 나타나는 결과는 기본적으로 오름차순 정렬된다.

 

 

 

 

 

 

 

Posted by 전설의아이
|

0. 오라클 설치하기

- 오라클 install 준비 : DOS 창이 뜨면서 Oracle Univerasal Installer 시작한다고 뜸

- 오라클 메일주소 입력

- 오라클 설치 옵션 선택

- 오라클 시스템 클래스 선택 → 서버 클래스 선택

- 오라클 일반 설치 구성 → 소프트웨어 위치를 D드라이브로,  전역 데이터베이스 이름 : ora11로 지정, 비번은 까먹지 말기 → 비번 권장 표준은 무시 예~~

- 오라클 필요 조건 검사 수행 → 모두 무시 체크

- 오라클 요약

- 오라클 제품 설치

- 오라클 설치 후 SQL PLUS를 뜨게하면 된다.

 

 

1. 관계형 데이터베이스의 개념

 관계형 데이터 모델은 1970 년 6월 E.F.Codd 박사의 논문 " 대량 공용 데이터베이스의 관계형 모델"(A Relational Model of Data for Large Shared Data Bank)에서 처음으로 데이터베이스 시스템용으로 관계형 모델 도입을 제안했다. 그 당시 더 많이 알려진 데이터 모델은 Hierarchical Data Model, Network Data Model, 심지어 단순 형태의 파일 데이터 구조였다.

 RDBMS(Relational Database Management System)가 특히 사용의 용이, 구조상의 융통성 때문에 쉽게 대중화 되었고 게다가 총체적 해결을 제공하는 강력한 응용 프로그램 개발과 사용자 제품 군들을 RDBMS 로 가능하게 해주는 업체들이 나타났고 그 중 Oracle 이 대표적인 업체로 발전했다.

 

1.1 관계형 모델의 구성요소

 1) 데이터를 저장하는 객체(object) 또는 관계(relation)들의 집합

 2) 다른 관계를 생성하기 위해 관계에 가해지는 일련의 연산자 집합

 3) 정확성과 일관성을 위한 데이터의 무결성(Integrity)

 

1.2 관계형 데이터베이스 기능

 관계(relation)형 데이터베이스는 정보 저장을 위해 관계나 2자원 테이블을 이용한다.

 1) 데이터의 저장을 관리한다.

 2) 데이터에 대한 ACCESS을 통제한다.

 3) 데이터를 검색 및 수정하기 위한 수단을 제공한다.

1.3 관계형 데이터베이스의 정리

 1) E.F.Codd 박사는 1970년 데이터베이스 시스템용 관계형 모델을제안

 2) 제시한 관계형 모델은 관계형 데이터베이스 관리 시스템의 기본이 된다.

 3) 관계형 모델링은 다음 구성요소를 포함하고 있다.

  ① 객체(object)또는 관계(relation)의 집합

  ② 관계(relation)에 가해지는 연산의 집합

  ③ 정확성 및 일관성을 위한 데이터의 무결성

 4) 관계형 데이터베이스는 2차원 테이블 형태로 구성된다.

 5) 각 테이블은 Row 와 Column으로 구성되어 있다.

 6) 각 형의 데이터는 유일하다.

 7) 각 column은 데이터 무결성을 유지한다.

 8) SQL 명령어를 실행함으로 행들의 데이터를 조작 가능하다.

위의 Table EMPNO와 Table DEPTNO는 PK = Primary Key 라고도 불리며 중복이 될 수가 없다.

위의 DEPTNO는 외래키라고 하며 FK라고도 불린다. Table DEPTNO 키값을 받아서 사용한다. 참조키는 중복이 된다.

 

1.4 관계 데이터베이스에서 사용하는 용어

 관계형 데이터베이스는 한 개 이상의 테이블을 가지고 있고 이 테이블은 RDBMS 에서 기본 저장 구조입니다.

1. 특정 종업원에 대한 모든 데이터를 나타내는 단일 row 또는 tuple 입니다. 기본 키(primary key)에 의해 식별되어져야 합니다.

2. 기본 키(primary key)인 종업원 번호를 포함하는 열(column) 또는 속성(attribute)입니다. 종업원 번호는 EMP테이블에서 유일한(unique) 종업원을 식별합니다.

3. 키 값이 아닌 열 입니다. 열은 테이블에서 한 종류의 데이터를 나타냅니다.

4. 부서 번호를 포함하는 열은 외래 키(foreign key)입니다. 외래 키는 테이블 간에 서로 어떻게 관련되었는가를 정의합니다. 외래 키는 다른 테이블의 기본 키 또는 고유키를 참조합니다.

5. 필드(field)는 행과 열의 교차되는 곳에 있습니다.

6. 필드는 그 안에 값을 가지지 않을 수도 있습니다. 이것은 null value라 불립니다. EMP 테이블에서 영업 사원인 종업원만이 COMN(commission)필드에서 값을 가집니다.

 

1.5 다중 테이블 관계

 각 테이블은 하나의 ENTITY을 기술하는 데이터를 포함합니다. 데이터의 카테고리들은 각 테이블의 상단을 가로질러 LIST되며 개별 정보는 아래로 LIST 됩니다. 테이블 포맷을 사용하여 정보를 사용하고, 이해하며, 쉽게 시각화 할 수 있습니다. 다른 ENTITY에 대한 데이터는 다른 테이블에 저장되기 때문에, 특정 문제에 대한 해답을 얻기 위해 둘 또는 보다 많은 테이블을 결합시킬 필요가 있을 수 있습니다. RDBMS는 외래 키를 사용하여 하나의 테이블에 다른 데이터를 관련시킬 수 있도록 해 줍니다. 외래 키는 동일 테이블 또는 다른 테이블에서의 기본 키를 참조하는 열 또는 열의 집합입니다. 한 테이블의 데이터를 다른 테이블의 데이터로 관련시키는 능력은 개별적으로 관리되는 정보의 단위들을 조직할 수 있도록 해 줍니다. 종업원 데이터는 부서 테이블과 분리된 테이블에 저장됨으로써 부서 데이터로부터 논리적으로 구분될 수 있습니다.

 

Guidelines

- 기본 키와 외래 키

 1) 기본 키에서 중복 값은 허용되지 않습니다.

 2) 일반적으로 기본 키는 변경될 수 없습니다.

 3) 외래 키는 데이터 값을 기초로 하며, 논리적이지 물리적이거나 포인터가 아닙니다.

 4) 외래 키 값은 존재하는 기본 키 값 또는 고유 값과 일치해야 하거나, 또는 NULL이 될 수 있습니다.

 

1.6 관계형 데이터베이스의 속성

 1) 관계형 데이터베이스에서는 테이블로의 액세스 루트를 지정하지 않으며 또 물리적으로 데이터가 어떻게 나열되는지 알 필요가 없다.

 2) 데이터베이스를 이용하기 위해서는, 관계형 데이터베이스 가동시킬 수 있는 ANSI (American National Standards Institude) 표준 언어인 SQL(Structured Query Language)문을 실행해야 합니다. 이 언어는 관계(relation)를 조합, 분리 시킬 수 있는 일련의 큰 연산자 집합을 지니고 있습니다.

 3) 데이터베이스는 SQL 문 사용으로 변경이 용이하다.

 4) 데이터베이스는 데이터의 독립성을 보장한다.

 5) 관계형데이터베이스의 OBJECT의 종류는 다음과 같다.

 OBJECT

 설 명 

TABLE 

ROW 와 COLUMN으로 구성된 기본적인 저장 단위 

VIEW 

하나 이상의 TABLE로부터 논리적으로 데이터를 분류한 부분집합 

INDEX 

포인터를 사용하여 행의 검색 속도를 향상 

SEQUENCE 

자동적으로 ORACLE SERVER이 유일 번호를 생성 

SYNONYM 

객체에 대체 이름을 부여 

PROGRAM UNIT 

SQL 또는 PL/SQL 문으로 작성한 PROCEDURE, FUNCTION, PACKAGE

 

1.7 SQL 문장

SQL 로 서버와 통신이 가능하며 다음의 장점 등을 지니고 있습니다.

 1) 효율적입니다.

 2) 배우기 쉽고 사용 쉽습니다.

 3) 기능적으로 완전합니다. SQL은 테이블에 있는 데이터를 정의, 검색, 조작할 수 있게 해 줍니다.

 

2. ORACLE 관계형 데이터베이스 관리 시스템

 ORACLE SERVER의 특징은 관계형 구조에 근거한 모든 장점은 물론이고 프로그램 단위를저장하고 실행 하도록 하는 PL/SQL 엔진을 통해 정보를 저장하고 관리할 수 있게 해줍니다. 서버는 최적화를 바탕으로 데이터를 읽어 들이는 사용자 옵션을 제공, 데이터베이스가 어떻게 ACCESS 되고 사용되는지를 제어하는 보안 기능을 포함, Locking 기법을 통해 데이터의 일관성과 보호 기능을 가능하도록 하는 것입니다.

 ORACLE 어플리케이션은 ORACLE SERVER 과 동일한 컴퓨터에서 실행될 수 있으며 다른 방식으로는 Oracle7 Server는 다른 하나의 시스템에서 수행되고 어플리케이션은 사용자의 로컬 시스템에서 실행되는 크라이언트-서버 형태로 운영할 수 있습니다. 이런 클라이언트-서버 환경에서는 광범위한 컴퓨팅 리소스가 사용될 수 있습니다.

 최근에는 Oracle8 이 발표되었는데 이는 ORACLE에의해 개발된 첫 번째 객체 가능 데이터베이스 입니다. 이것은 새로운 ORDBMS를 지원하기 위하여 Oracle7 의 데이터 모델링능력을 확장합니다. Oracle8 은 객체 지향 프로그래밍, 복잡한 데이터 타입, 복잡한 비즈니스 객체, 실 세계와 완전히 양립 가능한 새 엔진을 제공합니다. Oracle8 은 많은 면에서 Oracle7 을 확장합니다. 런타임 데이터 구조를 더 많이 공유하고, 더 큰 버퍼 캐쉬를 잡고, 제약 조건을 지연 가능케 하는 등 OLTP(Online Transaction Processing)의 기능성과 성능을 향상시킵니다. 데이터 웨어하우스 어플리케이션은 삽입, 갱신, 삭제의 병렬 수행, 분할, 병렬 인식 질의 최적화 같은 성능 향상 측면에서 장점이 있습니다. NCA(Network Computing Architecture) 프레임 워크에서 작동 중인Oracle8 은 분산되고(distrubuted) 다중으로 고정된 (multitiered) 클라이언트-서버와 웹 기반 어플리케이션을 지원합니다. Oracle8 은 수십만의 동시 사용자를 조정할 수 있고 521petabytes까지 지원하며 전통적으로 구조화된 데이터 뿐만 아니라 텍스트, 공간 이미지, 사운드, 비디오, 일련의 시간을 포함하는어떤 타입의 데이터도 처리할 수 있습니다.

 

2.1 완전한 ORACLE 솔루션

 ORACLE RDBMS 는 ORACLE의 핵심 제품입니다. ORACLE SERVER과 데이터의 실제적인 사용, 모니터링, 유지 관리 등에 있어서 사용자를 돕기 위한 몇가지 툴들을 포함하고 있습니다. ORACLE 데이터 사전은 서버의 가장 중요한 구성요소로서 데이터베이스를 읽기 전용으로 참조할 수 있게 하는 VIEW과 테이블로 구성 되어 입니다. ORACLE의 RDBMS는 다음과 같은 일을 처리합니다.

 1) 데이터 정의와 저장을 관리

 2) 데이터 이용과 동시성 제어 및 제한

 3) 백업과 복구 제공

 4) SQl 과 PL/SQL 문 번역

 5) 시스템 보안 유지

 

3. SQL, SQL*Plus, PL/SQL

 SQL은 RDBMS를 사용하기 위해 ANSI에서 책정한 표준 언어로 Oracle 서버와 통신하기 위한 명령 언어이고 SQL*Plus 는 SQL 및 PL/SQL 문장을 인식하고 실행시켜주는 Oracle TOOL이다. PL/SQL Application Logic 추가하여 SQL을 확장한 Oracle의 절차적인 언어이다.

 

3.1 SQL

 ORACLE SQL은 ANSI(American Standards Institute)와 ISO(IntermationStandards Organization) 표준을 따릅니다. ORACLE 회사는SQL 표준 위원회에 주요 인사를 적극적으로 포함시켜, 변화, 발전하는 표준에 대한 미래 수용을 보증합니다. ANSI와 ISO는 관계형 데이터베이스 표준 언어로 SQL을 채택했습니다.

 

3.1.1 SQL 문장의 종류

 구분

문장 

설명 

Retruve(Query) 

SELECT 

데이터베이스로부터 데이터 검색 

DML(Data Manipulation Language 

INSERT

UPDATE

DELETE 

개별적으로 데이텁이스 테이블에서 새로운 행을 입력하고 기존의 행을 변경하고, 원치 않는 행을 제거 합니다. 

DDL(

Data 

Definition  Language)

CREATE

ALTER

DROP

RENAME

TRUNCATE 

데이터 구조를 생성, 변경, 제거합니다. 

Transaction Control Language

COMMIT

ROLLBACK

SAVEPOINT 

DML 명령문으로 만든 변경을 관리, 데이터 변경은 논리적 Transaction으로 함께 그룹화 될 수 있습니다. 

DCL(Data Control  Language)

GRANT

REVOKE 

ORACLE 데이터베이스와 그 구조에서 엑세스 권한을 제공하거나 제거합니다. 

 

3.1.2 SQL 문장의 특징

 1) 사용하기가 쉬워 프로그래밍에 별로 경험이 없는 사용자는 물론 다양한 이용자들이 사용할 수 있다

 2) 비절차적인 언어이다

 3) 시스템 개발 및 유지 보수에 의해 소요되는 시간을 줄일 수 있다.

 4) 영어와 유사한 언어이다

 

3.2 SQL*Plus

 SQLPlus는 SQL, PL/SQL문장을 인식하고 실행을 위해 서버에 넘겨주는 Oracle TOOL 로서 자체적인 명령 언어들을 갖고 있다.

 

3.2.1 SQL*Plus 문장의 종류

 구분

종류 

Execution Commands 

/, RUN, EXECUTE 

Edit Commands 

LIST, APPEND, CHANGE, DEL, INPUT, EDIT 

Environment Commands 

SET, SHOW, PAUSE 

Report Format Commands 

COLUMN, CLEAR, BREAK, COMPUTE, TTITLE, BTITLE 

File Manipulation Commands 

SAVE, GET, START, @, @@, SPOOL 

Interactive Commands 

DEFINE, UNDEFINE, PROMPT, ACCEPT, VARIABLE, PRINT 

Database Access Commands 

CONNECT, COPY, DISCONNECT 

Miscellaneous Commands 

 SQLPLUS, EXIT, HELP, DESCRIBE, HOST, REMARK, RUNFORM, TIMING, WHENEVER

 

3.2.2 SQL*Plus의 특징

 1) 수행하도록 입력한 문장들을 받아들인다.

 2) 파일에서 SQL 및 PL/SQL 입력 문을 받아들인다

 3) 라인 편집기로 SQL 문장을 편집한다

 4) 환경설정을 제어한다   

 5) 검색 결과를 보고서 형태로 형식 출력할 수 있도록 설정해 준다

 6) 최종 사용자와 상호 작용한다

 7) 원격지 데이터베이스(Remote database)를 액세스한다

 

3.3 PL/SQL(Procedural Language/SQL)

PL/SQL 은 ORACLE 회사의 SQL에 대한 절차적 확장입니다. 객체 관계형 데이터베이스에 대한 표준 데이터 Access 언어입니다. PL/SQL 은 데이터 캡슐화, 정보 숨김, 객체 지향 같은 현대적 소프트웨어 엔지니어링 기능을 제공하여 ORACLE SERVER과 툴 셋에 대한 최신식의 프로그래밍을 가능하게 합니다.

 PL/SQL 은 1970 년대와 1980 년대 사이에 설계된 프로그래밍 언어의 여러 향상된 기능을 포함합니다. PL/SQL을 강력한 트랜잭션 프로세싱 언어로 만듦으로써, SQL 데이터 조작 및 질의 문장이 블록 구조와 절차적 코드 단위에 포함되도록 합니다. PL/SQL 로 데이터를 처리하기 위해 PL/SQl 제어 명령문을 사용할 수도 있고, ORACLE 데이터를 처리하기 위해 SQL 명령문을 사용할 수도 있습니다.

 

3.3.1 PL/SQL 엔진과 Oracle Server

 PL/SQL 은 별개의 Oracle 제품이 아니라 Oracle 서버와 다른 Oracle 툴에 이용되고 있는 프로그래밍 언어이다. PL./SQL의 블록은 Oracle 서버나 툴에 내장되는 PL/SQL 엔진에 전달되어 처리된다. 사용하는 엔진은 PL/SQL 이 수행되는 곳에 따라 다르다.

 

 가) Oracle 서버에서의 PL/SQL 엔진

 Pro*프로그램, USER-EXIT, SQL*Plus, 또는 Server Manager 에서 PL/SQL 블록을 사용하면 Oracle 서버의 PL/SQL 엔진이 처리한다. 그리고 블록에 있는 SQL을 별도의 문장으로 분리하여 SQL 문 실행기로 보낸다. 이는 응용 프로그램의 블록을 한 번에 Oracle 서버에게 보낸다는 뜻이며 따라서 client/server 환경하에서 많은 성능 향상을 기대할 수 있다. 또한 데이터 베이스에 접속한 여러 응용 프로그램에서 stored subprogram 들을 참조할 수 있다.

 

 나) Oracle 툴에서의 PL/SQL

 Developer/2000을 포함한 많은 Oracle 툴은 Oracle 서버에 있는 엔진과는 별도로 자체 PL.SQL 엔진을 갖고 있다. 이 엔진이 SQL 분장을 찾아서 Oracle 서버의 SQL 문 실행기로 보내고, PL/SQL 엔진을 갖고 있다. 이 엔진이 SQL 분장을 찾아서 Oracle 서버의 SQL 문 실행기로 보내고, PL/SQL engine은 응용 프로그램에 대해 지역적인 데이터를 처리한다. 이로써 Oracle 서버의 대한 작업량과 요구되는 메모리 커서의 수를 줄인다. 

 

참고

 Developer/200 응용 프로그램의 부분으로 선언된 프로시저 와 함수의 일반적인 구조는 동일하더라도 데이터베이스에 저장된 것과는 다르다. Stored Subprogram 은 데이터베이스 객체이고 데이터 사전에 저장되며 여러 응용 프로그램이 사용할 수 있다. Application subprogram 그 응용 프로그램의 지역적인 PL/SQL 엔진에 블록을 전달한다. 작업은 서버 쪽이 아닌 응용 프로그램 쪽ㅇ서 수행된다.

 

3.3.2 PL/SQL 문장의 종류

 기본 PL/SQL 은 선언부, 실행부, 예외 처리부의 블록과 섹셔으로 구성되어 있다. 이들 중 실행부에서 사용할 수 있는 명령어들은 다음과 같다.

 구분

설명 

IF 

조건에 따라 선택적으로 작업을 수행 

Basic LOOP 

LOOP와 END LOOP 사이의 문장을 반복 수행 

FOR loop 

반복되는 수를 정하여 문장을 반복 수행 

WHILE loop 

제어 조건이 TRUE가 아닐 때까지 문장을 반복 수행 

 

3.3.3 PL/SQL의 특징

 1) SQL로는 얻을 수 없는 PL/SQL의 절차적 프로그래밍 기능

 2) 모듈화된 프로그램 개발

 ① 블록 내에서 논리적으로 관련된 문장들의 그룹화

 ② 강력한 프로그램을 작성하기 위해 서브 블록들을 큰 블록에 포함

 ③ 복잡한 문제에 대한 프로그래밍이 적절히 나뉘어진 모듈들의 집합으로 구성

 3) CURSOR, EXCEPTION

 ① 변수, 상수 등을 선언하고 SQL 과 절차적인 프로그램에서 사용

 ② 데이터베이스의 테이블과 Record를 기반으로 하는 dynamic한 변수 선언이 가능

 4)  절차적 언어 구조로 된 프로그램 작성

 ① 조건에 따라 일련의 문장을 실행(IF)

 ② 루프에서 반복적으로 일련의 문장을 실행(LOOP)

 ③ Explicit Cursor를 이용한 Multi-row 질의 처리

 5) ERROR 처리

 ① Exception 처리 루틴을 이용하여 ORACLE8 서버 에러를 처리함

 ② 사용자 정의 에러를 선언하고 Exception 처리 루틴으로 처리 가능 함

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Posted by 전설의아이
|