데이터베이스 설계 및 구축 은행 데이터베이스 설계.

Slides:



Advertisements
Similar presentations
ER Schema (추가)
Advertisements

Nested Queries CSED421: Database Systems Labs.
PARK SUNGJIN Oracle 설치 PARK SUNGJIN
DB 프로그래밍 학기.
DB 프로그래밍 학기.
You YOungseok 데이터베이스 테이블 및 인덱스 You YOungseok.
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
Database Laboratory, Hong Ik University
MS-Access의 개요 1강 MOS Access 2003 CORE 학습내용 액세스 응용 프로그램은 유용한 데이터를
질의어와 SQL 기본 SQL 고급 SQL 데이타의 수정 데이타 정의 언어 내장 SQL
관계 대수와 SQL.
Database & Internet Computing Laboratory 한 양 대 학 교
데이터 베이스 설계 및 실습 #1 - 오라클 설치 및 SQL 기본.
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
4장. 관계 대수와 SQL SQL 관계 데이터 모델에서 지원되는 두 가지 정형적인 언어
제 09 장 데이터베이스와 MySQL 학기 인터넷비즈니스과 강 환수 교수.
SQL 개요 SQL 개요 - SQL은 현재 DBMS 시장에서 관계 DBMS가 압도적인 우위를 차지하는 데 중요한 요인의 하나
데이터베이스 담당교수 신정식 Chapter 4 SQL(1).
12장 데이터 읽기 일관성과 락.
6장 Mysql 명령어 한빛미디어(주).
MySQL 및 Workbench 설치 데이터 베이스.
(개정판) 뇌를 자극하는 Red Hat Fedora 리눅스 서버 & 네트워크
11장. 데이터베이스 서버 구축과 운영.
14장 질의응답 한빛미디어(주).
기본적인 SELECT문 작성.
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
11 테이블 관리와 데이터 딕셔너리 데이터베이스 응용 프로젝트 개발 테이블 구조 변경 데이터 딕셔너리.
3장. 데이터베이스 구축의 전체 과정 미리 실습하기
테이블 : 데이터베이스를 구성하는 요소로 같은 성격에 정보의 집합체. 레코드 : 하나의 정보를 가지고 있는 컬럼의 집합체
5장 Mysql 데이터베이스 한빛미디어(주).
4.2 SQL 개요 SQL 개요 SQL은 IBM 연구소에서 1974년에 System R이라는 관계 DBMS 시제품을 연구할 때 관계 대수와 관계 해석을 기반으로, 집단 함수, 그룹화, 갱신 연산 등을 추가하여 개발된 언어 1986년에 ANSI(미국 표준 기구)에서 SQL.
6장 그룹 함수.
07 그룹 함수 그룹 함수의 개념 그룹 함수의 종류 데이터 그룹 생성 HAVING 절.
3.2 SQL Server 설치 및 수행(계속) 시스템 데이터베이스 master
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
17강. 데이터 베이스 - I 데이터 베이스의 개요 Oracle 설치 기본적인 SQL문 익히기
MYSQL 설치 SQL언어 SQL언어의 활용 웹과 SQL언어와의 연동
질의 최적화 예제 선택연산과 추출 연산은 가급적 일찍 수행하라..
SQL.
KHS JDBC Programming 4 KHS
YOU Youngseok 트랜잭션(Transaction) YOU Youngseok
5장 Mysql 데이터베이스 한빛미디어(주).
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
You YoungSEok Oracle 설치 You YoungSEok
1장. 데이터베이스 자료의 조직적 집합체_데이터베이스 시스템의 이해
다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL
환경 설정 예제 데이터베이스 생성 - 그림 3.34의 SQL Server 관리 스튜디오 창의 왼쪽 영역의 데이터베
JA A V W. 03.
CHAP 13. 방명록 만들기 실습.
JDBC Lecture 004 By MINIO.
3장. SQL Server 2008 전체 운영 실습 및 DB와 프로그램의 연동
Chapter 03. 관계 데이터베이스 설계.
기말 프로젝트 계획 MVC 패턴 기반 웹 애플리케이션 개발 프로젝트명 : 팀명 : 팀원 :
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
06. SQL 명지대학교 ICT 융합대학 김정호.
문성우 SQL 실습 Part Ⅰ 문성우.
10 데이터 조작어 데이터 조작어 데이터 입력 데이터 수정 데이터 삭제 MERGE 트랜잭션 관리 시퀀스.
10 데이터 조작어 데이터 조작어 데이터 입력 데이터 수정 데이터 삭제 MERGE 트랜잭션 관리 시퀀스.
오라클 11g 보안.
14 뷰(View) 뷰의 개념 뷰 관리.
제 23 장 오라클에서 보안 기능.
Chapter 10 데이터 검색1.
11장 배열 1. 배열이란? 1.1 배열의 개요 1.2 배열의 선언과 사용.
ER-관계 사상에 의한 관계데이터베이스 설계 충북대학교 구조시스템공학과 시스템공학연구실
07. DB 설계 명지대학교 ICT 융합대학 김정호.
14 뷰(View) 뷰의 개념 뷰 관리.
 6장. SQL 쿼리.
