본문 바로가기

.주제별/SQL,DB

SQL)강의- 제 1 장 SQL *PLUS 개요

출처 : http://naver.kaist.ac.kr/oracle_sql/s01.htm

 

1. 데이터베이스 개념

관계형 모델의 개념

    ◈객체(object) 또는 관계(relation)을 이용하여 데이터를 저장한다.
    ◈일연의 연산자들은 관계(relation)에 대해 집합연산을 하고 결과로서 다른 관계 (relation)를 돌려준다.
    ◈관계형 데이터베이스는 수용하고 있는 데이터베이스가 정확하고 일관성을 유지할 수 있도록 데이터
       무결성을  유지해야 한다.
    ◈관계(relation)의 구체적인 예가 테이블이며 테이블상으로부터 데이터 검색을 위해 관계형 연산을
       지원하는 SQL명령어를 사용한다.
     

관계형 데이터베이스 기능

    ◈데이터의 저장을 관리한다.
    ◈데이터에 대한 엑세스를 통제한다.
    ◈데이터를 검색 및 수정하기 위한 수단을 제공한다.
     

데이터베이스 용어

    개 념

    설 명

    Table

    Table은 RDBMS의 기본적인 저장구조로 한 개 이상의 Column과 0개 이상의 Row로 구성된다.

    Row

    Row는 Table의 Column들의 값의 조합이다.
    예를 들면 S_DEPT Table상에서 한 부서에 관련한 정보는 한 Row가 될 수 있다. Row는 가끔 레코드라고 불린다.

    Column

    한 Column은 Table상에서 단일 종류의 데이터를 나타내는데 예를 들자면 S_DEPT Table상에서 부서이름이 하나의 Column이 된다.
    Column은 특정 datatype 및 크기를 갖고 있다.

    Field

    Row와 Column의 교차점에 Field가 있으며 Field는 데이터를 포함할 수 있으며 데이터가 없을 시 널 값을 갖고 있다고 말한다.

    Primary Key

    Primary Key는 한 Table의 각각의 Row를 유일하게 식별해주는 Column 또는 Column의 조합이다.
    예를 들자면 부서번호는 Primary Key가 될 수 있으며 Primary Key는 Null값을 허용하지 않는다.

    Foreign Key

    Foreign Key는 같은 Table 또는 다른 Table의 Primary Key를 참조하는 단일 Column 또는 Column의 조합으로 구성되며 Foreign Key를 생성함으로써 관계형 데이터베이스 설계규칙을 따를 수 있다.

     

테이블 특성

    ◈하나의 단일 테이블은 Row들과 Column들로 구성된다.
    ◈Row들과 Column들의 교차점에 필드 값이 있다.
    ◈각각의 행은 Primary Key에 의해 식별된다.
    ◈Primary Key는 중복 행을 허용하지 않는다.
    ◈Row들의 순서는 중요하지 않으며 데이터는 삽입된 순서대로 정렬된다.
    ◈각 Column은 유일한 이름을 갖고 있다.
    ◈데이터 저장 시 Column 순서는 중요하지 않다.
    ◈검색 시에는 Column 순서를 명시해야 한다.
     

데이터베이스 객체

    객 체

    설 명

    Table

    Row들과 Column들로 구성된 기본적인 저장단위

    View

    논리적으로 한 개 이상의 Table 데이터의 부분집합을 나타낸다.

    Sequence

    Primary Key값을 생성한다.

    Index

    조회 시 성능을 향상시켜 준다.

    Synonym

    객체의 다른 이름

    Program unit

    프로시져, 함수, PL/SQL BLOCK

 

