Transaction

- 트랜잭션은 데이터베이스의 논리적인 단위이다.

-하나의 트랜잭션에는 하나 이상의 SQL문장이 포함되며, 분할 할 수 없는 최소의 단위이다.

 그렇기 때문에 전부 적용하거나 전부 취소된다.

 즉, 트랜잭션은 'ALL or NOTHING' 이다.

 

 

Transaction 시작과 종료

-DML 명령을 시작한 경우에 TRANSACTION 이 자동으로 시작된다.

 

-사용자가 COMMIT 또는 ROLLBACK 명령을 명시적으로 실행한 경우 종료된다.

 또는 DDL 문장을 실행하는 경우, DCL문장을 실행하는 경우

 사용자가  SQL*PLUS 또는 IQL*PLUS 를 종료한 경우

 하드웨어 고장 또는 시스템 오류 시

 

 

COMMIT

모든 데이터 변경사항을 데이터베이스에 반영시키는 명령어이다.

변경 전의 데이터는 모두 삭제된다.

모든 사용자들이 트랜잭션 종료 후의 결과를 확인할 수 있다.

즉, 현 사용자가 트랜잭션을 종료시키지 않으면 다른 사용자들은 해당 내용을 확인할 수 없다.

 

 

ROLLBACK

모든 데이터 변경사항을 취소하는 명령어이다.

변경 전의 데이터가 복원된다.

모든 사용자들이 트랜잭션 종료 후의 결과를 확인할 수 있다.

트랜잭션이 진행 중이었던 행들에 대한 잠금이 모두 해소되며, 다른 사용자에 의해서 확인 및 변경이 가능해진다.

 

** COMMIT과 ROLLBACK을 입력하지 않는 이상 현재 작성하고 데이터는 트랜잭션이 계속해서 진행중임을 의미한다.

 

INSERT INTO DEPT  VALUES(50, 'AA', 'AA'); --트랜잭션 시작

ROLLBACK ; --트랜잭션종료

INSERT INTO DEPT  VALUES(50, 'AA', 'AA'); --트랜잭션 시작

INSERT INTO DEPT  VALUES(60, 'AA', 'AA');

INSERT INTO DEPT  VALUES(70, 'AA', 'AA');

ROLLBACK; --트랜잭션종료

INSERT INTO DEPT  VALUES(50, 'AA', 'AA'); --트랜잭션 시작

UPDATE DEPT SET LOC = 'AAAAA';

ROLLBACK; --트랜잭션 종료

INSERT INTO DEPT  VALUES(50, 'AA', 'AA'); --트랜잭션 시작

INSERT INTO DEPT  VALUES(60, 'AA', 'AA');

--COMMIT --트랙잭션종료

 

'DataBase > DML' 카테고리의 다른 글

7/2 UPDATE, DELETE  (0) 2021.07.02
7/2 SQL INSERT  (0) 2021.07.02
7/1 SQL DML  (0) 2021.07.01
UPDATE

테이블에 저장된 데이터를 수정하기 위해서 사용되며 한 번에 여러 개의 행(ROW or RECORD)를 수정할 수 있다.

 

EX) UPDATE MYDEPT

SET DNAME = '영업', LOC = '경기'

WHERE DEPTNO = 50;

 

서브쿼리를 이용하여 바꿀 수도 있다.

 

UPDATE EMP
SET JOB =(SELECT JOB
            FROM EMP
            WHERE EMPNO = 7900),
     SAL = (SELECT SAL FROM EMP
            WHERE EMPNO = 7844)
            
        WHERE EMPNO = 9001;

 

      SubQuery

 

DELETE

테이블에 저장된 행들을 삭제한다.

한 번에 여러 개의 행들을 삭제할 수 있다.

 

DELETE FROM TABLE

WHERE CONDITION ;

* FROM 과 WHERE 조건문은 생략이 가능하니 참고해주세요!

 

delete 또한 서브쿼리를 이용해서 문장을 작성할 수 있다.

EX)

DELETE FROM EMP

WHERE DEPTNO = (SELECTE DEPTNO FROM DEPT WHERE DNAME = '경리과');

 

      SubQuery

 

 

'DataBase > DML' 카테고리의 다른 글

