본문 바로가기
기본 지식

데이터베이스 기본

by HJINHA 2021. 7. 3.

1. 트랜잭션

- 개념: DB 시스템에서 하나의 논리적 기능을 정상적으로 수행하기 위한 작업의 기본 단위

- 특성 (ACID)

1) 원자성 (Atomicity): 분해가 불가능한 작업의 최소 단위. 하나라도 실패하면 전체가 취소

2) 일관성 (Consistency): 트랜잭션 실행 성공 후 항상 일관된 DB 상태를 보존해야 함

3) 격리성 (Isolation): 트랜잭션 실행 중 다른 트랜잭션이 접근 불가

4) 영속성 (Durability): 트랜잭션 결과는 DB에 영속적으로 저장

- TCL 명령어 (트랜잭션 제어 언어)

1) 커밋 (COMMIT): 트랜잭션 확정. 메모리에 영구 저장

2) 롤백 (ROLLBACK): 트랜잭션 취소. 저장 무효화

3) 체크포인트 (CHECKPOINT): 롤백을 위한 시점 지정

- 병행 제어

: 여러 트랜잭션을 수행할 때, DB 일관성 유지를 위해 상호작용을 제어

- 종류: 로킹, 낙관적 검증, 타임 스탬프 순서, 다중버전 동시성 제어

- 회복 기법

: 트랜잭션 수행 도중 손상된 DB를 정상적인 상태로 복구시키는 작업

- 종류

1) 로그 기반 회복 기법: 지연 갱신 회복 기법 / 즉각 갱신 회복 기법

2) 체크 포인트 회복 기법

3) 그림자 페이징 기법: 복제본 이용

 

2. DDL (데이터 정의어)

- 개념: 데이터를 정의하는 언어. 특정 구조를 생성, 변경, 삭제, 이름을 바꾸는 명령어들

- DDL의 대상

1) 도메인: 한 속성이 가질 수 있는 원자값들의 집합

2) 스키마: 구조, 제약조건 등 정보를 담는 기본적인 구조

(1) 외부 스키마: 사용자 뷰. 서브 스키마

(2) 개념 스키마: 전체적인 뷰. DB의 전체적인 논리 구조

(3) 내부 스키마: 물리적 저장장치 관점.

3) 테이블: 데이터 저장 공간

4) : 물리 테이블에서 유도되는 가상 테이블. 논리적 데이터 독립성 & 보안. 자체 인덱스와 정의 변경 불가

5) 인덱스

- 명령어

: CREATE, ALTER, DROP(오브젝트 삭제), TRUNCATE(오브젝트 내용 삭제)

1) TABLE

(1) 테이블 생성

- CREATE TABLE 사원 (

사번 VARCHAR(10) PRIMARY KEY,

업무 VARCHAR(20) FOREIGN KEY REFERENCES 부서(부서코드),

이름 VARCHAR(10) UNIQUE,

생년월일 CHAR(8) NOT NULL,

성별 CHAR(1) CHECK(성별 = ‘F’ OR 성별 = ‘M’),  // 참이어야 하는 조건을 지정

입사일 DATE DEFAULT SYSDATE  // insert할 때 값을 넣지 않는 경우 기본값

);

(2) 테이블 수정

- ALTER TABLE 사원 ADD 전화번호 VARCHAR(11) UNIQUE;  // 컬럼 추가

- ALTER TABLE 사원 MODIFY 이름 VARCHAR(30) NOT NULL;  // 컬럼 수정

- ALTER TABLE 사원 DROP 생년월일;  // 컬럼 삭제

(3) 테이블 삭제

- DROP TABLE 테이블명 [CASCADE | RESTRICT];  // CASCADE: 연쇄 제거, RESTRICT: 참조 중이면 제거X

(4) 테이블 내 데이터 삭제

- TRUNCATE TABLE 테이블명;

2) VIEW

- CREATE VIEW 사원뷰 AS SELECT 사번, 이름 FROM 사원 WHERE 성별 = ‘F’;

* VIEW 테이블 내 SELECT 문에서는 UNIONORDER BY 절을 사용할 수 없음

- CREATE OR REPLACE VIEW 뷰이름 AS 조회쿼리;  // 뷰를 교체

- DROP VIEW 뷰이름;

3) INDEX

- CREATE [UNIQUE] INDEX 인덱스명 ON 테이블명(컬럼명1, 컬럼명2, ...);

