DML, TCL

김명주·2024년 11월 19일
0

DML - 데이터 조작어

데이터 조작어는 데이터를 삽입, 조회, 수정, 삭제할 때 사용하는 명령어

테이블 생성

CREATE TABLE 회원테이블(
회원번호 INT PRIMARY KEY
이름 VARCHAR(20)
가입일자 DATE NOT NULL
수신동의 BIt
)

데이터 삽입

  1. Insert
    데이터를 삽입하기 위해서는 Insert 명령어를 사용하면 된다.
    단, 삽입하고자 하는 테이블의 열 순서에 맞게 values 값을 지정해주어야 한다. 그리고 데이터 타입이 문자형과 날짜형일 경우, ''로 묶어주어야 한다.
INSERT INTO 회원테이블 VALUES(1001, '홍길동', '2020-11-12', 1);
INSERT INTO 회원테이블 VALUES(1002, '임꺽정', '2020-11-13', 0);
INSERT INTO 회원테이블 VALUES(1003, '장길산', '2020-11-14', 0);
INSERT INTO 회원테이블 VALUES(1004, '우투리', '2020-11-15', 1);
  1. 테이블 제약 조건
// PRIMARY KEY 위반
INSERT INTO 회원테이블 VALUES(1004, '장영실', '2020-11-16', 1); // 회원번호 1004는 이미 존재하기 때문에 중복되어 삽입할 수 없음

// NOT NULL 위반
INSERT INTO 회원테이블 VALUES(1005, '장보고', NULL, 1); // 가입일자 는 NULL을 허용하지 않으므로 삽입할 수 없음

// 데이터 타입 조건 위반
INSERT INTO 회원테이블 VALUES(1005, '장보고', 1, 1); // 가입일자의 데이터 타입이 맞지 않으므로 삽입할 수 없음
  1. 데이터 조회
  • 모든 열 조회
SELECT*
FROM 회원테이블
  • 특정 열 조회
SELECT 이름, 회원번호
FROM 회원테이블
  • 특정 열 이름 변경하여 조회
SELECT 이름 AS 회원이름
FROM 회원테이블
  1. 데이터 수정
    UPDATE 명령어를 사용하여 데이터를 수정할 수 있음
  • 모든 데이터 수정
// 모든 열의 수신동의의 값을 0으로 수정
UPDATE 회원테이블
SET 수신동의 = 0
  • 특정 조건의 데이터를 수정
// 회원테이블에서 이름이 우투리인 사람의 수신동의 값을 0으로 수정
UPDATE 회원테이블
SET 수신동의 = 0;
WHERE 이름 = '우투리'
  1. 데이터 삭제
    데이터를 삭제하기 위해선 DELETE 명령어를 사용하면 됨
  • 모든 데이터 삭제
DELETE
FROM 회원테이블
  • 특정 데이터 삭제
// 이름이 우투리인 데이터만 삭제
DELETE
FROM 회원테이블
WHERE 이름 = '우투리'

TCL - 트랜젝션 제어어

데이터 조작어, 명령어의 실행, 취소, 임시저장할 때 사용하는 명령어이다.

트랜젝션이란?

트랜젝션은 분할할 수 없는 최소 단위이며 논리적인 작업 단위.

위의 그림에서 INSERT, UPDATE, SELECT들은 하나의 트랜젝션이기 때문에, 저 셋중 하나라도 에러가 발생한다면 전부 취소된다. 취소되면 트랜젝션 작업 전 데이터로 돌아가게 됨.
반대로 발생되지 않으면 트랜젝션 작업 후 데이터로 실행됨.
가장 중요한 두 명령어는 작업을 최종 실행하는 COMMIT, 모든 작업을 되돌리는(취소) ROLLBACK이 있다.

COMMIT = 트랜젝션 시작 -> 데이터 삽입-> 해당 작업 최종 실행
ROLLBACK = 트랜젝션 시작 -> 데이터 삽입 -> 해당 작업 되돌림

테이블 생성

CREATE TABLE 회원테이블(
회원번호 INT PRIMARY KEY
이름 VARCHAR(20)
가입일자 DATE NOT NULL
수신동의 BIt
)
  1. 취소(ROLLBACK)
// 트랜젝션을 사용하기 위해서 BEGIN 명령어 실행
BEGIN;
// 데이터 삽입
INSERT INTO 회원테이블 VALUES(1001, '홍길동', '2020-11-12', 1);
// 취소
ROLLBACK;
  1. 실행(COMMIT)
// 트랜젝션을 사용하기 위해서 BEGIN 명령어 실행
BEGIN;
// 데이터 삽입
INSERT INTO 회원테이블 VALUES(1002, '임꺽정', '2020-11-13', 0);
// 실행
COMMIT;
  1. 임시저장(SAVEPOINT)
    DML 명령어들의 각 지점마다 임시 저장점을 지정하는 명령어이다. -> 롤백 저장점을 지정함.
// 회원테이블에 데이터 존재할 시, 전부 삭제
DELETE 
FROM 회원테이블
// 트랜젝션을 사용하기 위해서 BEGIN 명령어 실행
// 데이터 삽입
INSERT INTO 회원테이블 VALUES(1001, '홍길동', '2020-11-12', 1);
// SAVEPOINT 지정
SAVEPOINT S1;
// 데이터 수정
UPDATE 회원테이블
SET 이름 = '이순신'
// SAVEPOINT 지정
SAVEPOINT S2;
// 원하는 저장점으로 롤백
ROLLBACK TO S1;
profile
개발자를 향해 달리는 사람

0개의 댓글