7/2 트랜잭션(Transaction)  (0) 2021.07.02
7/2 SQL INSERT  (0) 2021.07.02
7/1 SQL DML  (0) 2021.07.01

이전 시간에 이어서 계속 INSERT를 이야기해보자면..

 

 

INSERT 는 복수 테이블로 원하는 데이터를 전송할 수 있다.

 

EX) 

INSERT ALL
    INTO MYEMP_HIRE VALUES(EMPNO, ENAME, HIREDATE,SAL)
    INTO MYEMP_MGR VALUES (EMPNO, ENAME, MGR)
    SELECT EMPNO, ENAME, HIREDATE, SAL, MGR FROM EMP;
    COMMIT;

 

데이터 정보를 모두 다 입력한 다음 본인이 원하는 값이 제대로 들어갔는 지 무조건 확인하기!

확인 후에 COMMIT 꾸욱~

 

EX) 

INSERT ALL
WHEN SAL > 3000 THEN
INTO MYEMP_HIRE2 VALUES (EMPNO, ENAME, HIREDATE, SAL)
WHEN MGR = 7698 THEN
INTO MYEMP_MGR2 VALUES(EMPNO, ENAME, MGR)
SELECT empno, ename, hiredate, sal, mgr
from emp; *SELECT 부분은 SUBQUERY*

 

EX)

INSERT FIRST

WHEN SAL = 800 THEN

INTO TABLE1 VALUES (EMPNO, ENAME, HIREDATE, SAL)

WHEN SAL < 2500 THEN

INTO TABLE2 VALUES (EMPNO, ENAME, MGR)

SELECT EMPNO, ENAME, HIREDATE, SAL. MGR

FROM EMP;

'DataBase > DML' 카테고리의 다른 글

7/2 트랜잭션(Transaction)  (0) 2021.07.02
7/2 UPDATE, DELETE  (0) 2021.07.02
7/1 SQL DML  (0) 2021.07.01
DML (Data Manipulation Language)

데이터베이스의 테이블에 새로운 데이터를 저장(INSERT) 하거나 삭제(DELETE) 또는 수정(UPDATE) 및 병합(MERGE) 할 때 사용하는 데이터 조작어를 의미한다.

 

INSERT 

테이블에 데이터를 입력하기 위한 데이터 조작어다.

입력하는 방법은 총 두 가지가 있다.

첫 번째, 한번에 하나의 행을 테이블에 입력하는 방법

두 번째, 서브쿼리를 이용하여 한 번에 여러 행을 동시에 입력하는 방법

 

 

EX) 

INSERT INTO DEPT (DEPTNO, DNAME, LOC) 

VALUES (90, '인사과', '서울');

 

 

      INSERT INTO 시작부분

      테이블명

      컬럼명

      컬럼의 데이터 값

 

사용 시 참고사항

- 모든 컬럼을 다 명시할 경우, 입력한 컬럼의 순서대로 VALUE 를 적어야한다.

- 컬럼의 순서 변경이 가능하다. 단, 순서를 변경한 후 컬럼과 컬럼 값을 알맞게 넣어야 한다.

  이를 위해서 컬럼의 세부내용을 볼 필요가 있다. 

  DESC 테이블명 을 입력하면 컬럼의 특징들이 나온다. 이를 참고해서 숫자, 문자열 등을 입력하면 된다.

 

- 컬렴명을 생략할 수 있다. 단, 모든 컬럼의 VALUES 를 다 적을 때만 적용된다.

- NULL 값은 묵시적 또는 명시적으로 입력할 수 있다.

EX) 

1. 묵시적 : INTO 절에서 해당 컬럼명과 값을 생략하면 된다.

ㄴ INSERT INTO  DEPT (DEPTNO, DNAME) VALUES (91, '인사과';

*제약조건이 지정되지 않았다고 가정.

 

2. 명시적 : VALUES절의 컬럼값에 NULL 키워드를 적거나 빈문자열 '' 을 사용하면 된다.

ㄴ INSERT INTO DEPT VALUES (92, '인사과', NULL);

'DataBase > DML' 카테고리의 다른 글

7/2 트랜잭션(Transaction)  (0) 2021.07.02
7/2 UPDATE, DELETE  (0) 2021.07.02
7/2 SQL INSERT  (0) 2021.07.02

+ Recent posts