참고 :
Merge : 구조가 같은 2개의 테이블을 비교하여 하나의 테이블로 합치기 위한 명령어
서버에 많은 부하를 주므로 index를 필히 생성
MERGE INTO [table] [alias]
USING [table | view| subquery ] alias
ON [ join condition]
WHEN MATCHED THEN
UPDATE SET …..
WHEN NOT MATCHED THEN
INSERT ….
VALUES …;
2. DDL(정의어) : create, alter, truncate, drop
3. DCL : grank, revoke
4. TCL : commit, rollback
참고 :
오라클에서의 변수
숫자 : number(p, s)
- p : 총 자리수
- s : 소수점 자리
예) number(5,3) => 12.345
날짜 : date (기본 포멧은 'dd-mon-yy')
문자 : char(n) - 공간의 낭비 발생
varchar2(n) - 공간 낭비 제거
n : byte 크기
참고 : 다중 row insert 방법
- ITAS : Insert into Table [As] Select ...
이미 만들어져 있는 테이블에 데이터 복사
- CTAS : Create Table As Select ....
테이블 생성 및 데이터 복사
구조만 복사하려고 할 때 :
create table table_name
as select *
from table_name
where 1=2
5. Sequence : 자동으로 번호 생성
CREATE SEQUENCE sequence_name
[INCREMENT BY n] <-- 증가값, 기본값 : 1
[START WITHE n] <-- 시작값, 기본값 : 1
[MAXVALUE n | NOMAXVALUE] <-- 최대값
[MINVALUE n | NOMINVALUE] <-- Cycle 시 시작값
[CYCLE | NOCYCLE] <-- 순환여부
[CACHE n | NOCACHE] <-- 속도개선을 위한 캐싱여부(성능에 영향을 미침)
6. 연습문제
가. 교수 번호, 이름, 학과 번호를 제외한 칼럼은 NULL을 가지도록 묵시적인 방법으로 입력하세요
(교수번호 : 9910, 이름:이순신 , 학과번호:201)
1
2 |
insert into professor (profno, name , deptno) values (9910, '이순신' , 201); |
나. 이순신 교수의 직급은 사용자 아이디가 'Pascal'인 교수와 동일하게 하고, 급여는 교수 번호가 '9908'인 교수와 동일하게 수정하여라.
1
2
3
4
5
6
7
8 |
update professor set
position = ( select position
from professor
where userid= 'Pascal' ),
sal = ( select sal
from professor
where profno=9908)
where name = '이순신' ; |
다. 보직 수당이 NULL 인 교수의 보직수당을 보직수당을 최소로 받는 교수의 보직수당과 동일하게 수정하여라.
1
2
3
4 |
update professor set
comm = ( select min (comm)
from professor)
where comm is null ; |
7. 데이터 삭제방법 및 차이
가. delete : 원하는 데이터만 삭제 가능, 공간 미회수, rollback 가능
나. truncate : 테이블 구조만 남기고 삭제, 공간 회수, rollback 불가능
다. drop : 테이블 전체 삭제, 공간 회수, rollback 불가능
8. Data Dictionary
가. 설명 : 사용자와 시스템 자원을 효율적으로 관리하기 위한 다양한 시스템 정보를 저장
나. Data Dictionary View 종류
- DBA_ : DBA 권한을 가진 사용자만 조회할 수 있는 데이터 사전 뷰
- ALL_ : 한 특정 사용자가 조회 가능한 모든 데이터 사전 뷰,
객체의 주인이 아니더라도 접근권한이 있으면 조회가능
- USER_ : 한 특정 사용자에게 종속되어 있고, 그 사용자가 조회가능한 사전 뷰, ALL_ 뷰의 부분 집합.
9. 연습문제
가. 테이블 생성1
1
2
3
4
5
6
7
8 |
create table member (userid varchar2(10), username varchar2(10), passwd varchar2(10), idnum varchar2(10), phone number(13), address varchar2(20), regdaate date , interest varchar2(15)); |
나. 테이블 생성2
1
2 |
create table member_second as select * from member; |
다. 테이블 생성3
1
2 |
create table member_third as select userid, username, passwd from member; |
라. 테이블 생성4
1
2 |
create table member_forth as select * from member where 1=2; |
마. 컬럼 추가1
1 |
alter table member add (email varchar2(50)) |
바. 컬럼 추가2
1 |
alter table member add (country varchar2(20) default 'Korea' ); |
사. 컬럼 삭제
1 |
alter table member drop column email; |
아. 컬럼 타입수정
1 |
alter table member modify (address varchar (30)); |
자. 컬럼 이름수정
1 |
alter table member rename column address to addr; |
차. 테이블 이름 변경
1 |
rename member_second to potential_member; |