Oracle 데이터베이스 실습

Download Report

Transcript Oracle 데이터베이스 실습

Oracle Database 실습
using Oracle 10g express
Database & System Integration Laboratory
1
목차
 Oracle 10g Express 설치
 SQL 문
 CREATE TABLE
 ORACLE 데이터타입
 DESCRIBE
 ALTER TABLE
 DROP TABLE
 INSERT INTO
 DELETE FROM
 UPDATE SET
 SELECT
 PL/SQL기초
 Cursor
2
Oracle 10g Express 설치
Part: 1
3
Oracle 10g Express 설치 (1)
다운로드주소:
 http://www.oracle.com/technology/software/products/database/xe/htdoc
s/102xewinsoft.html
1. Accept를 선택합니다.
2. 다국어인터페이스지원을
위하여 OracleXEUniv.exe
를 클릭합니다.
(바로 위의 OracleXE.exe는
유럽어만 지원됩니다.)
4
Oracle 10g Express 설치 (2)
보안경고에서 Yes를
선택합니다.
사용자 아이디와 패스워드를
입력한다. 만약 없는 경우 sign
up now를 클릭하여 새 계정을
등록합니다.
혹은 기존에 등록해 놓은 계정
을 사용할 수 있습니다.
Username: [email protected]
Password: emailme
5
Oracle 10g Express 설치 (3)
다운로드 완료 후 다운로드 한 폴더에서 OracleXEUniv 아이콘을
더블 클릭하여 설치를 시작합니다.
암호 입력 창이 나타나면 Oracle
관리에 필요한 SYS및 SYSTEM
계정 암호를 자체로 결정하여
입력합니다.
※ 암호설정에서 영어대소문자, 숫
자 외의 특수문자 @, #등을 사용하
지 말아야 합니다. 이런 특수문자는
“SQL 명령줄 실행”으로 데이터베
이스를 관리할 경우 로그인 실패를
가져오게 됩니다.
6
Oracle 10g Express 설치 (4)
 Oracle 10g Express의 설치는 일반 Windows 프로그
램의 설치표준을 따르며 화면에 나타나는 제시에
따라 설치를 진행하면 됩니다.
 설치가 완료되면 Windows “시작”메뉴에 아래와
같이 Oracle 10g Express 메뉴가 설치됩니다.
7
Oracle 10g Express 의 사용자계정
Oracle 10g Express(아래부터 Oracle XE로
약칭함)은 두 개의 주요 계정을 가집니다.
SYS계정은 Oracle의 대부분 테이블을 소유하고
데이터베이스의 시작과 중지를 할 수 있는 역할을
가집니다.
SYSTEM계정은 SYS사용자의 테이블을 바로 제
어하지 않고 테이블을 바탕으로 작성된 뷰를 소유
합니다.
8
Oracle 10g Express 관리방식
 Oracle XE는 두 가지 관리방식이 있습니다. 하나
는 웹 브라우저를 이용한 관리이고 다른 하나는
명령 줄을 이용한 관리입니다.
 웹 브라우저
을 이용하여
관리
 명령줄을 이
용하여 관리
9
웹 브라우저를 이용한 관리 (1)
시작메뉴의 “Database 홈페이지로 이동”을
선택하면 아래와 같은 화면이 나타납니다.
 설치완료 후 처음 사용 시
시스템에는 SYS 와
SYSTEM계정만 활성화 되
어있으므로 사용자이름은
SYS 혹은 SYSTEM을 입력
합니다. 사용자계정은 차후
필요에 따라 추가할 수 있
습니다.
 OracleXE를 설치 시 설정한
SYS혹은 SYSTEM계정의
비밀번호를 입력합니다.
10
웹 브라우저를 이용한 관리 (2)
로그인 후 화면은 아래와 같습니다.
11
명령줄을 이용하여 관리 (1)
 콘솔 창에 connect 를 입력하고 엔터를 누르면 로
그인 제시가 뜹니다.
 SYSTEM 계정은 그냥
SYSTEM을 입력하고 암
호를 입력하면 로그인 됩
니다.
12
명령줄을 이용하여 관리 (2)
 SYS계정은 “사용자 명 입력”에서
“SYS as SYSDBA” 혹은 “SYS as
SYSOPER” 이런 형식으로 로그인하
여야 합니다.
 SYSDBA는 데이터베이스의 시작과
종료 및 기타 관리 권한을 갖고 있는
Role입니다.
 SYSOPER은 SYSDBA 의 모든 기능
외에 데이터베이스 생성 권한을 갖고
있는 Role입니다.
 웹 브라우저를 이용한 관리와 명령 줄을 이용한