데이터 무결성 보장

    ◈데이터 무결성에 관한 제약사항은 데이터베이스를 정확하고 일관된 상태로 머무를 수 있는 연산만
       사용자가 수행할 수 있도록 보장해 준다.
    ◈모든 데이터 무결성에 관한 제약사항은 데이터베이스 서버 또는 응용소프트웨어에 의해 지켜져야 한다.

    무결성 제약 형태

    설    명

    Entity 무결성

    Primary Key의 어떠한 부분도 Null값이 될수 없으며 Primary Key의 값은 유일해야 함.

    Referential 무결성

    Foreign Key값은 Primary Key의 값과 일치해야 하거나 NULL값이 될 수 있다.

    Column 무결성

    Column 값은 정의된 Data Type과 일치해야 한다.

    사용자 정의 무결성

    값들은 Business Rule을 준수해야 한다.


오라클 서버(Oracle Server)

    ◈오라클이란 기술적 정보 요구사항을 위한 제품과 서비스를 제공하는 데이터베이스 회사이다.
    ◈오라클 서버의 특징은 관계형 구조에 근거한 모든 장점은 물론이고 프로시져나 트리거 같은
        데이터베이스 객체를 저장하고 실행할 수 있는 능력을 제공해주는 PL/SQL 엔진을 제공해주는
        정보를 저장하고 관리할 수 있게 해 준다.
    ◈서버는 사용자들에게 최적화 기법에 근거하여 데이터를 검색하는 사양을 제공해 주고 있다.
    ◈서버는 데이터베이스가 어떻게 액세스 되고 사용되는지 통제 가능한 보안기능을 포함하고 있으며
       Lock기능과 네트워크를 통해 분산된 데이터베이스에 대한 Two phase commit 과정을 통한
       데이터의 무결성과 보호기능도 제공해 주고 있다.
    ◈오라클의 응용프로그램은 Oracle 7서버가 가동되는 것과 같은 컴퓨터상에서 실행될 수 있으며
       다른 하나의 방식으로 Oracle7 서버는 다른 하나의 시스템에서 수행되고 응용프로그램은 사용자의
       로칼 시스템에서 실행되는 클라이언트-서버 형태로 운영할 수 있다.
    ◈클라이언트-서버 환에서는 다양한 컴퓨팅 자원이 사용될 수 있다
     

2. SQL과 SQL *Plus

SQL, SQL *Plus, PL/SQL

    언어 or Tool

    설 명

    SQL

    SQL(Structured Query Language)은 툴이나 응용프로그램에서 관계형 데이터베이스와 통신하기 위한 명령언어로써 읽을 때는 '시퀄' 또는 '에스큐엘'이라 한다.

    SQL *Plus

    SQL 및 PL/SQL문장을 인식하고 실행을 위해 서버에 넘겨 주는 오라클의 툴로서 자체적인 명령 언어들을 갖고 있다.

    PL/SQL

    응용프로그램 logic을 작성하고 데이터베이스 외부에서 데이터를 조작하기 위한 오라클의 절차적인 언어이다.


  ♣ SQL의 특징

    관계DB를 처리하기 위해 고안된 언어로 , 독자적인 문법을 갖는 DB표준언어이다.(ISO에서 지정)
       따라서 대다수 데이타 베이스는 SQL를 통하게 된다.
    ◈프로그래밍에 별로 경험이 없는 사용자는 물론 다양한 이용자들이 사용할 수 있다
    ◈비절차적인 언어이다
    ◈시스템 개발 및 유지보수에 의해 소요되는 시간을 줄일 수 있다
    ◈모든 명령의 끝은 ;으로 끝나야 한다.
    ◈여러줄에 입력할 수 있다.
    ◈가장 최근의 SQL명령은 SQL버퍼에 남아있다.
    ◈실행하려면 RUN이나 /를 누른다.
     

SQL *Plus의 특징

    SQL언어를 구현하여 오라클 RDBMS를 관리할 수 있는 오라클社의 CLIENT TOOL 제품명이다.
    ◈수행하도록 입력한 문장들을 받아들인다
    ◈파일에서 SQL 및 PL/SQL 입력문을 받아들인다
    ◈라인 편집기로 SQL 문장을 편집한다
    ◈환경설정을 제어한다
    ◈검색 결과를 보고서 형태로 형식 출력할 수 있도록 설정해 준다
    ◈최종 사용자와 상호 작용한다
    ◈원격지 데이터베이스(Remote database)를 액세스 한다
    ◈모든 명령의 끝은 ENTERKEY에 의해 끝난다.
    ◈ 명령의 끝에 ;을 붙여도 되고 생략해도 된다.
    ◈ LIST(L):버퍼의 내용을 보여준다.
    ◈SQL버퍼에 남아있지 않는다.

     

