[SQL] DML

Database / / 2022. 4. 20. 21:49

▶  DML

 

● Data Manipulation Language 데이터 조작어
● 테이블객체의 데이터에 대해서 생성/조회/수정/삭제 CRUD 하는 명령어
● insert (Create)
● select (Read)
● update (Update)
● delete (Delete)

 

● dml명령어 수행시 메모리에서 우선작업하므로 

    TCL(Transaction Control Language)를 통해서 실제 db에 반영(commit), 작업취소(rollback) 하는 과정이 필요

 

 

 

▶  INSERT

● 테이블에 새로운 레코드를 추가하는 명령어
● 명령 성공시마다 테이블에 행이 하나씩 추가된다.
● 추가할 레코드에 컬럼값중에 하나도 유효하지 않은(자료형불일치, 제약조건불일치..) 값이 있다면, 전체 레코드가 추가 될수 없다.

 

 

 

 

● 1.테이블의 구조대로 값을 제공해야 한다. 컬럼순서, 컬럼개수가 모두 일치해야 한다.

● 제약조건 default,not null 생각

 

 

 

 

● (컬럼명 명시) : 컬럼순서변경, 컬럼값을 생략하고 레코드를 추가할 수 있다.

not null컬럼도 default값이 지정되어 있는 경우 생략가능

default값이 있다면, 자동으로 기본값 처리

 

● a number, 

    b varchar2(20) default

    c varchar2(20) not null

    d date default sysdate not null

 

※ 기존 테이블 복사

 

 

 

● subquery를 사용한 insert

 

 

 insert all 

●  where 1 = 0; 은 무조건 false 컬럼순서,자료형만 복사

● 2개 이상의 테이블에 나눠서 insert처리

 

 

▶  UPDATE

● 특정행을 찾아, 해당컬럼값을 변경하는 명령
● where절에서 특정행에 대한 조건을 제시(where절 생략하면 모든 행에 대해 처리)

 

Primary key 컬럼 사용 

 

 

 

 

▶  DELETE

● 테이블의 행(레코드)를 삭제하는 명령
● where절을 지정하지 않으면 모든 행이 삭제된다

 

실제 테이블 데이터의 삭제는 일어나지 않는다.

 

소규모데이터인 경우, 삭제컬럼으로 처리

대규모데이터인 경우, delete처리를 하되, 삭제데이터는 별도로 관리한다.
 삭제(delete)와 동시에 삭제데이터를 퇴사자테이블에 추가(insert)해서 관리
 trigger객체를 통해 수월하게 처리 가능.

 

 

전체 데이터 삭제(delete)
DML은 수행전 상태를 메모리상에 임시 보관한다. (before-image)

 

 

'Database' 카테고리의 다른 글

[SQL]TOP-N  (0) 2022.04.27
[SQL] DDL,제약조건  (0) 2022.04.25
[SQL] 그룹함수  (0) 2022.04.19
[SQL] join , set operator,  (0) 2022.04.18
[SQL] 숫자처리함수,날짜처리함수,형변환 함수  (0) 2022.04.14