접속
접속명령
conn 아이디/비밀번호 as 접속권한
conn 아이디 as 접속권한
conn / as 접속권한 (익명 접속도 가능)
접속 해제 명령
disconn
오라클 서버에 접속시 관리자 계정(system)으로 접속하려면 'as sysdba' 사용
접속포트 바꾸기
exec dbms_xdb.sethttpport(9090);
시스템 기본 테이블 스페이스 조회
msSQL과는 달리 DB의 개념이 없고 비슷하게 테이블 스페이스라는 것이 있다.
select tablespace_name, status
from dba_tablespaces
order by tablespace_name
오라클 사용자 계정 만들기
- 테이블 스페이스 생성
[이름] => TS_lazy
[경로] => D:\java\TS_lazy.dbf
create tablespace TS_lazy
datafile 'D:\java\TS_lazy.dbf' size 10M
default storage
(initial 128k next 64k pctincrease 10); - 사용자 계정 생성에 테이블 스페이스 지정
[아이디] => lazy
[비밀번호] => 302
create user [아이디] identified by [비밀번호]
default tablespace TS_lazy
temporary tablespace temp
사용자 보기 : select username, user_id from dba_users; - 사용자 권한 부여
grant connect, resource to [아이디]
데이터베이스와 일반 데이터의 차이
- 데이터에 보안을 적용하기가 쉽다.
- 데이터의 중복을 막을 수 있고 자료의 일관성을 유지할 수 있다.
데이터베이스 종류
-
관계형(R) 데이터 베이스 : MySQL, MS-SQL, Oracle9i, 10g
테이블 구조
2차원 배열의 형태로 구성
테이블을 구성하는 최소 단위 - item
item이 어러개 모이면 - 필드
필드가 어러개 모이면 - 레코드
레코드가 여러개 모이면 - 테이블
SQL 명령문 종류
- DDL : 데이터 정의 ( create, drop, alter )
- DML : 데이터 조작 ( select, update, insert, delete )
- DCL : 데이터 제어 ( grant, revoke, rollback, commit )
ORACLE 자료형
-- char : 문자형 (고정길이) max : 2000 byte
-- nchar : 문자형 (고정길이),
유니코드 지원, max : 2000 byte
-- varchar2 : 문자형 (가변길이) max : 2000 byte
-- nvarchar2 : 문자형 (가변길이) 유니코드 지원, max : 2000 byte
-- date : 날짜형, 형식 지정자로 변환가능, max : 7 byte
-- number : 숫자(정수, 실수)형, max : 37자리까지 정수, 실수 표현가능
-- number(n) : 최대 n byte 정수
-- number(n, m) : n - 소수점 제외자릿수, m - 소수점 이하 자릿수
-- 대용량 데이터 저장용 자료형
-- long : 문자/바이너리 저장용, max : 2 byte
-- 테이블에 단 한번만 사용 가능
-- clob : 문자 저장용, max : 4 Gbyte
-- blob : 바이너리 저장용, max : 4 Gbyte
-- 데이터 저장 / 출력시 특수한 변환과정 필요
저장 프로시저 ( store procedure )
- 기본문법
- create procedure [저장프로시져 이름] (
- -- create or replace procedure [저장프로시져 이름] : 저장과 수정을 동시에 함.
-
< 매개변수 목록 >
- ) is
- begin
-
<프로시져 본문>
- end [저장프로시져 이름]
< 매개변수 목록 > : 프로그램 실행시 필요한 데이터를 받을 경우 사용
변수명 in/out <자료형>
< 프로시져 지역변수 > : 프로시져 안에서만 사용
변수명 <자료형>
< 프로시져 수식 >
문자연결 연산자 : ||
대입 연산자 : :=
-
CREATE OR REPLACE PROCEDURE savesungjuk2(
-
iname IN sungjuk.names%TYPE, -- 매개변수
-
ikor IN sungjuk.kor%TYPE,
-
ieng IN sungjuk.eng%TYPE,
-
imat IN sungjuk.mat%TYPE
-
) IS
-
itot sungjuk.tot%TYPE; -- 지역변수
-
iavg sungjuk.avgs%TYPE;
-
igrd sungjuk.grd%TYPE;
-
BEGIN
-
itot := ikor + ieng + imat;
-
iavg := itot/3;
-
IF(iavg > 89) THEN
-
igrd := 'A';
-
ELSIF(iavg > 79) THEN
-
igrd := 'B';
-
ELSIF(iavg > 69) THEN
-
igrd := 'C';
-
ELSIF(iavg > 59) THEN
-
igrd := 'D';
-
ELSE
-
igrd := 'F';
-
END IF;
-
-
INSERT INTO sungjuk VALUES(sjseq.NEXTVAL, iname, ikor, ieng, imat, itot, iavg, igrd, SYSDATE);
-
END savesungjuk2;
-
EXECUTE savesungjuk2 ('lazy5', 50, 60, 99);
-
SELECT * FROM SUNGJUK
-
CREATE OR REPLACE PROCEDURE listBoard(
-
rs OUT SYS_REFCURSOR -- 결과값 저장 변수
-
) IS
-
BEGIN
-
OPEN rs FOR
-
SELECT bno, subject, id, rdate, reads FROM BOARD;
-
END listBoard;
-
CREATE OR REPLACE PROCEDURE viewBoard(
-
ibno IN board.bno%TYPE,
-
rs OUT sys_refcursor
-
) IS
-
BEGIN
-
OPEN rs FOR
-
SELECT * FROM board WHERE bno = ibno;
-
END;