관리는 사용자의 취향에 따라서 선택하시면 됩니
다. 두 방식이 완성할 수 있는 기능은 같습니다.
아래 각 설명은 명령 줄 기반을 위주로 합니다.
13
새 사용자 추가
 데이터베이스 사용 시 기존의 관리용 SYS, SYSTEM계정을 직접 사용
하지 않고 새로 계정을 추가하여 테스트를 진행하는 것이 바람직합니
다.
 새 사용자 추가는 아래와 같이 하면 됩니다.
 Create user [USERID] identified by [PASSWORD] default tablespace users;
 사용자가 추가되면 권한을 부여해주어야 합니다.
 Grant [ROLE] to [USERID]
 예: 아래 그림은 test 사용자를 추가하고 권한을 부여하는 과정입니다.
14
SQL 문
Part: 2
15
테이블 생성: CREATE TABLE (1)
 형식:
CREATE TABLE 테이블이름 (
 칼럼 명1
데이터타입1 [NOT NULL],
 칼럼 명2
데이터타입2 [NOT NULL],
 …
 칼럼 명n
데이터타입n [NOT NULL],
 primary key (칼럼 명1, …, 칼럼 명m)
);
 ※ []로 표기한 부분은 선택입력항목임을 나타냅
니다.
16
테이블 생성: CREATE TABLE (2)
 예: customers 테이블을 만듭니다.
 create table customers (
 cid
char(4) not null,
 cname varchar(13),
 city
varchar(20),
 discnt
real
 );
17
Oracle의 데이터타입
 NUMBER (p, s): 숫자 타입, 전체 p자리 중 소수점
이하 s 자리.
 FLOAT(p): 실수 형 숫자타입, REAL = FLOAT(63)
 CHAR(n): 고정길이문자열데이터
 VARCHAR2(n): 가변길이 문자열데이터
 VARCHAR(n): VARCHAR2의 약칭사용
 RAW (n): n Byte의 이진데이터
 BLOB: 가변길이 이진 데이터
 DATE: 날짜타입, BC 4712/1/1 ~ CE 4712/12/31.
18
테이블정보보기: DESCRIBE
 형식:
DESC[RIBE] 테이블이름;
19
테이블 구조 변경: ALTER TABLE
 형식:
 새로운 칼럼을 추가하는 경우
 ALTER TABLE 테이블이름
 ADD (칼럼 명 데이터타입);
 존재하는 칼럼을 변경하는 경우
 ALTER TABLE 테이블이름
 MODIFY (기존의 칼럼이름 바꿀 데이터타입/크기);
20
테이블삭제: DROP TABLE
 기존의 테이블을 삭제합니다.
 형식:
 DROP TABLE 테이블이름;
21
데이터 추가: INSERT INTO
 형식:
INSERT INTO 테이블이름
[ (칼럼1, 칼럼2, … ) ]
VALUES( 값1, 값2, … )
 값과 칼럼은 서로 매칭되어야 합니다.
22
데이터 삭제: DELETE FROM
형식:
DELETE [FROM] 테이블이름
[WHERE 조건절 ]
23
데이터업데이트: UPDATE … SET
형식:
UPDATE 테이블이름
SET 칼럼1 = ‘값1’, 칼럼2 = ‘값2’, …
[WHERE 조건절 ];
Or
24
샘플데이터
 실습진행에 필요한 샘플데이터는 아래 주소에서 다운로드 할 수 있습니다.
 Create tables: http://dbsi.inha.ac.kr/www/course/db/oraclexe/create.sql
 Insert data: http://dbsi.inha.ac.kr/www/course/db/oraclexe/insert.sql
 쿼리 실행방법: 메모장 같은 텍스트편집도구로 해당 파일을 열고 파일내용을
전부 복사한 후 아래와 같이 명령줄 화면에 붙여 넣으면 됩니다.
타이틀 바에서 마우스
오른쪽 키 클릭, 붙여
넣기를 선택
전체선택, 복사
25
SELECT 문 (1)
형식:
SELECT [DISTINCT]
 {* | [칼럼1 [AS newName1]] [,...] }
FROM
테이블 이름 [alias] [, ...]
[WHERE
조건절 ]
[GROUP BY 칼럼리스트] [HAVING condition]
[ORDER BY 칼럼리스트]
26
SELECT 문 (2)
 테이블에 존재하는 모든 칼럼 조회하기
SELECT * FROM 테이블 이름
27
SELECT 문 (3)
 테이블에 존재하는 특정 칼럼 조회하기