6 객체.
Presentation transcript:

데이터베이스 설계 및 구축 은행 데이터베이스 설계

은행 데이터베이스 구축 목차 오라클(Oracle)을 이용한 실습 부록 데이터베이스 구축 절차 소개 요구 조건 분석 개념적 설계 논리적 설계 오라클(Oracle)을 이용한 실습 오라클 소개 데이터 정의어(DDL)의 이용 데이터 조작어(DML)의 이용 질의어(query)의 사용 부록 오라클의 특성과 사용법

데이터베이스 구축 절차 1-5번까지는 문서화 작업이다. 구축 목적을 정의한다. DB 구축에 필요한 요구사항을 수집한다. 수집된 요구사항을 정리하여, 요구사항 명세서를 작성한다. 요구사항 명세서를 기반으로, DB의 개념적 설계를 한다. Entity-Relation 다이아그램을 나타낸다. 논리적 설계를 한다. 구축할 DB의 데이터 모델에 맞춘다. 관계형, 네트워크형, 계층형, 객체지향형 본 예에서는 관계형 데이터 모델을 사용한다 개체와 관계를 테이블로 표현한다 속성의 특성을 정의한다. 속성들의 형(type)과 크기(size) 설계된 테이블에 맞게 예제(sample)를 작성한다. DBMS 제품을 이용하여 구축한다. 본 예에서는 오라클(Oracle)을 사용한다. DDL을 이용하여 데이터베이스를 정의한다. 논리적 설계된 테이블들을 구축한다. DML을 이용하여 데이터베이스를 조작한다. 앞에서 정의된 테이블에 예제를 적용한다. 질의어(query)로 구축된 데이터베이스를 조작하며, 질의어에 대한 학습과 구축된 데이터베이스 시스템의 전체적인 이해를 한다. 1-5번까지는 문서화 작업이다.

구축 절차 정리 문 서 화 작 업 실 습 작 업 계획 수립 요구 사항 분석 개념 설계 E-R 다이아그램 논리 설계 테이블 설계 문 서 화 작 업 요구 사항 분석 개념 설계 E-R 다이아그램 논리 설계 테이블 설계 데이터베이스 구축 실 습 작 업 오라클 이용 샘플 데이터 사용 DDL 이용 질의 DML 이용

소 개 은행 데이터베이스 설계(1) 제목 : 은행 데이터베이스 목적 은행 업무 소 개 은행 데이터베이스 설계(1) 제목 : 은행 데이터베이스 고객과 고객의 저축 예금 계좌에 관한 정보를 보관하는 은행 업무를 고려 목적 다수의 어플리케이션 프로그램을 가지는 은행 처리 업무에 효율성과 성능향상을 도모하기 위해, 각 어플리케이션이 요구하는 데이터들의 개별적인 파일 시스템의 관리보다는, 데이터베이스 시스템을 사용하여 파일 시스템이 가지는 단점을 극복하고, 은행 업무 처리에 편리하고 효율적인 환경을 제공하고자 한다. 은행 업무 필수 요소 고객 은행의 서비스를 이용할 고객이 존재한다. 은행 고객에게 서비스를 제공할 지점이 존재한다. 서비스 은행이 고객에게 제공할 수 있는 서비스가 존재한다. 저축 대출

