1. DML(Data Manipulation Language)
1) INSERT
테이블에 데이터 입력
- INSERT INTO 테이블명 (COLUMN_LIST) VALUES (COLUMN_LIST에 넣을 VALUE_LIST);
- INSERT INTO 테이블명 VALUES (전체 COLUMN에 넣을 VALUE_LIST);
CHAR, VARCHAR일 경우 " ' " (Single Quotation)으로 입력할 값을 입력
숫자일 경우 " ' " (Single Quotation)을 사용하지 않는다.
2) UPDATE
입력한 정보 중 잘못 입력하거나 변경이 필요한 경우
UPDATE 테이블명 SET 수정할 칼럼명 = 원하는 값; => 해당 칼럼에 있는 모든 값 변경
3) DELETE
데이터 삭제
DELETE TABLE 칼럼명;
4) SELECT
데이터 조회
SELECT 칼럼명, 칼럼명 FROM 테이블명; => 원하는 칼럼값 조회
DISTINCT 옵션
SELECT DISTINCT 칼럼명 FROM 테이블명;
NULL을 포함한 중복 제외 값 조회
WILDCARD 옵션
테이블의 모든 정보 조회
SELECT * FROM 테이블명;
ALIAS 부여
조회된 결과에 별명(ALIAS, ALIASES)을 부여해서 칼럼 레이블을 변경
SELECT 칼럼명 AS 별명 FROM 테이블명;
SELECT 칼럼명 별명 FROM 테이블명;
SELECT 칼럼명 "별 명" FROM 테이블명;(ORACLE)
SELECT 칼럼명 "별 명"/'별 명'/[별 명] FROM 테이블명;(SQL Server)
- 칼럼명 바로 뒤에 온다.
- 칼럼명과 ALIAS 사이에 AS, as 키워드를 사용할 수도 있다.(option)
- 이중 인용부호 (Double quotation)는 ALIAS가 공백, 특수문자를 포함할 경우와 대소문자 구분이 필요할 경우 사용
5) 산술 연산자와 합성 연산자
산술 연산자
- () : 괄호 안의 연산이 우선
- * : 곱하기
- / : 나누기
- + : 더하기
- - : 빼기
우선순위는 () > * > / > + > - 이다.
SELECT HEIGHT - WEIGHT "키-몸무게" FROM 테이블명
합성 연산자
문자와 문자를 연결하는 연산자
- ORACLE => SELECT 칼럼명 || "바보" FROM 테이블명;
- SQL Server => SLEECT 칼럼명 + "바보" FROM 테이블명;
2. TCL(Transaction Control Language)
1) 트랜잭션의 개요
DB의 논리적 연산단위, 밀접히 관련되어 분리될 수 없는 한 개 이상의 DB 조작을 가리킨다.
하나의 트랜잭션에는 하나 이상의 SQL문장이 포함, 분할할 수 없는 최소의 단위
트랜잭션의 특성
- 원자성(atomicity)
트랜잭션에서 정의된 연산들은 모두 성공적으로 실행되던지 전혀 실행되지 않은 상태로 남아 있어야 한다
(all or nothing) - 일관성(consistency)
트랜잭션이 실행되기 전의 DB 내용이 잘못되어 있지 않다면 트랜잭션이 실행된 이후에도 DB의 내용에 잘못이 있으면 안 된다. - 고립성(isolation)
트랜잭션이 실행되는 도중에 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들어서는 안 된다. - 지속성(durability)
트랜잭션이 성공적으로 수행되면 그 트랜잭션이 갱신한 DB의 내용은 영구적으로 저장된다.
2) COMMIT
Oracle은 DML을 실행하는 경우 DBMS가 트랜잭션 내부적으로 실행하며 DML 문장 수행 후 사용자가 임의로 COMMIT 혹은 ROLLBACK을 수행해 주어야 트랜잭션 종료(일부 툴에서는 AUTO COMMIT 옵션 설정 가능)
SQL Server는 기본적으로 AUTO COMMIT 모드이기 때문에 DML 수행 후 사용자가 COMMIT이나 ROLLBACK을 처리할 필요가 없다.(오류 발생 시 자동 ROLLBACK)
COMMIT이나 ROLLBACK이전의 데이터 상태
- 단지 메모리 BUFFER에만 영향을 받았기 때문에 데이터의 변경 이전 상태로 복구 가능
- SELECT 문장으로 결과를 확인 가능
- 다른 사용자는 현재 사용자가 수행한 명령의 결과를 볼 수 없다
- 변경된 행은 잠금(LOCKING)이 설정되어 다른 사용자가 변경할 수 없다
COMMIT 이후의 데이터 상태
- 데이터에 대한 변경 사항이 DB에 반영
- 이전 데이터는 영원히 잃어버리게 된다.
- 모든 사용자는 결과를 볼 수 있다.
- 관련된 행에 대한 잠금(LOCKING)이 풀리고, 다른 사용자들이 행을 조작할 수 있다.
SQL Server 트랜잭션 3가지 방식
- AUTO COMMIT
- 암시적 트랜잭션
Oracle과 같은 방식, 인스턴스 단위 또는 세션 단위로 설정 가능(SET IMPLICIT TRANSACTION ON) - 명시적 트랜잭션
트랜잭션의 시작과 끝을 모두 사용자가 명시적으로 지정하는 방식
BEGIN TRANSACTION (BEGIN TRAN 구문도 가능)으로 트랜잭션 시작 COMMIT로 종료 또는 ROLLBACK TRANSACTION으로 종료. ROLLBACK 구문을 만나면 최초 BEGIN TRANSACTION 시점까지 모두 ROLLBACK
3) ROLLBACK
ROLLBACK 후 데이터 상태
- 데이터에 대한 변경 사항 취소
- 이전 데이터는 다시 재저장
- 관련된 행에 대한 잠금(LOCKING)이 풀리고 다른 사용자들이 행을 조작할 수 있다.
COMMIT과 ROLLBACK을 사용했을 때 효과
- 데이터 무결성 보장
- 영구적인 변경을 하기 전에 데이터의 변경 사항 확인 가능
- 논리적으로 연관된 작업을 그룹핑하여 처리 가능
4) SAVEPOINT
SAVEPOINT를 정의하면 전체 작업을 ROLLBACK 하는 것이 아니라 현시점에서 SAVEPOINT까지 트랜잭션의 일부만 ROLLBACK 한다.
'자격증 > SQLD' 카테고리의 다른 글
| SQLD / 과목 2 / 제 1장 SQL 기본 / GROUP BY, HAVING절, ORDER BY절, 조인(JOIN) (0) | 2023.03.10 |
|---|---|
| SQLD / 과목 2 / 제 1장 SQL 기본 / WHERE, 함수(FUNCTION) (0) | 2023.03.10 |
| SQLD / 과목 2 / 제 1장 SQL 기본 / 관계형 DB의 개요, DDL (0) | 2023.03.09 |
| SQLD / 과목 1 / 제 2장 데이터 모델과 성능 / 분산 데이터베이스와 성능 (0) | 2023.03.09 |
| SQLD / 과목 1 / 제 2장 데이터 모델과 성능 / 데이터베이스 구조와 성능 (0) | 2023.03.08 |