SELECT 칼럼1, 칼럼2 … FROM 테이블이름
조회되는 레코드의 형태 제어하기
SELECT 칼럼1 as Newname1, 칼럼2 … FROM 테이블이름
28
SELECT 문 (4)
SELECT문은 일정 수량의 내장함수를 갖고
있습니다.
형식: SELECT 함수이름(변수) …
지원하는 함수 예:
AVG: 평균값을 구합니다.
COUNT: SELECT된 ROW의 수
SUM: 합계를 구합니다.
29
SELECT 문 (5)
조건절 쿼리
SELECT … FROM 테이블이름 WHERE 조건절
조건 절에서 문자열은 ‘’로 묶어주어야 합니다.
And, Or 등으로 조건 연산을 진행할 수 있습니다.
30
SELECT 문 (6)
여러 테이블에서 조회하기
SELECT … FROM TABLE1 Alias1, TABLE2
Alias2…
예: 소재도시가 같은 Customer와 Products 의 이름
과 해당도시를 조회하시오
31
SELECT 문 (7)
결과의 집결 GROUP BY
특정한 칼럼의 데이터 들을 다른 데이터들과 비
교해 유일한 값에 따라 무리를 짓습니다.
예: ORDERS에서 CID가 같은 Order들의 Dollars
합계를 구하시오.
32
SELECT 문 (8)
결과의 정렬
ORDER BY 정렬기준으로 할 칼럼이름1, …
33
PL/SQL 기초
Part: 3
34
PL/SQL 소개
 PL/SQL (Procedural Language extension to SQL) :
Oracle환경에서 실행되는 절차적인 데이터베이스
프로그래밍 언어이며 트랜잭션처리를 가능하게
합니다.
 PL/SQL 일반구조:








DECLARE
변수/상수 선언문
BEGIN
실행 문
EXCEPTION
예외처리(생략가능)
END;
/
--PL/SQL 종료문자
35
PL/SQL: 선언부
 DECLARE: 상수 혹은 변수를 선언합니다.
변수 선언:
 변수이름 데이터타입(크기) [:=초기값]
 예:
•
•
•
•
DECLARE
TOTAL_PRICE NUMBER(10,3);
ZIP_CODE VARCHAR(10);
P_COUNT NUMBER(3) := 0;
상수 선언:
 상수이름 CONSTANT 데이터타입(크기) := 상수 값
 예:
• DECLARE
• PI CONSTANT REAL:=3.1416;
36
PL/SQL: 실행 부
 SQL 문, 조건판단(IF),반복 문(LOOP, WHILE, FOR) 등이
포함됩니다.
 예: 일반 SQL문 처리
 (주: 예에서 사용할 SQL명령문 스크립트 파일에 대한 설명
은 본 PPT파일의 제일 마지막 페이지에 있습니다.)
37
반복 문 (1)
 LOOP문
 EXIT문이 실행되기 전까지 명령
문을 반복 처리합니다.
 문법:




LOOP
명령문…
EXIT문
END LOOP
 EXIT문은 조건을 만족하면 LOOP
루프로부터 탈출하도록 합니다.
 문법:
 EXIT WHEN 조건 문
 예: 1부터 9까지 반복하면서 시스
템시간을 TEMP테이블에 저장하
시오
 ※SYSDATE함수는 시스템시간을
가져옵니다
38
반복 문(2)
 WHILE…LOOP문
 조건이 만족하면 명령문을 반
복 처리합니다.
 문법:
 WHILE 조건 LOOP
 명령문…
 END LOOP
 FOR…LOOP문
WHILE…LOOP 사용
 변수가 초기 값부터 1씩 증가하
여 최종 값이 될 때까지 명령문
을 반복 처리합니다.
 문법:
 FOR 변수 IN 초기값 .. 최종 값
LOOP
 명령문…
 END LOOP
 예: LOOP문과 같은 예를 위의
두 개 반복 문으로 실현합니다.
FOR…LOOP 사용
39
IF 조건 문
 예:
 문법:
 1.
 IF 조건 THEN
 명령문_1
 END IF;
 2.
 IF 조건 THEN
 명령문_1
 ELSE
 명령문_2
 IF total_price>10000 THEN
 score :=‘good’;
 ELSEIF total_price<8000 THEN
 score :=‘fail’;
 ELSE
 score :=‘normal’
 END IF
 END IF;
 3.
 IF 조건_1 THEN
 명령문_1
 ELSIF 조건_2 THEN
 명령문_2
 ELSIF 조건_3 THEN
 명령문_3

… ...
 ELSE
 명령문_n
 END IF;
40
PL/SQL에서의 SELECT문 (1)
 PL/SQL에서의 SELECT는 기존 SQL에서의 SELECT 와 다
릅니다.
 쿼리진행결과의 Row 개수가 한 개에 제한되어야 하고, 검색한 값
