Ⅷ. SQL 응용 - 알고가기!!
- 데이터 조작어 [DML; Data Manipulate Language]
- 데이터베이스에 저장된 자료들을 입력, 수정, 삭제, 조회 하는 언어로서, SELECT, INSERT, UPDATE, DELETE 명령이 존재.
- TRUNCATE
- 데이터가 하나도 없이 테이블 구조만 남은 최초 테이블이 만들어진 상태로 돌아가도록 하는 명령.
- 프로시저 구성 ( Tip. 디비컨 SET )
- 선언부(DECLARE) : 프로시저의 명칭, 변수와 인수 그리고 그에 대한 데이터 타입을 정의.
- 시작/종료부(BEGIN/END) : 프로시저의 시작과 종료를 표현하며, BEGIN/END가 쌍을 이룸 / 다수 실행을 제어하는 기본적 단위가 되며 논리적 프로세스를 구성.
- 제어부(CONTROL) : 순차적으로 처리 / 조건문과 반복문을 이용하여 문장을 처리.
- SQL : DML을 주로 사용 / 자주 사용되지 않지만 DDL중 TRUNCATE 사용.
- 예외부(EXCEPTION) : BEGIN~END 절에서 실행되는 SQL문이 실행될 때 예외 발생 시 예외 처리 방법을 정의하는 처리부.
- 실행부(TRANSACTION) : 프로시저에서 수행된 DML 수행 내역의 DBMS 적용 또는 취소 여부를 결정하는 처리부.
- 소프트웨어 테스트
- 개발된 응용 애플리케이션이나 시스템이 사용자가 요구하는 기능과 성능, 사용성, 안정성 등을 만족하는지 확인하고 노출되지 않은 숨어있는 소프트웨어의 결함을 찾아내는 활동.
- 살충제 패러독스
- 동일한 테스트 케이스에의한 반복적 테스트는 새로운 버그를 찾지 못한다는 소프트웨어 테스트 원리.
- 오류-부재의 궤변
- 요구사항을 충족시켜주지 못한다면, 결함이 없다고 해도 품질이 높다고 볼 수 없다는 소프트웨어 테스트 원리.
- 테스트케이스
- 테스트를 위한 설계 산출물로, 응용 소프트웨어가 사용자의 요구사항을 준수하는지 확인하기 위해 설계된 입력값, 실행 조건, 기대 결과로 구성된 테스트 항목의 명세서.
- 테스트 시나리오
- 테스트 수행을 위한 여러 개의 테스트 케이스의 집합으로 테스트 케이스의 동작 순서를 기술한 문서이며, 테스트 절차를 명세한 문서이다.
- 테스트 결과서
- 테스트 프로세스를 리뷰하고, 테스트 결과를 평가하고 리포팅하는 문서이다.
- SQL 유형 ( Tip. 세인업데 )
- SELECT / INSERT / UPDATE / DELETE
- DML (데이터 조작어)
- 테이블에 데이터를 검색, 삽입, 수정, 삭제하는데 사용하며 SELECT, INSERT, UPDATE, DELETE 문이 있다.
- 워크스루
- 정적 테스트의 유형으로 검토 요청 발생시 요구사항, 소스 코드, 테스트 유형으로 진행하는 비정형적 테스트.
- 인스펙션
- 정적테스트의 유형으로 개발단계별 산출물을 검토하기 위한 공식적인 검토 기법.
- 동등 분할 테스트
- 블랙박스 테스트 유형에 속하며, 입력 데이터의 영역을 유사한 도메인별로 유효값/무효값을 그룹핑하여 대표 값 테스트 케이스를 도출하는 기법.
- 사용자 정의함수 구성 ( Tip. 디비컨 SER )
- 선언부(DECLARE) : 사용자 정의함수의 명칭, 변수와 인수 그리고 그에 대한 데이터 타입을 정의.
- 시작/종료부(BEGIN/END) : 사용자정의함수의 시작과 종료를 표현하며, BEGIN/END가 쌍을 이룸 / 다수 실행을 제어하는 기본적 단위가 되며 논리적 프로세스를 구성.
- 제어부(CONTROL) : 순차적으로 처리 / 비교 조건에 따라 블록 또는 문장 실행 / 조건에 따라 반복 실행.
- SQL : 조회 용도로 SELECT 문을 사용 / INSERT, DELETE, UPDATE 는 사용 불가.
- 예외부(EXCEPTION) : BEGIN~END 절에서 실행되는 SQL문이 실행될 때 예외 발생 시 예외 처리 방법을 정의하는 처리부.
- 반환부(RETURN) : 호출문에 대한 함수 값을 반환.
- 트리거의 구성 ( Tip. 디이비컨 SE )
- 선언부(DECLARE) : 트리거의 명칭을 정의.
- 이벤트부(EVENT) : 트리거가 실행되는 타이밍, 이벤트를 명시.
- 시작/종료부(BEGIN/END) : 트리거의 시작과 종료를 표현하며, BEGIN/END가 쌍을 이룸 / 다수 실행을 제어하는 기본적 단위가 되며 논리적 프로세스를 구성.
- 제어부(CONTROL) : 순차적으로 처리 / 비교 조건에 따라 블록 또는 문장을 실행 / 조건에 따라 반복.
- SQL : DML을 주로 사용 / 자주 사용되지 않지만 DDL중 TRUNCATE등 사용.
- 예외부(EXCEPTION) : BEGIN~END 절에서 실행되는 SQL문이 실행될 때 예외 발생 시 예외 처리 방법을 정의하는 처리부.
- 경계값 분석 테스트
- 블랙박스 테스트유형에 속하며, 등가분할 후 경계값 부분에서 오류 발생 확률이 높기에 경계 값을 포함하여 테스트 케이스를 설계하는 기법.
- 검증 [Verification]
- 테스트 시각에 따른 분류에서 소프트웨어 과정을 테스트하고 개발자 혹은 시험자의 시각으로 소프트웨어가 명세화된 기능을 올바로 수행하는지 알아보는 과정.
- 성능 [Performance]
- 사용자의 이벤트에 시스템이 응답하는 시간, 특정시간 내에 처리하는 업무량, 사용자 요구에 시스템이 반응하는 속도 등을 측정하는 테스트.
- 회귀(Regression) 테스트
- 변경 또는 수정된 코드에 대하여 새로운 결함 발견여부를 평가하는 테스트.
- 구조 기반 테스트
- 소프트웨어 내부 논리 흐름에 따라 테스트 케이스를 작성하고 확인하는 테스트 기법.
- 테스트 오라클
- 테스트의 결과가 참인지 거짓인지를 판단하기 위해서 사전에 정의된 참값을 입력하여 비교하는 기법.
- 테스트 오라클의 종류
- 참오라클 / 샘플링 오라클 / 휴리스틱오라클 / 일관성 검사 오라클.
- 샘플링 오라클
- 특정한 몇 개의 입력값에 대해서만 기대하는 결과를 제공해 주는 오라클.
- DB 프로시저의 개념
- 절차형 SQL을 활용하여 특정기능을 수행할 수 있는 트랜잭션 언어.
- 프로시저 선언부 모드
- IN : 운영체제에서 프로시저로 값을 전달하는 모드.
- OUT : 프로시저에서 처리된 결과를 운영체제로 전달하는 모드.
- INOUT : IN과 OUT의 두가지 기능을 동시에 수행하는 모드.
- 프로시저 실행부
- COMMIT : 하나의 트랜잭션이 성공적으로 끝났을 때 사용하는 연산.
- ROLLBACK : 하나의 트랜잭션이 비정상적으로 종료되어 처음부터 다시 시작하거나, 부분적으로 연산을 취소하는 연산.
- DB 사용자 정의함수 개념
- 절차형 SQL을 활용하여 일련의 SQL처리를 수행하고, 수행결과를 단일값으로 반환할 수 있는 절차형 SQL.
- 트리거 개념
- 특정 테이블에 삽입, 수정, 삭제 등의 데이터 변경 이벤트 발생시 DBMS에서 자동적으로 실행되도록 구현된 프로그램.
- 트리거 BEFORE / AFTER 키워드
- BEFORE : 이벤트부의 테이블에 대한 INSERT / UPDATE / DELETE를 수행하기 전에 트리거가 실행되도록 지정하는 명령.
- AFTER : 이벤트부의 테이블에 대한 INSERT / UPDATE / DELETE가 성공적으로 실행되었을 때만 트리거가 실행되도록 지정하는 명령.
- 인수테스트
- 테스트 레벨의 종류로 계약상의 요구사항이 만족되었는지 확인하기 위한 테스트 단계.
- 통합테스트
- 소프트웨어 각 모듈 간의 인터페이스 관련 오류 및 결함을 찾아내기 위한 체계적인 테스트 기법.
- 드라이버
- 상위의 모듈에서 데이터의 입력과 출력을 확인하기 위한 더미 모듈로 상향식 통합에 사용.
- 빅뱅테스트
- 모든 모듈을 동시에 통합 후 테스트를 수행하는 방식.
- 드라이버/스텁 없이 실제 모듈로 테스트.
- 정적분석도구(Static Analysis Tools)
- 테스트 자동화 도구의 유형 중 하나로 만들어진 애플리케이션을 실행하지 않고 분석하는 방법.
- 목오브젝트(Mock Object)
- 테스트 장치구성요소 중 하나로 사용자의 행위를 조건부로 사전에 입력해 두면, 그 상황에 예정된 행위를 수행하는 객체.
- 테스트 리포팅
- 테스트 리포팅에는 테스트 결과 정리, 테스트 요약문서, 품질 상태, 테스트 결과서, 테스트 실행 절차 및 평가를 포함해야 한다.
- 테스트 결함관리
- 각 단계별 테스트 수행 후 발생한 결함의 재발방지를 위해, 유사 결함 발견 시 처리 시간 단축을 위해 결함을 추적하고 관리하는 활동.
- 결함 추이분석
- 테스트 완료 후 발견된 결함의 결함 관리 측정 지표의 속성 값들을 분석하고, 향후 애플리케이션의 어떤 모듈 또는 컴포넌트에서 결함이 발생할지를 추정하는 작업.
- 결함 분포 분석
- 각 애플리케이션 모듈 또는 컴포넌트의 특정 속성에 해당하는 결함의 수를 측정하여 결함의 분포를 분석할 수 있다.
- 기능기반 커버리지
- 테스트 대상 애플리케이션의 전체 기능을 모수로 설정하고, 실제 테스트가 수행된 기능의 수를 측정하는 방법.
- 조건/결정 커버리지
- 전체 조건식이 참/거짓 한 번씩 가지면서, 개별 조건식이 참/거짓 모두 한 번씩 갖도록 조합하는 테스트 커버리지.
- OLAP [OnLine Analytical Processing]
- 의사결정 지원 시스템으로, 사용자가 동일한 데이터를 여러 기준을 이용하는 다양한 방식으로 바라보면서 다차원 데이터 분석을 할 수 있도록 도와주는 기술.
- 윈도 함수의 분류 ( Tip. 순행비 )
- 순위함수
- 행순서함수
- 그룹내 비율함수
- 주요(Major) 결함
- 기능이 기대와 많이 다르게 동작하거나 그 기능이 해야 하는 것을 못하는 결함으로 기능 장애 등이 속한다.
- 경미한(Minor) 결함
- 사용상의 불편함을 유발하는 결함으로 표준 위반, UI 잘림 등이 여기에 속한다.
- 결함 우선순위
- 결정적(Critical) > 높음(High) > 보통(Medium) > 낮음(Low)
- 처리량 (Throughput)
- 애플리케이션이 주어진 시간에 처리할 수 있는 트랜잭션의 수.
- 웹 애플리케이션의 경우 시간당 페이지 수로 표현.
- 응답시간 (Response Time)
- 애플리케이션 사용자 입력이 끝난 후, 애플리케이션의 응답 출력이 개시될 때까지의 시간으로 애플리케이션의 경우 메뉴 클릭 시 해당 메뉴가 나타나기까지 걸리는 시간.
- TPS (Transaction Per Second)
- 초당 처리 건수를 의미하며, 초당 몇 개의 트랜잭션을 처리할 수 있는지 나타내는 서비스의 성능 지표.
- 나쁜코드(BadCode)
- 다른 개발자가 로직(Logic)을 이해하기 어렵게 작성된 코드.
- API [Application Programming Interface]
- 애플리케이션을 만들기 위한 하위 함수, 프로토콜, 도구들의 집합으로 명확하게 정의된 다양한 컴포넌트 간의 통신 방법.
- Prepared Statement
- 데이터베이스 관리 시스템(DBMS)에서 동일하거나 비슷한 데이터베이스 문을 효율적, 반복적으로 실행하기 위해 사용되는 기능.
- 클린 코드(Clean Code)
- 잘 작성되어 가독성이 높고, 단순하며, 의존성을 줄이고, 중복을 최소화하여 깔끔하게 잘 정리된 코드.
- 정정 분석 도구 종류
- pmd, cppcheck, SonarQube, checkstyle
- GRANT(권한부여) 명령문 ( Tip. 그온투위 )
- GRANT 권한 ON 테이블 TO 사용자 [WITH 권한 옵션];
- REVOKE(권한취소) 명령문 ( Tip. 리온프캐 )
- REVOKE 권한 ON 테이블 FROM 사용자 [CASCADE CONSTRAINTS];
- 집계함수
- 여러 행 또는 테이블 전체 행으로부터 하나의 결과값을 반환하는 함수.
- 종류 : COUNT / SUM / AVG / MAX / MIN / STDDEV(컬럼간 표준편차) / VARIAN(컬럼간 분산)
- 그룹함수
- 테이블의 전체 행을 하나 이상의 컬럼을 기준으로 컬럼 값에 따라 그룹화하여 그룹별로 결과를 출력하는 함수.
- 소그룹 간의 소계 및 중계 등의 중간 합계 분석데이터를 산출하는 함수.
- 윈도함수
- 데이터베이스를 사용한 온라인 분석 처리 용도로 사용하기 위해서 표준 SQL에 추가된 함수.
- ROLLUP
- 지정된 컬럼은 소계 등 중간 집계값을 산출하기 위한 그룹 함수.
- CUBE
- 결합 가능한 모든 값에 대해 다차원 집계를 생성하는 그룹 함수.
- GROUPING SETS
- 집계 대상 컬럼들에 대한 개별 집계를 구할 수 잇는 그룹 함수.
- RANK
- 특정항목(컬럼)에 대한 순위를 구하는 함수.
- 동일순위의 레코드 존재시 후순위는 넘어감.
- 2위가 3개인 레코드인 경우 : 2위,2위,2위, 5위,6위,…
- DENSE_RANK
- 레코드의 순위를 계산.
- 동일순위의 레코드 존재시에도 후순위를 넘어가지 않음.
- 2위가 3개인 레코드인 경우 : 2위,2위,2위,3위,4위,…
- ROW_NUMBER
- 레코드의 순위를 계산.
- 동일 순위의 값이 존재해도 이와 무관하게 연속 번호를 부여.
- 2위가 3개인 레코드인 경우 : 2위,3위,4위,5위,6위,…
- FIRST_VALUE
- 파티션별 윈도우에서 가장 먼저 나오는 값을 찾음.
- 집계 함수의 MIN과 동일한 결과를 출력.
- LAST_VALUE
- 파티션별 윈도우에서 가장 늦게 나오는 값을 찾음.
- 집계 함수의 MAX와 동일한 결과를 출력.
- LAG
- 파티션별 윈도우에서 이전 로우의 값 반환.
- LEAD
- 파티션별 윈도우에서 이후 로우의 값 반환.
- 비율함수
- 백분율을 보여주거나 행의 순서별 백분율 등 비율과 관련된 통계를 보여주는 함수.
- 종류 : RATIO_TO_REPORT / PERCENT_RANK
- RATIO_TO_REPORT
- 주어진 그룹에 대해 합을 기준으로 각 로우의 상대적 비율을 반환하는 함수.
- 결과값은 0~1의 범위 값을 가짐.
- PERCENT_RANK
- 주어진 그룹에 대해 제일 먼저 나오는 것을 0으로, 제일 늦게 나오는 것을 1로 하여, 값이 아닌 행 순서별 백분위를 구하는 함수.
- 결과값은 0~1의 범위 값을 가짐.
- JDBC
- 자바언어를 이용하여 개발하며, SQL을 사용하여 DBMS에 질의하고 데이터를 조작하는 API를 제공하는 기술.
- MyBatis
- SQL Mapping 기반 오픈 소스 Access Framework로, DBMS에 질의하기 위한 SQL쿼리를 별도의 XML파일로 분리하고 Mapping을 통해서 SQL을 실행.
- MyBatis 장점
- 복잡한 JDBC코드를 단순화.
- SQL을 거의 그대로 사용이 가능.
- Spring Framework와 통합기능을 제공.
- 우수한 성능을 보여줌.
- GRANT UPDATE ON STUDENT TO USER1 WITH GRANT OPTION;
- USER1이라는 사용자에 대해 STUDENT 테이블에 수정할 수 있는 권한을 부여하고, 필요시 그 권한을 다른 사용자에게 부여하는 권한 추가.
- REVOKE DELETE ON STUDENT FROM USER1 CASECADE CONSTRAINTS;
- USER1이라는 사용자에 대해 STUDENT 테이블 삭제 권한을 취소하고, 연쇄적인 권한을 해제한다.
- 트리거 종류
- 행트리거 : 데이터 변화가 생길때마다 실행.
- 문장 트리거 : 트리거에 의해 단 한번 실행.
- 데이터제어어 (DCL)
- 데이터베이스 관리자가 데이터보안, 무결성유지, 병행제어, 회복을 위해 관리자(DBA)가 사용하는 제어용 언어.
- CASECADE CONSTRAINTS
- WITH GRANT OPTION으로 부여된 사용자들의 권한까지 취소하는 옵션.
- 정보처리기사 필기 합격 후 실기대비 정리 및 책없이 간단히 보기위해 작성하였습니다.
- 2020년 수제비 정보처리기사 책 기반으로 정리 하였습니다.
- 저작권 관련 문제가 있다면 hojunbbaek@gmail.com 으로 메일 주시면 바로 삭제 조치 하도록 하겠습니다.
[정보처리기사 실기] Ⅶ. 기사실기 요약 / 정리 / 단답 / Tip / 알고가기!! (feat.수제비)