출처 : 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들의 값의 조합이다. |
Column | 한 Column은 Table상에서 단일 종류의 데이터를 나타내는데 예를 들자면 S_DEPT Table상에서 부서이름이 하나의 Column이 된다. |
Field | Row와 Column의 교차점에 Field가 있으며 Field는 데이터를 포함할 수 있으며 데이터가 없을 시 널 값을 갖고 있다고 말한다. |
Primary Key | Primary Key는 한 Table의 각각의 Row를 유일하게 식별해주는 Column 또는 Column의 조합이다. |
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 | 새로운 행의 추가, 기존 행의 변경 및 Table로부터 필요 없는 행의 삭제 기능을 각각 제공한다. |
CREATE, ALTER | 자료구조의 설정, 자료구조의 변경 및 테이블로부터 자료구조를 제거해 준다. 이러한 명령어들 데이터 정의어(DDL)라 한다. |
COMMIT | DML 문장에 의해 가해진 변화를 관리한다. |
GRANT | 데이터베이스 및 데이터베이스 내에서 구조에 대한 액세스 권한을 부여 및 박탈한다. 이러한 명령어들 데이터 제어어(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 | NOT NULL | NUMBER(7) | 부서번호 |
S_EMP | ID | NOT NULL | NUMBER(7) | 사원번호 |
S_CUSTOMER | ID | NOT NULL | NUMBER(7) | 고객번호 |
S_ORD | ID | NOT NULL | NUMBER(7) | 주문번호 |
S_PRODUCT | ID | NOT NULL | NUMBER(7) | 제품번호 |
S_WAREHOUSE | ID | NOT NULL | NUMBER(7) | 창고번호 |
S_INVENTORY | PRODUCT_ID | NOT NULL | NUMBER(7) | 제품번호 |
S_ITEM | ORD_ID | NOT NULL | NUMBER(7) | 주문번호 |
S_REGION | ID | NOT NULL | NUMBER(7) | 지역번호 |