SQL명령어

    명령어

    설 명

    SELECT

    데이터베이스로부터 데이터를 검색하게 해 준다

    INSERT, UPDATE
    DELETE

    새로운 행의 추가, 기존 행의 변경 및 Table로부터 필요 없는 행의 삭제 기능을 각각 제공한다.
    이러한 명령들을 데이터 조작언어(DML)라 한다.

    CREATE, ALTER
    DROP, RENAME
    TRUNCATE

    자료구조의 설정, 자료구조의 변경 및 테이블로부터 자료구조를 제거해 준다. 이러한 명령어들 데이터 정의어(DDL)라 한다.

    COMMIT
    ROLLBACK,
    SAVEPOINT

    DML 문장에 의해 가해진 변화를 관리한다.
    데이터에 대한 변화는 논리적인 트랜잭션 단위로 그룹핑이 가능하다.

    GRANT
    REVOKE

    데이터베이스 및 데이터베이스 내에서 구조에 대한 액세스 권한을 부여 및 박탈한다. 이러한 명령어들 데이터 제어어(DCL)라 한다.


SQL*Plus 명령어

    설       명

    명령어

    SQL문장 수행 명령어

    /(SLUSH), RUN, EXECUTE

    SQL문장 EDIT 명령어

    LIST, APPEND, CHANGE, DEL, INPUT, EDIT

    환경 설정  명령어

    SET, SHOW, PAUSE

    REPORT FORMAT 명령어

    COLUMN, CLEAR, BREAK, COMPUTE, TTITLE, BTITLE

    FILE 관리  명령어

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

    Interactive  명령어

    DEFINE, UNDEFINE, PROMPT, ACCEPT, VARIABLE, PRINT

    데이터베이스 ACCESS

    CONNECT, COPY, DISCONNECT

    기  타  명령어

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


SQL과 SQL*Plus의 명령어의 비교

    SQL

    SQL*Plus

    오라클 서버와의 통신

    SQL 명령어의 인식

    데이터베이스 명령어의 사용 -SELECT

    데이터베이스 명령어가 아님

    SQL버퍼에 저장됨

    SQL 버퍼에 저장되지 않음

    포맷팅을 수행하는 함수 사용

    데이터를 형식화하기 위해 명령어 사용

     

3. LOG-IN과 TABLE 명세

윈도우 환경을 통한 로그인

    ◈윈도우 관리자에서 SQL *Plus의 Icon을 더블 클릭하고 난 뒤 아래와 같이 사용자이름, 패스워드,
      사용할 데이터베이스를 입력한다.(양쪽 모두 같은 형태임)

    윈도우 환경을 통한 로그인

      Unix 또는 Windows98/WindowsNT를 가동하여 OS 프롬프트에서 SQL *Plus 명령을 입력한다.
          Sqlplus  [username [/password [@database]]]

      명령어

      입력 예

      설         명

      UserName

      scott

      데이터베이스 사용자 이름

      Password

      tiger

      데이터베이스 패스워드(보안을 위하여 *****로 표시 됨)

      @database

      @oratst

      연결할 데이터베이스 Host string 예시(각자 틀림)

     

실습 예제를 위한 Table

TABLE명

COLUMN명

NULL?

DATATYPE

설 명

S_DEPT
(부서)

ID
NAME
REGION_ID

NOT NULL
NOT NULL
 

NUMBER(7)
VARCHAR2(25)
NUMBER(7)

부서번호
부서명
지역

S_EMP
(사원)

