티스토리 뷰

DB/SQL

SQL - DML

xoo | 수진 2023. 7. 31. 18:00
모든 DML 작업은 메모리에서만 적용된다.
물리적인 파일에 반영이 안된 상태.

물리적인 파일로 변경하는 작업이 COMMIT (파일에 반영)
메모리에서만 쓰고 없어지는 게 ROLLBACK (취소)


 

 

 


 

 

 

1. INSERT 문

  • 용도: 새로운 레코드(행) 생성
  • 종류
    • 단일 테이블의 단일행 생성 (기본적으로 INSERT문 의미)
1. 컬럼명 지정 (권장 방법)
INSERT INTO 테이블명 (컬럼명,컬럼명2)
VALUES (값,값2);

    - 명시된 컬럼명에 일대일 대응되어 값이 저장이 된다. ( 갯수일치, 데이터타입 일치, 크기 일치 )
    - 명시되지 않은 컬럼의 값은 NULL이 자동으로 저장된다.
    - 주요 특징은 저장하고 싶은 컬럼만 지정할 수 있다. (나머지는 NULL로 저장됨)

2. 컬럼명 미지정 
INSERT INTO 테이블명
VALUES (값,값2,값3, ...);​

   - 컬럼명을 지정하지 않았기 때문에 명시된 값은 자동으로 테이블이 가지고 있는 칼럼 순서대로 매핑되어 저장된다.

   -  주요 특징은 테이블의 모든 컬럼에 값을 전부 지정해야 된다. 생략 시 에러 발생.
    • 단일 테이블의 복수행 생성
    • 복수 테이블의 단일행 생성
    • 복수 테이블의 복수행 생성
1. 무조건 insert all
INSERT ALL
	INTO 테이블1 VALUES (값, 값2, ...)
    	INTO 테이블2 VALUES (값, 값2, ...)
SELECT
FROM   ;​



2. 조건 insert all
INSERT ALL
	WHEN 조건식1 THEN INTO 테이블1 VALUES (값, 값2, ...)
   	WHEN 조건식2 THEN INTO 테이블2 VALUES (값, 값2, ...)
SELECT
FROM    ;​

  - 만약에 조건식1과 조건식2 모두 만족하면 모든 테이블에 저장된다.



3. insert first
INSERT FIRST
	WHEN 조건식1 THEN INTO 테이블1 VALUES (값, 값2, ...)
   	WHEN 조건식2 THEN INTO 테이블2 VALUES (값, 값2, ...)
SELECT
FROM    ;

 

- 만약에 조건식1과 조건식2 모두 만족하더라도 테이블1에만 저장된다.

 

 

 

 


 

 

 

2. UPDATE 문

  • 용도 : 기존 컬럼값을 수정
  • 문법
WHERE 없는 문
UPDATE 테이블명
SET 컬럼명=값, 컬럼명2=값2, ... ;​

  - 전체 레코드의 컬럼이 변경된다.




WHERE 있는 문
UPDATE 테이블명
SET 컬럼명=값, 컬럼명2=값2, ...
WHERE 조건식;​

  - 조건에 일치하는 레코드의 컬럼만 변경된다.
  - 일반적으로 UPDATE 문을 의미한다.

 

  • UPDATE + SUBQUERY
UPDATE 테이블명
SET 컬럼명=SUBQUERY, 컬럼명2=SUBQUERY, ...
WHERE 조건식;

 

 

 

 


 

 

2. DELETE 문

  • 용도 : 기존 레코드 삭제
  • 문법
WHERE 없는 문
DELETE FROM 테이블;​

  - 전체 레코드의 컬럼이 변경



WHERE있는 문
DELETE FROM 테이블
WHERE 조건식;​

  - 조건에 일치하는 레코드만 삭제된다.
  - 일반적으로 DELETE 문을 의미한다.

 

  • DELETE + SUBQUERY
DELETE 
FROM 테이블
WHERE LOC = SUBQUERY
      AND
      DNAME = SUBQUERY;

 

 

 


 

 

트랜잭션 (transaction)

  • 개념 : 트랜잭션(Transaction)은 데이터베이스의 논리적인 작업 단위로서 분리될 수 없는 한 개 이 상의 데이터베이스 조작을 의미한다. 하나의 트랜잭션에는 하나 이상의 SQL문장이 포함될 수 있으며 트랜잭션의 대상이 되는 SQL문은 DML 문이다. 오라클에서 발생되는 여러 개의 작업들을 하나의 작업처럼 처리해야 되는 경우에 트랜잭션 개념이 필요하다.
  • 특징
    • DML 사용하면 자동으로 트랜잭션이 시작된다.
    • 명시적으로 COMMIT / ROLLBACK 트랜잭션을 종료시켜야 된다.
    • 만약에 명시적으로 트랜잭션을 종료 안시키면 큰 이슈가 발생된다. ( 다른 사용자가 무한 대기에 빠진다. )
    • 따라서 명시적으로 트랜잭션을 반드시 종료시켜야 된다.

 

=> 앞 사람이 트랜잭션을 명시적으로 종료하지 않아 다른 사람들이 무한대기에 빠지게 됨





=> 커밋하여 트랜잭션을 종료하니 다른 사람이 무한대기에서 벗어나 진행할 수 있게 됨

'DB > SQL' 카테고리의 다른 글

SQL - 테이블 변경 / 데이터 사전  (0) 2023.08.01
SQL - DDL  (0) 2023.07.31
SQL - 다중 컬럼 서브쿼리 / 인라인 뷰  (0) 2023.07.30
SQL - 단일행/복수행 서브쿼리  (0) 2023.07.30
SQL - 서브쿼리(sub query)  (0) 2023.07.28
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함