요구사항 명세 은행 데이터베이스 설계(2) 요구 조건 분석 사용자 요구사항의 명세 은행(branch) 지점들로 구성 요구사항 명세 은행 데이터베이스 설계(2) 요구 조건 분석 사용자 요구사항의 명세 은행(branch) 지점들로 구성 각 지점은 특정 도시에 위치 지점명은 유일하게 식별 은행은 각 지점의 자산을 감사 은행 고객(customer) 은행은 이름과 거주하는 주소를 저장 계좌 소유와 대출이 가능 계좌(account) 은행이 제공 두 명 이상의 고객이 소유 가능 각 계좌는 유일한 계좌번호를 가짐 은행은 각 계좌의 잔고를 관리 대출(loan) 특정 지점에서 취급 한명 이상의 고객이 공동으로 대출 가능 유일한 대출번호로 식별 은행은 대출 금액과 대출 지불액을 관리

개념적 설계(1) 은행 데이터베이스 설계(3) 개체(엔티티,entity) account 개체와 관계 집합 정의 개념적 설계(1) 은행 데이터베이스 설계(3) 개체와 관계 집합 정의 개체(엔티티,entity) 계좌(account) 계좌번호(account-number) : 주키(primary key) 계좌개설 지점명(branch-name) 계좌잔액(balance) 지점(branch) 지점명(branch-name) : 주키(primary key) 지점 위치 도시(branch-city) 지점의 자산(assets) account-number branch-name balance account branch-name branch-city assets branch

개념적 설계(2) 은행 데이터베이스 설계(3) 고객(customer) 대출(loan) customer-name 개념적 설계(2) 은행 데이터베이스 설계(3) 고객(customer) 이름(customer-name) : 주키(primary key) 주소 customer-street customer-city 전제조건 : 같은 이름을 가진 고객이 존재하지 않는다. 대출(loan) 대출 지점명(branch-name) : 주키(primary key) 대출번호(loan-number) 대출금액(amount) customer-name customer-street customer-city customer branch-name loan-number amount loan

개념적 설계(3) 은행 데이터베이스 설계(3) 관계(릴레이션, relation) 예금(depositor) 개념적 설계(3) 은행 데이터베이스 설계(3) 관계(릴레이션, relation) 예금(depositor) 고객(customer)과 계좌(account)간의 고객이 계좌를 소유하고 있음을 의미 관련 엔티티 customer(고객) account(계좌) 대응수(mapping cardinality) : 다 대 다(many-to-many) 차용(borrower) 고객이 대출을 받았음을 의미 loan(대출) depositor customer 다 다 account borrower customer 다 다 loan

개념적 설계(4) 은행 데이터베이스 설계(3) 대출지점(loan-branch) 계좌개설지점(account-branch) 개념적 설계(4) 은행 데이터베이스 설계(3) 대출지점(loan-branch) 어떤 지점에서 대출이 되었는가를 의미 관련 엔티티 loan(대출) branch(지점) 대응수(mapping cardinality) : 다 대 일(many-to-one) 계좌개설지점(account-branch) 어떤 지점에서 고객이 계좌를 개설했는지를 의미 account(계좌) borrower loan 다 일 branch account-branch account 다 일 branch

개념적 설계(5) 은행 데이터베이스 설계(3) E-R 다이아그램 account-number branch-city balance 개념적 설계(5) 은행 데이터베이스 설계(3) E-R 다이아그램 account-number branch-city balance branch-name assets account-branch account branch depositor loan-branch borrower customer loan customer-city customer-name loan-number amount customer-street

논리적 설계(1) 은행 데이터베이스 설계(4) 관계형 데이터 모델링 테이블 account table customer table 논리적 설계(1) 은행 데이터베이스 설계(4) 관계형 데이터 모델링 테이블 account table customer table branch table loan table 지점명 계좌번호 잔액 branch_name account_number balance char(20) char(20) number(10) customer_name customer_street customer_city char(20) number(10) 고객명 거주 거리 거주 도시 branch_name branch_city assets char(20) number(10) 지점명 지점 도시 자산 branch_name loan_number amount char(20) number(10) 지점명 대출 번호 대출금

