꼭 외워둬야 할 것!
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 |