- ALTER [UNIQUE] INDEX 인덱스명 ON 테이블명(컬럼명1, 컬럼명2, ...);

- DROP INDEX 인덱스명;

 

 

 

3. DML (데이터 조작어)

: DB의 자료들을 입력, 수정, 삭제, 조회하는 언어

- 명령어: SELECT, INSERT, UPDATE, DELETE

1) SELECT

SELECT [ALL | DISTINCT] 속성명1, 속성명2, ... FROM 테이블명1, ...

[WHERE 조건]

[GROUP BY 속성명1, ...]

[HAVING 그룹조건]

[ORDER BY 속성 [ASC | DESC]];

(1) WHERE

- 비교: =, <>, !=, <, <=, >, >=

- 범위: 컬럼 BETWEEN 1 AND 2

- 집합: 컬럼 IN (1, 2, ...)  /  컬럼 NOT IN (1, 2, ...)

- 패턴: 컬럼 LIKE 패턴  (%: 0개이상 일치, []: 1개 일치, [^]: 1개 불일치, _: 특정위치 1개 일치

- NULL: 컬럼 IS NULL, IS NOT NULL

- 복합조건: AND, OR, NOT

(2) GROUP BY

SELECT 부서, SUM(급여) AS 급여합계

FROM 급여

GROUP BY 부서;

(3) HAVING  // GROUP BY에 의해 분류한 후 그룹에 대한 조건 지정

SELECT 직책, SUM(급여) AS 급여합계

FROM 급여

GROUP BY 직책, 부서

HAVING 급여합계 >= 5000;

(4) ORDER BY

- ASC, DESC 명시되지 않은 경우 ASC가 기본값(오름차순)

(5) JOIN

(1) 내부 조인: 공통 존재 컬럼의 값이 같은 경우를 추출

SELECT A.컬럼1, A.컬럼2, ..., B.컬럼1, ...

FROM 테이블1 A [INNER] JOIN 테이블2 B ON 조인조건 [WHERE 검색조건];

(2) 외부 조인: 왼쪽 외부 조인(왼쪽 테이블의 모든 데이터와 오른쪽 테이블의 동일 데이터를 추출),
                          
오른쪽 외부 조인, 완전 외부 조인(FULL. 양쪽의 모든 데이터)

SELECT A.컬럼1, A.컬럼2, ..., B.컬럼1, ...

FROM 테이블1 A LEFT [OUTER] JOIN 테이블2 B ON 조인조건 [WHERE 검색조건];

(3) 교차 조인: 조인 조건이 없는 모든 데이터 조합을 추출

SELECT 컬럼1, 컬럼2, ... FROM 테이블1 CROSS JOIN 테이블2

(4) 셀프 조인: 자기 자신에게 별칭을 지정한 후 다시 조인

SELECT A.컬럼1, A.컬럼2, ..., B.컬럼1, ...

FROM 테이블1 A [INNER] JOIN 테이블1 B ON 조인조건 [WHERE 검색조건];

(6) 서브쿼리

: SQL문 안에 포함된 또다른 SQL

SELECT MAX(가격) FROM 도서가격 A, (SELECT 책번호 FROM 도서 WHERE 책명=’자료구조) B

WHERE A.책번호 = B.책번호

(7) 집합 연산자

- UNION, UNION ALL(중복 허용), INTERSECT, MINUS

SELECT ENAME FROM EMP WHERE SAL <= 2000 INTERSECT SELECT ENAME FROM EMP WHERE SAL >= 1500;

2) INSERT

INSERT INTO 테이블명(속성명1, ...) VALUES (데이터1, ...)  // 속성명은 생략 가능. 개수, 타입 일치해야 함

3) UPDATE

UPDATE 학생 SET 주소 = ‘인천WHERE 이름 = ‘장길산’;

4) DELETE

DELETE FROM 테이블명 WHERE 조건;

 

4. DCL (데이터 제어어)

- 보안, 무결성, 병행제어, 회복을 위해 관리자가 사용하는 언어

- 유형: GRANT, REVOKE

- GRANT 권한 ON 테이블 TO 사용자;

- REVOKE 권한 ON 테이블 FROM 사용자;

'기본 지식' 카테고리의 다른 글

절차형 SQL  (0) 2021.07.03
데이터 분석 함수  (0) 2021.07.03
인터페이스 구현  (0) 2021.07.02
통합 구현  (0) 2021.07.01
물리 데이터 저장소  (0) 2021.07.01

댓글