본문 바로가기

SQL + PL/SQL/SQL

DML

꼭 외워둬야 할 것!


DML - Data Manipulation Language

INSERT / UPDATE / DELETE / MERGE


DDL - Data Definition Language

CREATE / ALTER / TRUNCATE / DROP


DCL - Data Control Language

GRAN / REVOKE


TCL - Transaction Control Language

COMMIT / ROLLBACK


SELECT - DQL - Data Query Language




DML



INSERT

테이블에 새로운 데이터를 입력


문법: INSERT INTO 테이블명 (칼럼들) VALUES (칼럼에맞는값들)


숫자값 이외에는 꼭 ' ' single quatation 으로 묶어줘야 함

날짜 데이터를 입력할 때는 조심해서 하기!

오라클 날짜 형식은 DD-MON-YY 이기 때문에 맞춰서 쓰던가 아니면

날짜 형식을 변경해서 입력해주던가 해야함.

날짜 형식을 변경하는 명령어는

ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD:HH24:MI:SS' ;

데이터 입력시 칼럼에 값을 안주면 자동으로 NULL 값이됨


INSERT ALL

여러테이블에 여러행 입력할 수 있음


예를들어


  1  insert all

  2  when profno between 1000 and 1999 then << 이렇게 중간에 조건을 주어도 되고, WHERE 를 사용해서 조건을 걸어도 됨.

  3  into p_01 values(profno,name)

  4  when profno between 2000 and 2999 then

  5  into p_02 values(profno,name)

  6  select profno,name from professor ;


다른 테이블에 동시에 같은 데이터를 입력하려면 (하나는 메인, 하나는 백업용 이렇게 있을때 자주쓰임)

위와같이 두번을 해주면 되긴 하지만 (조건은 같고 into p_01 / p_02)

간단하게

INSERT ALL 다음에 INTO로 테이블 두개 써주고

어차피 조건은 같으니까 맨 마지막에 WHERE를 쓰면서 조건을 주면 된다


  1  insert all

  2  into p_01 values(profno,name)

  3  into p_02 values(profno,name)

  4  select profno,name

  5  from professor

  6  where profno between 3000 and 3999




UPDATE

기존 데이터를 다른 데이터로 변경


문법: UPDATE 테이블명 SET 칼럼 = 값 WHERE 조건 ;


여기서 조심해야할 것은 꼭 WHERE절을 사용해서 조건을 걸어놓고, 변경해야할 것에 대한 것을 써줘야지 

안써주고 그냥 업데이트 해버리면 모든 데이터의 내용이 변경되기 때문에 조심해서 사용할것!


DELETE

데이터를 삭제


문법: DELETE FROM 테이블명 WHERE 조건 ;


DELETE는 데이터만 삭제! 저장공간을 반납하지 않기 때문에 지워도 테이블 용량은 줄어들지 않는다!

용량까지 줄이고 싶다면 REORG 작업을 별도로 해야 함




MERGE

여러 테이블의 데이터를병합


문법:

MERGE INTO 테이블1

USING 테이블2

ON (병합조건절)

WHEN MATCHED THEN

UPDATE SET 업데이트내용

DELETE WHERE 조건

WHEN NOT MATCHED THEN

INSERT VALUES (칼럼명)


병합조건절은 꼭 () 괄호로 묶어줘야함


위 문법으로 예를 들자면

테이블1과 테이블2를 병합조건절을 기준으로 병합

병합조건이 만족하면 테이블1에 있던 기존 내용은 테이블2의 내용으로 변경이나 DELETE가 수행되고

만족되지 않으면 테이블2의 내용이 테이블1에 신규로 INSERT 됨.


부하가 잘 걸리는 기능중 하나니까 잘 써야함



TRANSACTION 트랜잭션

논리적인 작업 단위

여러가지 DML 작업들을 하나의 다위로 묶어 둔것

모든 DML이 성공해야 해당 트랜잭션이 성공, 하나라도 실패하면 전체 실패


트랜잭션의 시작은 DML

완료하려면 TCL / DCL / DDL 를 입력


TCL에는 COMMIT 과 ROLLBACK이 있는데

COMMIT - 트랜잭션 내의 작업 결과를 확정

ROLLBACK - 트랜잭션 내의 모든 명령어를 취소

이것들은 트랜잭션 단위로 수행, 한건한건이 아니라

즉 마지막 DML만 취소되는것이 아니라 해당 트랜잭션내의 모든 DML이 취소 되는것이다.



'SQL + PL/SQL > SQL' 카테고리의 다른 글

CONSTRAINT - 제약조건  (0) 2013.01.13
DDL  (0) 2013.01.13
SUB QUERY - 서브쿼리  (0) 2013.01.04
JOIN  (0) 2013.01.04
SQL 그룹함수  (0) 2013.01.04