1. 데이터베이스 기본
트랜잭션 (★★★)
트랜잭션 : 인가받지 않은 사용자로부터 데이터를 보장하기 위해 DBMS 가 가져야 하는 특성이자 DB 시스템에서 하나의 논리적 기능을 정상적으로 수행하기 위한 작업의 기본 단위.
트랜잭션의 특성 (2020년 1회, 2021년 2회)
특성 : ACID (원일격영) 원자성 : 트랜잭션을 구성하는 연산 전체가 모두 정상적으로 실행되거나 모두 취소되어야 하는 성질 일관성 : 시스템이 가지고 있는 고정요소는 트랜잭션 수행 전과 후의 상태가 같아야 되는 성질 격리성 : 동시에 실행되는 트랜잭션들이 서로 영향을 미치지 않아야 하는 성질 영속성 : 성공이 완료된 트랜잭션 결과는 영속적으로 DB에 저장되어야 되는 성질
회복 기법 (2020년 4회, 2022년 1회)
트랜잭션 수행 도중 장애로 인해 손상된 DB를 그 전으로 복구시키는 작업이다.
회복기법 종류
REDO
- 디스크에 저장된 로그를 분석하여 트랜잭션의 시작과 완료에 대한 기록이 있는 트랜잭션들의 작업을 재작업하는 기법
UNDO
- 디스크에 저장된 로그를 분석하여 트랜잭션의 시작은 있지만 완료에 대한 기록은 없는 트랜잭션들이 작업한 변경 내용들을 모두 취소하는 기법
DDL (데이터 정의어)
DDL의 대상 (2020년 3회)
도메인 : 하나의 속성이 가질 수 있는 원자값들의 집합 스키마 : 데이터베이스의 구조, 제약조건 등의 정보를 담고 있는 기본구조 테이블 : 데이터 저장 공간 뷰 : 하나 이상의 물리 테이블에서 유도되는 가상의 테이블 인덱스 : 검색을 빠르게 하기위한 데이터 구조
DDL 명령어
생성 : CREATE 수정 : ALTER 삭제 : DROP (오브젝트 삭제), TRUNCATE(오브젝트 내용 삭제)
TABLE 관련 DDL (2022년 3회)
CREATE
CREATE TABLE 테이블명
(
컬럼명 데이터타입 [제약조건].
...
)
예시
CREATE TABLE 사원
(
사번 VARCHAR(10) PRIMARY KEY,
업무 VARCHAR(20) FOREIGN KEY REFERENCES 부서(부서코드),
이름 VARCHAR(10) UNIQUE,
생년월일 CHAR(8) NOT NULL,
성별 CHAR(1) CHECK (성별 = 'M' OR 성별 = 'F'),
입사일 DATE DEFAULT SYSDATE -- SYSDATE는 현재시간/날짜
)
제약조건 PRIMARY KEY : 테이블의 기본 키 FOREIGN KEY : 외래 키 UNIQUE : 유일한 값을 갖도록 하는 제약조건 NOT NULL : NULL 안됌 CHECK : 개발자가 정의해야 함. 참(TRUE) 이어야 하는 조건 DEFAULT : 데이터를 INSERT 할 때 해당 컬럼의 값을 넣지 않는 경우 기본값으로 설정해줌
ALTER
컬럼 추가
ALTER TABLE 테이블명 ADD 컬럼명 데이터타입 [제약조건];
컬럼 수정
ALTER TABLE 테이블명 MODIFY 컬럼명 데이터타입 [제약조건];
컬럼 삭제
ALTER TABLE 테이블명 DROP COLUMN 컬럼명;
DROP
컬럼 삭제
DROP TABLE 테이블명 [CASECADE | RESTRICT];
TRUNCATE
테이블 내의 데이터들 삭제
TRUNCATE TABLE 테이블명;
INDEX
CREATE
CREATE [UNIQUE] INDEX 인덱스명 ON 테이블명(컬럼명1, 컬럼명2, ...);
ALTER
ALTER [UNIQUE] INDEX 인덱스명 ON 테이블명(컬럼명1, 컬럼명2, ...);
DROP
DROP INDEX 인덱스명;
DML (데이터 조작어)
SELECT (조회) (2020년 1회, 2022년 3회)
SELECT [ALL | DISTINCT] 속성명1, 속성명2...
FROM 테이블명1, ...
[WHERE 조건]
[GROUP BY 속성명1, ..]
[HAVING 그룹조건]
[ORDER BY 속성 [ASC | DESC] ];
FROM : 조회할 테이블 명 기술 WHERE : 조건 GROUP BY : 속성값을 그룹으로 분류 HAVING : GROUP BY 에 의해 분류한 후 그룹에 대한 조건 지정 ORDER BY : 정렬 (ASC : 오름차순, DESC: 내림차순, → 생략시 오름차순)
WHERE 절 (2020년 2회, 2021년 2회, 2022년 2회)
범위 : 컬럼 BETWEEN 값1 AND 값2 =( 컬럼 >= 값1 AND 컬럼 ⇐ 값2) 값 1보다 크거나 같고, 값2보다 작거나 같은 데이터 조회
집합 : IN, NOT IN 패턴 : 컬럼 LIKE 패턴
ORDER BY 절 (2021년 2회, 2022년 1회)
속성값을 정렬. (ASC : 오름차순, DESC: 내림차순, → 생략시 오름차순)
JOIN (2021년 2회)
2개 이상의 테이블을 연결하여 데이터를 검색하는 방법
내부조인 : 공통 존재 컬럼의 값이 같은 경우 추출 외부 조인 : 왼쪽 오른쪽 완전 3가지가 있다.
집합연산자
UNION : 합집합 (중복 행 제거) UNION ALL : 합집합 (중복 행 제거 X) INTERSECT : 교집합 MINUS : 차집합
INSERT (삽입)
INSERT INTO 테이블명(속성명1, ...)
VALUES (데이터1, ...);
UPDATE(갱신)
UPDATE 테이블명
SET 속성명 = 데이터, ...
WHERE 조건;
DELETE(삭제) (2020년 4회)
DELETE FROM 테이블명
WHERE 조건;
DCL (데이터 제어어) (2021년 3회)
DB 관리자가 데이터 보안, 무결성 유지, 병행 제어, 회복을 위해 관리자(DBA) 가 사용하는 제어용 언어
GRANT(사용권한부여)
GRANT 권한 ON 테이블 TO 사용자;
REVOKE(사용 권한 취소)
REVOKE 권한 ON 테이블 FROM 사용자;
2. 응용 SQL 작성하기
1. 집계성 SQL 작성 (★★★)
데이터 분석 함수의 개념
데이터 분석을 위해선 복수 행 기준의 데이터를 모아서 처리하는 것을 목적으로 하는 다중 행 함수이다.
다중 행 연산자 (2022년 2회)
다중 행 연산자는 서브 쿼리의 결과가 여러 개의 튜플을 반환하는 다중 행 서브쿼리에서 사용되는 연산자다.
IN : 리턴되는 값 중에서 조건에 해당하는 값이 잇음 참 ANY : 서브쿼리에 의해 리턴되는 각각의 값과 조건을 비교하여 하나 이상을 만족하면 참 ALL : 리턴되는 모든 값과 조건 값을 비교하여 모든 값을 만족해야 참 EXISTS : 만족하는 값이 하나라도 존재하면 참
집계함수
여러 행 또는 테이블 전체 행으로부터 하나의 결괏값을 반환하는 함수다.
집계 함수의 종류 (2021년 1회)
MAX, MIN, COUNT
3. SQL 활용 및 최적화
1. 절차형 SQL (★)
SQL 언어에서도 절차 지향적인 프로그램이 가능하도록 하는 트랜잭션 언어이다.
종류
- 프로시저 : 일련의 쿼리들을 마치 하나의 함수처럼 실행하기 위한 쿼리 집합
- 사용자 정의 함수 : 일련의 SQL 처리를 수행하고, 수행결과를 단일 값으로 반환할 수 있는 절차형 SQL
- 트리거 : 이벤트가 발생할 때 마다 관련 작업이 자동으로 수행되는 절차형 SQL