노력과 삽질 퇴적물

DB: 오라클 기초 (3) 본문

프로그래밍note/미분류.

DB: 오라클 기초 (3)

MTG 2012. 7. 25. 11:42


* 오라클 자체가 설치되었다는 전제상황인 요약정리입니다.


* 사용환경

-> 이클립스 유노(Eclipse Juno R Packages)

-> 오라클 엔터프라이즈 (Oracle Database 10g)

-> easy-quantum-3.0.6 [공식 홈페이지] [이클립스 플러그인 페이지]

-> 오라클 JDBC 드라이버 (ojdbc14.jar)






07. 테이블 관리

 01. 테이블 만들기

create table mytable(num number(4),

     name varchar(20),

     height number(5,1));




 02. 테이블 삭제

--일반삭제, 복원가능

drop table mytable;

--완전삭제, 복원불가

drop table mytable purge;




 03. 테이블 복사

--전체복사

create table clonetable

as select *from original;

--양식만 복사

create table clonetable

as select *from original where 1=0;

--테이블 내용만 복사

insert into clonetable

select * from original;




 04. 테이블/컬럼의 값 관리

-> 컬럼(필드) 추가/명명/자료형변경/삭제

추가 alter table mytable add(email varchar(50));

자료형변경 alter table mytable modify(email varchar2(10));

명명 alter table mytable rename column email to mail;

삭제 alter table mytable drop column mail;

--컬럼에 새로운값 넣기

insert into mytable(num, name, height)

values(1, '홍길동', 180.1);


insert into mytable(num, name, height)

values(2, '전우치', 175.5);

--특정값 변경

update mytable

set name='김길동' --바꿀내용값

where num=2;


update address

set phone='010-0001-0009'

where num=3;

--레코드 삭제

delete

from mytable;--전체레코드 삭제


delete

from address

where num=1;






08. 고급제어

 01. 트랜젝션 관리

commit : 저장되지 않는 데이터를 저장하고 종료.

savepoint : 현재까지의 트랜젝션을 특정 이름으로 변경

rollback : 저장되지 않는 모든 데이터 변경을 취소

savepoint a;

delete from sungjuk where num=2;

savepoint b;

delete from sungjuk where num=3;

rollback to b; --문맥상 num=3가 삭제되기전으로 되돌려짐.




 02. VIEW

-> 논리적 가상 테이블. 복잡하고 긴 쿼리문을 뷰로 정의해서 접근, 보안에 유리.

select s.num,

  s.name,

  j.total,

  j.average

from sungjuk s, sungjuk j

where s.num = j.num;

--아래 'create view school as'와 이어짐.

create view school as

select name,

  phone

from address

where num=3;


select * from school;-- 정의된거 사용하기

--뷰변경

create or replace view school as

select s.num,

s.name,

j.total,

j.average

from sungjuk s, sungjuk j

where s.num = j.num;

select *

from school;




 03. ROWID & ROWNUM

select rowid,

 rownum 임시번호, -- rownum은 추출하면 순번을 준다.

 name 이름,

 total 총점,

 average

from school

order by average desc,

     rownum asc;




 04.  제약조건

-- NOT NULL 해당컬럼값으로 NULL을 허용치 않음.

-- UNIQUE 컬럼값은 항 유일.

-- PRIMARY KEY 반드시 존재. 유일(NOT NULL * UNIQUE)

-- FOREGIN KEY 해당컬럼값은 다른 테이블에 참조

-- CHECK 설정된 값만 입력을 허용. 나머지는 거부

--PRIMARY KEY

create table major

(

hak_number number(2) primary key,

hak_name varchar(10),

constraint major_hak_number_pk --primary key

primary key(hak_number)

);

insert into major values(10, '전자과');

insert into major values(20, '전산과');

insert into major values(30, '기계과');

insert into major values(40, '전기과');

create table student

(

num number(2) primary key,

name varchar2(20),

hak_number number(2),

constraint student_hak_number_fk

foreign key(hak_number)  references major(hak_number)

);

insert into student values(1, '전자과', 10);

insert into student values(2, '전산과', 70);

--insert into student values(3, '기계과', '');




 05. SEQUENCE
-> 추천자료: 시퀀스(SEQUENCE)

create table mgs(num number(2) not null,

message varchar(20) not null,

constraint mgs_num_pk primary key(num)

);--해당 테이블 생성은 아래의 시퀀스에 앞서 필요한 전제조건


create sequence mgs_num_sql

start with 10    --시작번호

increment by 5 -- i++같은거

cache 100; --100개를 생성?

insert into mgs values(mgs_num_sql.nextval, '안녕하세요');-- 존재하는 테이블에 맞는 입력인수여야 한다.

insert into mgs values(mgs_num_sql.nextval, '반갑습니다');

insert into mgs values(mgs_num_sql.nextval, '밥먹자');

DROP SEQUENCE 삭제할시퀀스네임;





09. 기타

 01. 날짜관련

--create table today(d1 date,

     d2 sysdate.

     t timestamp,

     ym interval year to month,

     ds interval day to second);




* 중복제거 검색

distinct
-> select distinct department_id from employees;

'프로그래밍note > 미분류.' 카테고리의 다른 글

DB: 오라클 계정 비밀번호 분실  (0) 2012.09.24
이클립스: SVN 로컬환경  (1) 2012.09.14
DB: 오라클 기초 (2)  (1) 2012.07.23
DB: 오라클 기초 (1)  (0) 2012.07.23
노트정리: 네트워크 기초  (0) 2012.01.03