논리적 설계(2) 은행 데이터베이스 설계(4) depositor table borrower table 고객명 계좌번호 고객명 논리적 설계(2) 은행 데이터베이스 설계(4) depositor table borrower table 참고사항 account와 branch사이에 존재하는 ‘account-branch’ 관계와 branch와 loan사이에 존재하는 ‘loan-branch’관계는 실제 구현에 사용하지 않는다. customer_name account_number char(20) 고객명 계좌번호 customer_name loan_number char(20) 고객명 대출번호

논리적 설계(3) 은행 데이터베이스 설계(4) sample Bank Database account sample 논리적 설계(3) 은행 데이터베이스 설계(4) sample Bank Database account sample customer sample branch sample branch-name account-number balance Downtown Mianus Perryridge Round Hill Brighton Redwood A-101 A-215 A-102 A-305 A-201 A-222 A-217 500 700 400 350 900 750 customer-name customer-street customer-city Jones Smith Hayes Curry Lindsay Turner Williams Adams Johnson Glenn Brooks Green Main North Park Putnam Nassau Spring Alma Sand Hill Senator Walnut Harrison Rye Pittsfield Stamford Princeton Palo Alto Woodside Brooklyn branch-name branch-city assets Downtown Redwood Perryridge Mianus Round Hill Pownal North Town Brighton Brooklyn Palo Alto Horseneck Bennington Rye 9000000 2100000 1700000 400000 8000000 300000 3700000 7100000

논리적 설계(4) 은행 데이터베이스 설계(4) loan depositor borrower branch-name 논리적 설계(4) 은행 데이터베이스 설계(4) loan depositor borrower branch-name loan-number amount Downtown Redwood Perryridge Mianus Round Hill L-17 L-23 L-15 L-14 L-93 L-11 L-16 1000 2000 1500 500 900 1300 customer-name account-number Johnson Smith Hayes Turner Jones Lindsay A-101 A-215 A-102 A-305 A-201 A-217 A-222 customer-name account-number Johnson Smith Hayes Turner Jones Lindsay A-101 A-215 A-102 A-305 A-201 A-217 A-222

SQL 개요(1) 은행 데이터베이스 실습(1) 기본적인 SQL 구성 데이터 정의 언어(DDL) 릴레이션 스키마 정의 릴레이션 삭제, 인덱스 생성, 릴레이션 스키마 수정 대화형 데이터 조작 언어(DML) 관계형 대수와 튜플 관계형 해석에 기초한 질의어를 포함 데이터베이스 내의 튜플을 삽입, 삭제 및 수정 내포 DML PL/I, COBOL, Pascal, Fortran, C 와 같은 프로그래밍 언어에서 사용하기 위해 설계 뷰 정의 DDL은 뷰를 정의하는 명령문 포함 권한 부여 DDL은 릴레이션들과 뷰의 엑세스 권한을 기술 무결성 DDL은 무결성 제약 조건을 정의하는 명령문 포함 트랜잭션 제어 트랜잭션의 시작과 끝을 기술하는 명령문 포함

Oracle(1) 은행 데이터베이스 실습(2) Oracle 8i SQL DDL ALTER CLUSTER CREATE DATABASE DROP INDEX ALTER DATABASE CREATE DATABASE LINK DROP PACKAGE ALTER FUNCTION CREATE FUNCTION DROP PROCEDURE ALTER INDEX CREATE INDEX DROP PROFILE ALTER PACKAGE CREATE PACKAGE DROP ROLE ALTER PROCEDURE CREATE PACKAGE BODY DROP ROLLBACK SEGMENT ALTER PROFILE CREATE PROCEDURE DROP SEQUENCE ALTER RESOURCE COST CREATE PROFILE DROP SNAPSHOT ALTER ROLE CREATE ROLE DROP SNAPSHOT LOG ALTER ROLLBACK SEGMENT CREATE ROLLBACK SEGMENT DROP SYNONYM ALTER SEQUENCE CREATE SCHEMA DROP TABLE ALTER SNAPSHOT CREATE SEQUENCE DROP TABLESPACE ALTER SNAPSHOT LOG CREATE SNAPSHOT DROP TRIGGER ALTER TABLE CREATE SNAPSHOT LOG DROP USER ALTER TABLESPACE CREATE SYNONYM DROP VIEW ALTER TRIGGER CREATE TABLE GRANT ALTER USER CREATE TABLESPACE NOAUDIT ALTER VIEW CREATE TRIGGER RENAME ANALYZE CREATE USER REVOKE AUDIT CREATE VIEW TRUNCATE COMMENT DROP CLUSTER CREATE CLUSTER DROP DATABASE LINK CREATE CONTROLFILE DROP FUNCTION

