DBeaver 자동커밋풀기
DBeaver는 자동 커밋이 되어있다. 설정은 노란색으로 표시한 아이콘을 눌러 Auto-Commit에서
Manual Commit 으로 변경해주면 자동 커밋이 해제된다.
데이터 변경과 삭제
UPDATE구문
테이블에 저장된 튜플에서 특정 속성의 값을 수정
UPDATE 테이블_이름
SET 속성_이름1 = 값1, 속성_이름2 = 값2. ...
[WHERE 조건];
SET 키워드 다음에 속성값을 어떻게 수정할 것인지를 지정
WHERE 절에 제시된 조건을 만족하는 튜플만 속성값을 수정
-WHERE 절을 생략하면 테이블에 존재하는 모든 튜플을 대상으로 수정
DELETE 구문
테이블에 저장된 데이터를 삭제 *튜플기준
DELETE FROM 테이블명
WHERE [조건]
WHERE절에서 제시한 조건을 만족하는 튜플만 삭제
-WHERE절을 생략하면 테이블에 존재하는 모든 튜플을 삭제해 빈 테이블이 된다.
DELETE TRUNCATE DROP 차이점
DROP : 테이블자체를 날리는 명령어 (테이블은 완전히 삭제) * ROLLBACK불가능
TRUNCATE : 테이블을 데이터가 없는 상태의 초기화로 돌리는 명령어 (CREATE 시점으로 돌리기) * ROLLBACK불가능
DELETE : 튜플(ROW)를 삭제하는 명령어 * ROLLBACK가능
컬럼 정보 조회
SELECT * FROM cols;
---------------------------------------------------
SELECT * FROM COLS
WHERE TABLE_NAME = '고객' AND COLUMN_NAME = '나이';
테이블 기록 확인 방법
SELECT * FROM TABS;
---------------------------
SELECT *FROM TABS
WHERE TABLE_NAME = '고객';
INDEX
CREATE INDEX [인덱스이름] [테이블이름]([컬럼이름]);
--------------------------------------------------
CREATE INDEX INDEX_NAME ON 고객(나이);
-특정컬럼의 조회속도를 높이기위해사용
-단, 공간적인(테이블), 절차적인부분(튜플 INSERT할때마다 INDEX값 저장하기때문에)비용발생
특정테이블 복사
CREATE TABLE [복사될 테이블이름] AS SELECT [복사할 컬럼 이름] FROM [원본테이블]
----------------------------------------------------------------------------
CREATE TABLE 고객_백업
AS SELECT 고객아이디,고객이름 FROM 고객테이블 WHERE 고객이름 = '정소화';
트랜잭션이란?
하나의 작업을 수행하는데 필요한 데이터 베이스 연산들을 모아놓은 것
논리적인 작업의 단위
작업수행에 필요한 SQL문들의 모임
특히 데이터베이스를 변경하는 INSERT , DELETE , UPDATE 문의 실행을 관리
장애발생시 복구작업이나 병행제어작업을위한 중요한 단위로 사요오딤
데이터베이스의 무결성과 일관성을 보장하기위해 작업수행에 필요한 연산들을
하나의 트랜잭션으로 제대로 정의하고 관리해야함
*A가 B에게 만원을 송금한다고 가정한다. 먼저 A의 통장에서 만원을 인출하고, B의 통장에 만원을 입금해야 한다. 이때, 인출과 입금의 두가지 일이 합쳐져 '송금'이라는 하나의 논리적 기능을 이루는 것이다.
트랜잭션의 특성(ACID)
원자성(Atomicity)
- 트랜젝션의 연산들이 모두 정상적으로 실행되거나 하나도 실행되지 않아야하는 ALL OR NOTING 방식을 의미
- 트랜잭션 수행도중 장애가발생하면? 지금까지 실행한 연산처리를 모두 취소하고, 데이터베이스를 트랜잭션 작업 전상태로 되돌려야함 * UNDO / REDO
- 원자성의 보장을 위해 장애발생시 회복기능이 필요
일관성(Consistency)
- 트랜잭션이 성공적으로 수행된 후에도 데이터베이스가 일관된 상태를 유지해야함을 의미
- *트랜잭션 전 후의 내용이 같아야한다
격리성(Isolation)
- 수행중인 트랜잭션이 완료될 때까지 중간 연산결과에 따른 트랜잭션들이 접근할 수 없음을 의미
- 격리성의 보장을 위해서는 여러 트랜잭션이 동시에 수행되더라도 마치 순서대로 하나씩 수행된 것 처럼 정확하고 일관된 결과를 얻을 수 있도록 제어하는 기능이 필요
지속성(Durability)
- 트랜잭션이 성공적으로 완료된 후 데이터베이스에 반영한 수행결과는 영구적이어야함을 의미
- 지속성의 보장을 위해서는 장애 발생시 회복기능이 필요
트랜잭션 연산
COMMIT
사용자가 어떠한 행위(명령어)를 하고 최종결재(확인)를 하는 행위 (DB에 적용하는 행위)
- 트랜잭션 작업을 성공적으로 마치고 데이터 베이스에 영구적으로 반영한다
ROLLBACK
사용자가 어떠한 행위(명령어)를 한 것을 취소하는 행위(최종 commit 위치로 돌아간다)
- 트랜잭션 작업 도중 오류가 발생하면 트랜잭션 처리를 시작하기 이전의 상태로 되돌린다
Undo / Redo
Undo(언두)
"방금전에 했던일을 취소"하라는 뜻
Redo(리두)
"무엇을 다시하라"는 뜻
'STUDY > DB SQL' 카테고리의 다른 글
[Oracle] Oracle DB, SQL Developer 설치 후 테이블 만들기 (0) | 2022.09.15 |
---|---|
[SQL] UPDATE,DELETE와 SAVEPOINT 예제 (0) | 2022.07.27 |
[SQL] SQL에서 JOIN 예제 (0) | 2022.07.26 |
[SQL] SQL의 JOIN에 대해 알아보자 (0) | 2022.07.26 |
[SQL] SQL 키 종류와 예제 (0) | 2022.07.25 |