을 INTO절의 변수에 저장합니다.
 쿼리진행결과의 Row의 수가 0개(NO_DATA_FOUND)이거나 복
수 개(TOO_MANY_ROWS)일 때 오류가 발생합니다.
 ORDER BY절은 사용하지 않습니다.
 문법:
 SELECT 칼럼이름1, 칼럼이름2, …, 함수, 수식, ...
 INTO
변수1, 변수2...
 FROM 테이블이름1, 테이블이름 2, ...
 WHERE 검색조건
 GROUP BY 칼럼이름 1, 칼럼이름 2, ...
41
PL/SQL에서의 SELECT문 (2)
 예: Orders데이터의 Order 수와 Dollars 합계를 출
력하시오.
DBMS_OUTPUT.PUT_LINE 은 출력함수입니다.
 만약 출력이 없으면 “set serveroutput on”을 입력하시오.
“||” 는 문자열을 연결해줍니다.
42
Cursor
Part: 4
43
Cursor 개요
 PL/SQL의 SELECT문은 한 개 이상의 Row를 조회할 수 없
습니다.Cursor을 이용하면 한 개 이상의 Row를 조회할 수
있습니다.
 Cursor 사용일반과정
 Cursor를 선언합니다(Declare):
 Cursor에 이름을 부여하고 Select문과 연결합니다.
 Cursor를 엽니다(Open):
 Cursor과 연결된 Select문이 실행됩니다.
 Cursor에서 Row를 가져옵니다(Fetch):
 각 Row의 값이 한번에 하나씩 반환됩니다.
 Cursor를 닫습니다(Close):
 Cursor와 관련된 Oracle의 모든 자원이 개방됩니다.
44
Cursor 의 선언
 예: 변수가 없는 경우
 문법:
 DECLARE
CURSOR 커서이름
 CURSOR get_prices IS
[(
SELECT price FROM
products;
변수1 변수타입 [:=초기값],
변수2 변수타입 [:=초기값],
 예: 변수가 있는 경우
…
 DECLARE
)]
 CURSOR
IS SELECT 문
get_prices(cityname varchar)
IS SELECT price FROM
products WHERE
city=cityname;
45
Cursor 열기
문법:
OPEN 커서이름[(변수 값1, 변수 값2…)];
Cursor가 변수를 가지고 선언되면 각 변수
에 대한 값을 지정해주어야 합니다.
예:
BEGIN
OPEN get_prices(‘Dallas’);
END;
46
Cursor에서 Row가져오기
 일반적으로 반복 문을 사용하여 Cursor로부터 Row를 추출
합니다.
 Cursor은 SELECT문의 각 칼럼 값을 순서대로 해당 변수에
부여합니다.
 문법:
 FETCH 커서이름 INTO 변수1, 변수2, …
 사용자는 Cursor로부터 모든 Row가 추출되었을 때 EXIT
문을 사용하여 루프를 빠져나가야 합니다.
 EXIT [WHEN 조건 문]
 여기서 조건 문은 커서의 상태 정보를 나타내
는 %ROWCOUNT, %FOUND, %NOTFOUND, %ISOPEN과 결합됩
니다.
 예:
 EXIT WHEN get_prices%NOTFOUND
47
Cursor의 속성
%FOUND와 %NOTFOUND: Cursor가 반환
할 Row의 유무를 나타냅니다.
%ROWCOUNT: Cursor에서 추출된 Row의
현재 집계를 반환합니다.
%ISOPEN: 특정Cursor가 열려있는지 여부
를 반환합니다.
48
Cursor 닫기
사용자는 두 가지 이유에서 커서를 닫아야
합니다.
다양한 결과값 조회를 위하여 Cursor를 다시 열기
위하여
Cursor가 차지한 자원을 개방하기 위하여
문법:
CLOSE 커서 이름
예:
CLOSE get_prices;
49
Cursor 예
 매번 거래에 참여한 Customer, Product, Agent의 이
름 및 거래액수를 출력하시오.
50
Cursor 예(출력화면)
51
SQL 스크립트 파일 실행
 예에서 언급 된 스크립트 파일들은
http://dbsi.inha.ac.kr/www/course/db/oraclexe/scripts.
zip 에서 다운로드 할 수 있습니다.
 파일이름은 본 PPT 해당 예 페이지 번호와 매칭됩
니다.
 특정폴더에 압축을 푼 후 PL/SQL 콘솔에서
start 경로\파일명
 하시면 해당 SQL 스크립트는 실행 됩니다.
예: d:\에 압축을 풀었고 P50의 커서 예를 실행하려면
start d:\p50
하시면 됩니다.
52