Oracle(2) 은행 데이터베이스 실습(3) Oracle 8i SQL DML DELETE EXPLAIN PLAN INSERT LOCK TABLE SELECT UPDATE Oracle 8i SQL 트랜잭션 컨트롤 COMMIT ROLLBACK SAVEPOINT SET TRANSACTION Oracle 8i SQL 세션 컨트롤 ALTER SESSION SET ROLE Oracle 8i SQL 시스템 컨트롤 ALTER SYSTEM

DB 구축(1) 은행 데이터베이스 실습(4) Oracle 8i Server에 접속하기 SQL Plus 실행 시작메뉴프로그램  Oracle-OraHome81  Application Development  SQLPlus 로그온 창에 조별 아이디/암호/호스트 를 넣고 확인 버튼을 누른다.

DB 구축(2) 은행 데이터베이스 실습(5) 테이블 생성 depositor 테이블 생성 데이터베이스 접속 화면(버전 정보) create table 테이블 이름( 속성이름 속성타입, 속성이름 속성타입, … primary key(속성이름, 속성이름) ); customer_name account_number char(20) 고객명 계좌번호 데이터베이스 접속 화면(버전 정보)

DB 구축(3) 은행 데이터베이스 실습(6) 테이블 생성 앞장과 같은 방법으로 테이블 생성 CREATE TABLE borrower( customer_name varchar2(20) NOT NULL, loan_number varchar2(20) NOT NULL, PRIMARY KEY (customer_name, loan_number) ); CREATE TABLE loan( loan_number varchar2(20) NOT NULL, branch_name varchar2(20), amount number(10), PRIMARY KEY (loan_number), CHECK (amount >= 0) CREATE TABLE account( account_number varchar2(20) NOT NULL, branch_name varchar2(20), balance number(10) NOT NULL, PRIMARY KEY(account_number), CHECK(balance >= 0) CREATE TABLE customer( customer_name varchar2(20) NOT NULL, customer_street varchar2(20), customer_city varchar2(20), PRIMARY KEY(customer_name) CREATE TABLE branch( branch_name varchar2(20) NOT NULL, branch_city varchar2(20), assets number(10), PRIMARY KEY(branch_name), CHECK(assets >= 0)

DB 구축(4) 은행 데이터베이스 실습(7) 뷰 만들기 테이블과 뷰가 만들어졌는지 확인 CREATE VIEW ags AS SELECT DISTINCT account.balance, customer.customer_name FROM account, customer, depositor WHERE account.account_number = depositor.account_number and customer.customer_name = depositor.customer_name; select * from DB이름;

DB 구축(5) 은행 데이터베이스 실습(8) 테이블이나 뷰 삭제(drop) 뷰 삭제 테이블 삭제 주의사항 테이블 삭제하면, 모든 데이터를 잃게된다. drop view 뷰이름; drop table 테이블이름; ags 뷰를 삭제 account 테이블을 삭제

DB 구축(6) 은행 데이터베이스 실습(9) 테이블에 데이터 삽입(insert) branch 테이블에 ‘Downtown’, ‘Brooklyn’, 9000000)을 삽입하라. insert into 테이블이름 values( 속성값, 속성값, 속성값 ); 지점명 지점 도시 자산 branch_name branch_city assets char(20) char(20) number(10) Downtown Brooklyn 9000000 branch-name branch-city assets

DB 구축(7) 은행 데이터베이스 실습(10) 샘플 데이터 삽입(1) 모든 테이블에 데이터를 삽입한다. 주의사항 : 데이터값에 대해서는 대소문자 구분 insert into branch values('Redwood', 'Palo Alto', 2100000); insert into branch values('Perryridge', 'Horseneck', 1700000); insert into branch values('Mianus', 'Horseneck', 400000); insert into branch values('Round Hill', 'Horseneck', 8000000); insert into branch values('Pownal', 'Bennington', 300000); insert into branch values('North Town', 'Rye', 3700000); insert into branch values('Brighton', 'Brooklyn', 7100000); insert into customer values('Jones', 'Main', 'Harrison'); insert into customer values('Smith', 'North', 'Rye'); insert into customer values('Hayes', 'Main', 'Harrison'); insert into customer values('Curry', 'North', 'Rye'); insert into customer values('Lindsay', 'Park', 'Pittsfield'); insert into customer values('Turner', 'Putnam', 'Stamford'); insert into customer values('Williams', 'Nassau', 'Princeton'); insert into customer values('Adams', 'Spring', 'Pittsfield'); insert into customer values('Johnson', 'Alma', 'Palo Alto'); insert into customer values('Glenn', 'Sand Hill', 'Woodside'); insert into customer values('Brooks', 'Senator', 'Brooklyn'); insert into customer values('Green', 'Walnut', 'Stamford'); insert into account values('A-101', 'Downtown', 500); insert into account values('A-215', 'Mianus', 700); insert into account values('A-102', 'Perryridge', 400); insert into account values('A-305', 'Round Hill', 350); insert into account values('A-201', 'Brighton', 900); insert into account values('A-222', 'Redwood', 700); insert into account values('A-217', 'Brighton', 500);

DB 구축(8) 은행 데이터베이스 실습(11) 샘플 데이터 삽입(2) insert into loan values('L-17', 'Downtown', 1000); insert into loan values('L-23', 'Redwood', 2000); insert into loan values('L-15', 'Perryridge', 1500); insert into loan values('L-14', 'Downtown', 1500); insert into loan values('L-93', 'Mianus', 500); insert into loan values('L-11', 'Round Hill', 900); insert into loan values('L-16', 'Perryridge', 1300); insert into borrower values('Jones', 'L-17'); insert into borrower values('Smith', 'L-23'); insert into borrower values('Hayes', 'L-15'); insert into borrower values('Johnson', 'L-14'); insert into borrower values('Curry', 'L-93'); insert into borrower values('Smith', 'L-11'); insert into borrower values('Williams', 'L-17'); insert into borrower values('Adams', 'L-16'); insert into depositor values('Johnson', 'A-101'); insert into depositor values('Smith', 'A-215'); insert into depositor values('Hayes', 'A-102'); insert into depositor values('Turner', 'A-305'); insert into depositor values('Johnson', 'A-201'); insert into depositor values('Jones', 'A-217'); insert into depositor values('Lindsay', 'A-222');

DB 구축(9) 은행 데이터베이스 실습(12) 테이블내의 데이터 확인 branch 테이블에 삽입된 데이타들을 확인하라. select * from 테이블이름; branch 테이블에 삽입된 데이타들을 확인하라. 테이블에 삽입된 데이터 branch-name branch-city assets Downtown Redwood Perryridge Mianus Round Hill Pownal North Town Brighton Brooklyn Palo Alto Horseneck Bennington Rye 9000000 2100000 1700000 400000 8000000 300000 3700000 7100000

구축된 DB의 조작(1) 은행 데이터베이스 실습(13) SQL 예제 검색(SELECT) 형식 연산자 SELECT … <column names> FROM … <tables> WHERE … <condition> ORDER BY … <expression>  * : 쿼리를 대상으로 하는 테이블에서 모든 컬럼을 선택  COUNT(expr) : expr이 널이 아닌 행의 수를 리턴  COUNT(*) : 테이블에서 널을 포함한 행의 수를 리턴  ALL : 쿼리 및 집합에서 중복하는 값을 보존  DISTINCT : 쿼리의 결과에서 중복하는 행을 제외 loan 릴레이션에서 모든 지점들의 이름을 찾아라 SQL> SELECT branch_name FROM loan;

구축된 DB의 조작(2) 은행 데이터베이스 실습(14) loan 릴레이션에서 중복없이 모든 지점들의 이름을 찾아라 SQL> SELECT DISTINCT branch_name FROM loan; loan 릴레이션의 amount에 100을 곱한 릴레이션을 구하라. SQL> SELECT branch_name, loan_number, amount * 100 FROM loan; * select 절은 산술식과 상수 또는 튜플의 애트리뷰트에 대한 연산을 포함 할 수 있다.

구축된 DB의 조작(3) 은행 데이터베이스 실습(15) WHERE 사용 사용 가능한 조건 Where 절에서 사용되는 연산자 산술연산자 : ( ), +, -, *, / 비교연산자 : ( ), =, !=, ^=, <>, >,>=,<,<=,IN,NOT IN, ANY, ALL, 논리연산자 : ( ), NOT, AND, OR LINK 연산자 = Equal to <> Not equal to > Greater than >= Greater than or equal to < Less than <= Less than or equal to BETWEEN … AND … Between two values NOT BETWEEN … AND … Not Between two values IN(list) Equal to any member of the following list NOT IN(list) Not Equal to any member of the following list LIKE Match a character pattern using wildcard character IS NULL is a null value IS NOT NULL is not a null value

구축된 DB의 조작(4) 은행 데이터베이스 실습(16) Perryridge 지점의 대출중 대출 금액이 1,200$보다 큰 모든 대출 번호를 찾아라. SQL> SELECT loan_number FROM loan WHERE branch_name = ‘Perryridge’ and amount>1200; 은행에 있는 모든 고객의 이름과 대출 번호를 찾아라 SQL> SELECT DISTINCT customer_name, borrower.loan_number FROM borrower, loan WHERE borrower.loan_number = loan.loan_number * 어떤 애트리뷰트가 하나 이상의 릴레이션 스키마에 나타날 때는 <릴레이션명.애트리뷰트명> 의 표기법을 사용한다.

구축된 DB의 조작(5) 은행 데이터베이스 실습(17) 은행에 대출이 있는 모든 고객의 이름과 대출 번호를 찾아라. SQL> SELECT DISTINCT customer_name, T.loan_number FROM borrower T, loan S WHERE T.loan_number = S.loan_number; * FROM 절 안에 AS 절을 사용하여 튜플 변수 정의. ‘AS’는 생략 Brooklyn에 있는 지점들 중 적어도 하나의 지점보다 더 큰 자산을 가진 모든 지점을 찾아라. SQL> SELECT DISTINCT T.branch_name FROM branch T, branch S WHERE T.assets > S.assets and S.branch_city = ‘Brooklyn’;

구축된 DB의 조작(6) 은행 데이터베이스 실습(18) ‘Main’ 을 부 문자열로 가진 거리에서 사는 모든 고객 들의 이름을 찾아라 SQL> SELECT customer_name FROM customer WHERE customer_street LIKE ‘%Main%’ * 문자열의 연산 중 LINK 연산자를 사용하여 패턴 매칭을 수행하며 ‘%,_’ 의 특수 문자가 같이 사용된다. ‘%’ 문자는 모든 부 문자열과 일치하며, ‘_’ 문자는 하나의 문자와 일치한다. ‘NOT LINK’ 비교 연산자를 이용하면 일치 대신 불일치. loan 릴레이션에서 amount에 대해 내림차순으로 정렬하고, 같은 액수가 있을 경우 loan-number에 대해 오름차순으로 정렬하라. SQL> SELECT * FROM loan ORDER BY amount DESC, loan_number ASC * ORDER BY 절을 사용하여 튜플들의 보여지는 순서를 제어

구축된 DB의 조작(7) 은행 데이터베이스 실습(19) 은행에 대출과 계좌를 모두 가지고 있는 모든 고객을 찾아라. SQL> (SELECT DISTINCT customer_name FROM depositor) INTERSECT (SELECT DISTINCT customer_name FROM borrower); * 집합연산 : union, intersect, except 연산이 가능하다. 각 지점의 평균 예금 잔고를 찾아라. SQL> SELECT branch_name, AVG(balance) FROM account GROUP BY branch_name; * 집합함수 : avg( ), min( ), mix( ), sum( ), count( )

구축된 DB의 조작(8) 은행 데이터베이스 실습(20) Brooklyn에 위치한 모든 지점들보다 더 많은 자산을 가지고 있는 모든 지점을 찾아라. SQL> SELECT branch_name FROM branch WHERE assets > ALL (SELECT assets WHERE branch_city = ‘Brooklyn’); * 결과 없음 Perryridge 지점의 모든 계좌 튜플을 삭제하라. SQL> DELETE FROM account WHERE branch_name = ‘Perryridge’; * 1 행이 삭제 되었습니다. ( 확인 ) SQL>SELECT * FROM account;

구축된 DB의 조작(9) 은행 데이터베이스 실습(21) Perryridge 지점에 1200 불의 잔고를 가진 계좌 번호 A-9732를 삽입하라. SQL> INSERT INTO account VALUES(‘A-9732’, ‘Perryridge’, 1200); (확인) SQL> SELECT * FROM account; 모든 잔고에 5%씩의 이자를 지급하라. SQL> UPDATE account SET balance = balance * 1.05;

부 록 Oracle의 특성 참고 사항 Oracle 8i 데이터 타입 CHAR(N) 고정길이 문자열 저장 최대 길이 : 255 byte VARCHAR2(n) 가변길이 문자열 저장 최대 길이 : 2000 byte VARCHAR(n) 현재는 VARCHAR2 데이터 타입과 동일 추후 다른 용도로 사용 계획 중..(ORACLE) NUMBER(n) 정확도 : 38 자리 정수, 실수와 같은 자료형 자료 저장 범위 : 1.0 * 10E-130 ~ 999 * 10E125 INTEGER 정수형 범위 : 최대 38 자리 저장 가능 LONG 가변길이 문자열 2 GigaByte 까지 저장 가능 RAW, LOGN RAW 2 진 자료나 2 진 스트링에 대해 사용됨 그래픽, 이미지, 디지타이즈 음향등.

부 록 Oracle의 특성 날짜형(DATA) 데이터 타입 DATE 계산 SYSDATE 날짜와 시간에 대한 정보 저장 저장되는 정보는 세기.년.월.일.시.분.초 이며 7Byte 시간 자료는 24시간 형식으로 저장된다. DATE 필드에 대한 디폴트 날짜 : 그날의 A.M. 12:00:00 표준 오라클 DATE 형식은 DD-Mon-YY 이나 한글화로 인해 YY/MM/DD 등으로 표준 형식을 변경할 수 있다. DATE 계산 DATE 데이터 타입의 자료는 곱셈이나 나눗셈 연산은 할 수 없다. 덧셈과 나눗셈은 가능 예) sysdate+1 은 내일 sysdate-7 은 한주전 SYSDATE 함수는 현상태의 날짜와 시간을 구해준다 select sysdate from dual; 오라클은 DATE 데이터 타입의 연산을 위해 다양한 함수를 제공한다. ADD MONTHS : DATE 데이터 타입 자료의 월 부분을 더하거나 뺄 수 있다. MONTH BETWEEN : 두개의 날짜 사이의 달수를 계산한다. TO_DATE 함수로 표시 형식을 바꿀 수 있으며 DATE 항목에 시간을 입력하면 TO_DATE 함수를 이용해야 한다. SQL의 TRUNC 함수로 시간 표시 부분을 무시하고 날짜들을 비교할 수 있다.

참고사항 참고 사이트 원광대학교 데이터베이스 및 분산 컴퓨팅 연구실 (실습자료 배포) 원광대학교 데이터베이스 및 분산 컴퓨팅 연구실 (실습자료 배포) http://blue.wonkwang.ac.kr 실습중 이해가 안가는 부분이 있으면 게시판을 통해 문의 바랍니다. Oracle Technology Network - OTN Korea http://technet.oracle.co.kr/ SQL 매뉴얼 (추천) http://database.sarang.net/database/oracle/sqlplus/index.htm 질의 응답, 상당이 많은 오라클 문서 http://database.sarang.net/ 오라클 문서는 오른쪽 메뉴의 ‘일반메뉴-데이터베이스’