본문 바로가기

프로그래밍/Oracle

DD,DML,Transaction

데이터 딕셔너리 data dictionary
-데이터 자원을 효율적으로 관리하기 위한 다양한 
정보를 저장하는 시스템 테이블

데이터 딕셔너리 뷰  data dictionary view
-딕셔너리에서 사용자가 이해할 수 있는 데이터를
산출(조회)해주는 툴

종류 3가지
- DBA_XXX -관리자만 접근 가능한 개체

-ALL_XXX -자신 계정소유 또는 권한을 부여받은 개체

-USER_XXX- 자신의 계정 개체 (주로 쓰임)



--INSERT
모든 칼럼 자료 입력 시
목록 기술 생략 가능

생략 시 테이블 컬럼 순서 따라 입력

암시적 null 입력
-values 값 생략

명시적 null 입력
- '' , null입력 
쓰게 되는 이유 컬럼 목록 생략시에는 
명시적 입력을 사용해야 한다.

insert select 문
ex)
insert into table_name
select *
from temp;

insert all 문
ex)
insert all
into table_name values(칼럼명 ...)
into table_name2 values(칼럼명....)
select (위의 칼럼명들과 일치)
from temp
where 조건....;

insert all
when 조건 then
into table_name values(칼럼 명...)
when 조건 then
into table_name2 values(칼럼 명...)
select (위의 칼럼 명들과 일치)
from temp;



--UPDATE
update table_name
set 칼럼명 조건
where 절을 이용 변경 행 지정

, 로 변경 칼럼 추가 

SET에 서브쿼리사용 가능 
SET두개 이상의 칼럼변경 가능 
EX) 

UPDATE table_name
set column_name1=(sub_query1),
column_name2= (sub_query2),....
where 조건

EX2)
UPDATE table_name
SET (column_name1, column_name2, …) =
(sub_query)
WHERE 조건

EX2)가 더편리




--DELETE
delete from table_name
where conditions;

(select 문 사용 가능)

 

 




--MERGE (합병)
두개의 TABLE을 합쳐서 
있는 건 업데이트
없는 건 추가한다.

merge into table_name1 t1
using table_name2 t2
on t1.empno= t2.empno
when matched then 
update
set 
t1.column1 =t2.column1
,t1.column2= t2.column2
,t1.column3= t2.column3
,
,
,t1.column n= t2.column n
when not matched then 
insert values(t2.column1,t2.column2,t2.column3...
.... , t2.column n);



--트랜잭션 관리
Transaction
ALL - OR- NOTHING
성공,성공= 성공
성공,실패 =실패

데이터의 일관성 유지
안정적 데이터 복구를 위해 도입

--COMMIT 
트랜잭션 작업 내용 DB에 저장 
이전 데이터가 완전 UPDATE
모든 사용자가 변경 데이터 결과 열람가능

--SAVEPOINT

--ROLLBACK
트랜잭션 작업내용 취소
이전 COMMIT까지 복구

--자동 COMMIT 및 자동 ROLLBACK  
정상 종료 COMMIT 비정상 종료 ROLLBACK
DDL, DCL 명령문 수행 이후 자동 COMMIT





'프로그래밍 > Oracle' 카테고리의 다른 글

DDL, 서브쿼리, 휴지통  (1) 2019.11.21
SQL 유형별 명령문  (0) 2019.11.19
like 와일드카드 _ %  (2) 2019.11.14
비절차적 언어 SQL 정의  (0) 2019.11.13
오라클 명령어  (0) 2019.11.13