정보처리기사 실기 정리 7
📘 7단원 : SQL 응용 - 데이터베이스 기본, 응용 SQL 작성하기, 절차형 SQL 활용하기, 데이터 조작 프로시저 최적화
🎓 1. 데이터베이스 기본
✏️ 트랜잭션
🏷️ 트랜잭션
📘 트랜잭션의 개념
인가받지 않은 사용자로부터 데이터를 보호하기 위해 DBMS가 가져야 하는 특성이자, 데이터베이스 시스템에서 하나의 논리적 기능을 정상적으로 수행하기 위한 작업의 기본 단위
🏷️ 트랜잭션의 특성
- 원자성(Atomicity) : 분해가 불가능한 작업의 최소 단위
- 일관성(Consistency) : 트랜잭션이 성공 후 항상 일관된 데이터베이스 상태를 보존해야하는 특성
- 격리성(Isolation) : 트랜잭션 실행 중 생성하는 연산의 중간 결과를 다른 트랜잭션이 접근 불가능한 특성
- 영속성(Durability) : 성공이 완료된 트랜잭션의 결과는 영속적으로 데이터베이스에 저장하는 특성
🐥 ACID
🏷️ 트랜잭션의 상태
- 활동 상태 : 초기 상태, 트랜잭션이 실행 중일 때 가지는 상태
- 부분 완료 상태 : 마지막 명령문이 실행된 후에 가지는 상태
- 완료 상태 : 트랜잭션이 성공적으로 완료된 후에 가지는 상태
- 실패 상태 : 정상적인 실행이 더 이상 진행될 수 없을 때 가지는 상태
- 철회 상태 : 트랜잭션이 취소되고 데이터베이스가 트랜잭션 시작 전 상태로 환원된 상태
🐥 활부완실철
== 이번달 할부(활부)금 완전 싫죠~(완실철)
🏷️ 트랜잭션 제어
- 커밋 : 트랜잭션 확정
- 롤백 : 트랜잭션 취소
- 체크포인트 : 저장 시기 설정
🐥 커롤체
🏷️ 병행 제어 기법의 종류
- 로킹 : DB의 무결성과 일관성 보장을 위해 트랜잭션의 순차적 진행을 보장하는 직렬화 기법
- 낙관정 검증 : 트랜잭션이 어떠한 검증도 수행하지 않고 일단 트랜잭션을 수행하고 종료 시 검증을 수행하여 데이터베이스에 반영하는 기법
- 타임 스탬프 순서 : 트랜잭션이 갱신한 데이터 사이에 실행하기 전에 타임 스탬프를 부여하여 부여된 시간에 따라 트랜잭션을 수행하는 기법
- 다중버전 동시성 제어 : 타임스탬프와 접근하려는 타임스탬프를 비교하여 직렬가능성이 보장되는 적절한 버전을 선택하여 접근하도록 하는 기법
🐥 로 낙타다
🏷️ 회복 기법의 종류
📘 로그 기반 회복 기법
- 지연 갱신 회복 기법 : 트랜잭션이 완료되기 전까지 데이터베이스에 기록하지 않는 기법
- 즉각 갱신 회복 기법 : 트랜잭션 수행 중 갱신 결과를 바로 DB에 반영하는 기법
🐥 회로체크
📘 체크 포인트 회복 기법 : 장애 방생 시 검사점 이후에 처리된 트랜잭션만 장애 발생 이전의 상태로 복원
📘 그림자 페이징 회복 기법 : 데이터베이스 트랜잭션 수행 시 복제본을 생성하여 복구
✏️ DDL
🏷️ DDL의 개념
데이터를 정의하는 언어
🏷️ DDL의 대상
📘 도메인 : 하나의 속성이 가질 수 있는 원자값들의 집합
📘 스키마 : 데이터베이스의 구조, 제약조건 등을 담고 있는 기본적인 구조
- 외부 스키마 : 사용자나 개발자의 관점에서 필요로 하는 DB의 논리적 구조 / 사용자 뷰
- 개념 스키마 : DB의 전체적인 논리 구조 / 전체적인 뷰
- 내부 스키마 : 물리적 저장장치의 관점에서 보는 DB의 구조 / 레코드 형식 정의
📘 테이블 : 데이터의 저장 공간
📘 뷰 : 하나 이상의 물리 테이블에서 유도되는 가상의 테이블
📘 인덱스 : 검색을 빠르게 하기 위한 데이터 구조
🐥 도스테뷰인
🏷️ 테이블의 용어
- 튜플 / 행 / 레코드 / 릴레이션 / 카디널리티 : 가로
- 애트리뷰트 / 열 / 디그리 / 차수 : 세로
 (도메인 : 애트리뷰트가 취할 수 있는 같은 타입의 원자값 들의 집합)