ID
LAST_NAME
FIRST_NAME
USERID
START_DATE
COMMENTS
MANAGER_ID
TITLE
DEPT_ID
SALARY
COMMISSION_PCT

NOT NULL
NOT NULL








 

NUMBER(7)
VARCHAR2(25)
VARCHAR2(25)
VARCHAR2(8)
DATE
VARCHAR2(255)
NUMBER(7)
VARCHAR2(25)
NUMBER(7)
NUMBER(11,2)
NUMBER(4,2)

사원번호
이름

UserID
입사일자
특기
관리자번호
직급
부서번호
월급여
상여금율(%)

S_CUSTOMER
(고객)

ID
NAME
PHONE
ADDRESS
CITY
STATE
COUNTRY
ZIP_CODE
CREDIT_RATING
SALES_REP_ID
REGION_ID
COMMENTS

NOT NULL
NOT NULL

NUMBER(7)
VARCHAR2(50)
VARCHAR2(25)
VARCHAR2(400)
VARCHAR2(30)
VARCHAR2(20)
VARCHAR2(30)
VARCHAR2(75)
VARCHAR2(9)
NUMBER(7)
NUMBER(7)
VARCHAR2(255)

고객번호
고객명
전화번호
주소(나머지)
주소(시)
주소(도)
주소(국적)
우편번호
신용도
영업사원번호
지역번호
참고

S_ORD
(주문)

ID
CUSTOMER_ID
DATE_ORDERED
DATE_SHIPPED
SALES_REP_ID
TOTAL
PAYMENT_TYPE
ORDER_FILLED

NOT NULL
NOT NULL





 

NUMBER(7)
NUMBER(7)
DATE
DATE
NUMBER(7)
NUMBER(11,2)
ARCHAR2(6)
VARCHAR2(1)

주문번호
고객번호
주문일자
선적일자
영업사원ID
지불방법

S_PRODUCT
(제품)

ID
NAME
SHORT_DESC
LONGTEXT_ID
IMAGE_ID
SUGGESTED_WHLSL_PRICE
WHLSL_UNITS

NOT NULL
NOT NULL




 

NUMBER(7)
VARCHAR2(50)
VARCHAR2(255)
NUMBER(7)
NUMBER(7)
NUMBER(11,2)
VARCHAR2(25)

제품번호
제품명
제품설명


제품가격
발송량

S_WAREHOUSE
(창고)

ID
REGION_ID
ADDRESS
CITY
STATE
COUNTRY
ZIP_CODE
PHONE
MANAGER_ID

NOT NULL
NOT NULL

NUMBER(7)
NUMBER(7)
LONG
VARCHAR2(30)
VARCHAR2(20)
VARCHAR2(30)
VARCHAR2(75)
VARCHAR2(25)
NUMBER(7)

창고번호
지역번호
주소(나머지)
주소(시)
주소(도)
주소(국적)
우편번호
전화번호
관리자번호

S_INVENTORY
(제고명세)

PRODUCT_ID
WAREHOUSE_ID
AMOUNT_IN_STOCK
REORDER_POINT
MAX_IN_STOCK
OUT_OF_STOCK_EXPLANATION
RESTOCK_DATE

NOT NULL
NOT NULL




 

NUMBER(7)
NUMBER(7)
NUMBER(9)
NUMBER(9)
NUMBER(9)
VARCHAR2(255)
DATE

제품번호
창고번호
재고금액
재주문시점
최대재고량
재고발생이유
제품재고일자

S_ITEM
(주문상세)

ORD_ID
ITEM_ID
PRODUCT_ID
PRICE
QUANTITY
QUANTITY_SHIPPED

NOT NULL
NOT NULL
NOT NULL


 

NUMBER(7)
NUMBER(7)
NUMBER(7)
NUMBER(11,2)
NUMBER(9)
NUMBER(9)

주문번호
주문상세번호
제품번호
가격
주문량
발송량

S_REGION
(지역)

ID
NAME

NOT NULL
NOT NULL

NUMBER(7)
VARCHAR2(50)

지역번호
지역명