🏷️ 인덱스의 종류
- 순서 인덱스 : 데이터가 정렬된 순서로 생성되는 인덱스
- 해시 인덱스 : 해시 함수에 의해 직접 데이터에 키 값으로 접근하는 인덱스
- 비트맵 인덱스 : 컬럼에 적은 개수 값이 저장될 경우 선택하는 인덱스
- 함수기반 인덱스 : 수식이나 함수를 적용하여 만든 인덱스
- 단일 인덱스 : 하나의 컬럼으로만 구성한 인덱스
- 결합 인덱스 : 두 개 이상의 컬럼으로 구성한 인덱스
- 클러스터드 인덱스 : 기본 키 기준으로 레코드를 묶어서 저장하는 인덱스
🐥 순해비함 단결클
🏷️ DDL 명령어
CRATE + ALTER + DROP + TRUNCATE
🐥 크알드트
== 크리스마스를 위한 계란 알 두 트럭
❤️ 컬럼 추가
ALTER TABLE 사원 ADD 전화번호 VARCHAR(11) UNIQUE; 
❤️ 컬럼 수정
ALTER TABLE 사원 MODIFY 전화번호 VARCHAR(11) UNIQUE; 
❤️ 컬럼 삭제
ALTER TABLE 사원 DROP 생년월일;
❤️ 테이블 삭제
DROP TABLE 사원;
❤️ 테이블 내 데이터 삭제
TRUNCATE TABLE 사원;
🧡 뷰 생성
CREATE VIEW 사원뷰 AS
SELECT 사번, 이름
FROM 사원
WHERE 성별 = 'M';
🧡 뷰 교체
CREATE OR REPLACE VIEW 사원 AS
조회쿼리;
🧡 뷰 삭제
DROP VIEW 사원;
💛 인덱스 생성
CREATE INDEX 사번인덱스 ON 사원(사번);
💛 인덱스 수정
ALTER INDEX 사번인덱스 ON 사원(사번);
💛 인덱스 삭제
DROP INDEX 사번인덱스;
✏️ DML
🏷️ DML의 개념
데이터 조작어
🏷️ DML 명령어
SELECT + INSERT + UPDATE + DELETE
🐥 세인업데
== 내 친구 세인이 집에 업데
🏷️ WHERE 절
📘 패턴 : LIKE
- % : 0개 이상의 문자열과 일치
- [] : 1개의 문자와 일치
- [^] : 1개의 문자와 불일치
- _ : 특정 위치의 1개의 문자와 일치
🏷️ 조인
📘 내부 조인
SELECT A.컬럼, A.컬럼2, B.컬럼1, B.컬럼2
FROM 테이블1 A JOIN 테이블2 B
ON 조인조건
WHERE 검색조건
📘 왼쪽 외부 조인
SELECT A.컬럼, A.컬럼2, B.컬럼1, B.컬럼2
FROM 테이블1 A LEFT JOIN 테이블2 B
ON 조인조건
WHERE 검색조건
🏷️ 집합 연산자
- UNION : 중복 행이 제거된 쿼리 결과를 갖는 집합 연산자
- UNION ALL : 중복 행이 제거되지 않은 결과를 갖는 집합 연산자
- INTERSECT : 두 쿼리 결과에 공통적으로 존재하는 결과를 갖는 집합 연산자
- MINUS : 첫 쿼리에만 있고 두 번째 쿼리에는없는 결과를 반환하는 집합 연산자
💚 데이터 삽입
INSERT INTO 학생(학번, 성명, 학년, 수강과목)
VALUES (6677,'장길산',3,'수학');
💚 데이터 변경
UPDATE 학생
SET 주소 = '인천'
WHERE 이름 = '장길산';
💚 데이터 삭제
DELETE FROM 학생
WHERE 이름 = '장길산';✏️ DCL
🏷️ DCL의 개념
데이터 제어어
🏷️ DCL 명령어
GRANT + REVOKE
💙 권한 부여
GRANT UPDATE ON 학생 TO 장길산;
💙 권한 회수
REVOKE UPDATE ON 학생 FROM 장길산;🎓 2. 응용 SQL 작성하기
✏️ 집계성 SQL 작성
🏷️ 데이터 분석 함수의 개념
총합, 평균 등의 데이터 분석을 위해 복수 행 기준의 데이터를 모아서 처리하는 것을 목적으로 하는 다중 행 함수
🏷️ 그룹 함수
📘 ROLLUP 함수
SELECT DEPT, JOB, SUM(SALARY)
FROM DEPT_SALARY
[WHERE~]
GROUP BY ROLLUP(DEPT, JOB);
[HAVING~][ORDER BY~]
📘 CUBE 함수 : 결합 가능한 모든 값에 대해 다차원 집계를 생성하는 그룹 함수
📘 GROUPING SETS 함수 : 집계 대상 컬럼들에 대한 개별 집계를 구하고 순서와 무관한 결과 도출 가능
🏷️ 윈도 함수
📘 윈도 함수 개념
데이터베이스를 사용한 온라인 분석 처리 용도로 사용하기 위해 표준 SQL에 추가된 함수
OLAP 함수라고도 부른다
📘 윈도 함수 분류
- 순위 함수 : RANK, DENSE_RANK, ROW_NUMBER 함수
- 행 순서 함수 : FIRST_VALUE, LAST_VALUE, LEG, LEAD 함수
- 그룹내 비율 함수 : RATIO_TO_REPORT, PERCENT_RANK 함수
🐥 순행비
🏷️ 순위 함수
- RANK : 동일 순위의 레코드 존재 시 후순위는 넘어감(1위, 2위, 2위, 4위)
- DENSE_RANK : 동일 순위 시 후순위를 넘어가지 않음(1위, 2위, 2위, 3위)
- ROW_NUMBER : 동일 순위가 존재해도 무관하게 연속 번호 부여(1위, 2위, 3위, 4위)
🎓 3. 절차형 SQL 활용하기
✏️ 절차형 SQL
🏷️  절차형 SQL 종류
- 프로시저 : 일련의 쿼리들을 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합
- 사용자 정의함수 : 일련의 SQL을 수행하고 수행결과를 단일 값으로 반환가능한 SQL
- 트리거 : DB에서 이벤트가 발생할 때마다 관련 작업이 자동으로 수행되는 SQL
✏️ 프로시저
🏷️  프로시저 구성
선언부 + 시작/종료부 + 제어부 + SQL + 예외부 + 반환부
🐥 디비컨 SET
== DB 컨닝 세트
✏️ 사용자 정의함수
🏷️ 사용자 정의함수 구성
선언부 + 시작/종료부 + 제어부 + SQL + 예외부 + 실행부
🐥 디비컨 SER
== DB 컨설팅
✏️ 트리거
🏷️ 트리거 구성
선언부 + 이벤트부 + 시작/종료부 + 제어부 + SQL + 예외부
🐥 디이비컨 SE
== D~B 컨닝 세트
🎓 4. 데이터 조작 프로시저 최적화
✏️ 데이터 조작 프로시저 성능개선
🏷️ 옵티마이저 통계 확인
📘 옵티마이저 개념
옵티마이저는 SQL을 가장 빠르고 효율적으로 수행할 최적의 처리경로를 생성해주는 DBMS의 핵심 내부 엔진
📘 옵티마이저 유형
규칙기반 옵티마이저(RBO) + 비용기반 옵티마이저(CBO)
📘 힌트 사용
옵티마이저가 항상 최선의 실행 계획을 수립할 수 없어 명시적인 힌트를 제공한다.
🎓 SQL문 정리
< DDL 함수 >
❤️ 컬럼 추가
ALTER TABLE 사원 ADD 전화번호 VARCHAR(11) UNIQUE; 
❤️ 컬럼 수정
ALTER TABLE 사원 MODIFY 전화번호 VARCHAR(11) UNIQUE; 
❤️ 컬럼 삭제
ALTER TABLE 사원 DROP 생년월일;
❤️ 테이블 삭제
DROP TABLE 사원;
❤️ 테이블 내 데이터 삭제
TRUNCATE TABLE 사원;
🧡 뷰 생성
CREATE VIEW 사원뷰 AS
SELECT 사번, 이름
FROM 사원
WHERE 성별 = 'M';
🧡 뷰 교체
CREATE OR REPLACE VIEW 사원 AS
조회쿼리;
🧡 뷰 삭제
DROP VIEW 사원;
💛 인덱스 생성
CREATE INDEX 사번인덱스 ON 사원(사번);
💛 인덱스 수정
ALTER INDEX 사번인덱스 ON 사원(사번);
💛 인덱스 삭제
DROP INDEX 사번인덱스;
< DML 함수 >
💚 데이터 삽입
INSERT INTO 학생(학번, 성명, 학년, 수강과목)
VALUES (6677,'장길산',3,'수학');
💚 데이터 변경
UPDATE 학생
SET 주소 = '인천'
WHERE 이름 = '장길산';
💚 데이터 삭제
DELETE FROM 학생
WHERE 이름 = '장길산';
< DCL 함수 >
💙 권한 부여
GRANT UPDATE ON 학생 TO 장길산;
💙 권한 회수
REVOKE UPDATE ON 학생 FROM 장길산;
                
                    
        
    
    
    
    
    
                
                
                
                
                    
                        
                            
                            
                            Author And Source
                            
                            이 문제에 관하여(정보처리기사 실기 정리 7), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
                                
                                https://velog.io/@seeseal/정보처리기사-실기-정리-7
                            
                            
                            
                                저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
                            
                            
                                
                                
                                 우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                            
                            
                        
                    
                
                
                
            
< DDL 함수 >
❤️ 컬럼 추가
ALTER TABLE 사원 ADD 전화번호 VARCHAR(11) UNIQUE; 
❤️ 컬럼 수정
ALTER TABLE 사원 MODIFY 전화번호 VARCHAR(11) UNIQUE; 
❤️ 컬럼 삭제
ALTER TABLE 사원 DROP 생년월일;
❤️ 테이블 삭제
DROP TABLE 사원;
❤️ 테이블 내 데이터 삭제
TRUNCATE TABLE 사원;
🧡 뷰 생성
CREATE VIEW 사원뷰 AS
SELECT 사번, 이름
FROM 사원
WHERE 성별 = 'M';
🧡 뷰 교체
CREATE OR REPLACE VIEW 사원 AS
조회쿼리;
🧡 뷰 삭제
DROP VIEW 사원;
💛 인덱스 생성
CREATE INDEX 사번인덱스 ON 사원(사번);
💛 인덱스 수정
ALTER INDEX 사번인덱스 ON 사원(사번);
💛 인덱스 삭제
DROP INDEX 사번인덱스;
< DML 함수 >
💚 데이터 삽입
INSERT INTO 학생(학번, 성명, 학년, 수강과목)
VALUES (6677,'장길산',3,'수학');
💚 데이터 변경
UPDATE 학생
SET 주소 = '인천'
WHERE 이름 = '장길산';
💚 데이터 삭제
DELETE FROM 학생
WHERE 이름 = '장길산';
< DCL 함수 >
💙 권한 부여
GRANT UPDATE ON 학생 TO 장길산;
💙 권한 회수
REVOKE UPDATE ON 학생 FROM 장길산;
Author And Source
이 문제에 관하여(정보처리기사 실기 정리 7), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@seeseal/정보처리기사-실기-정리-7저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)