원서접수
https://www.dataq.or.kr/www/main.do
시험과목
1. 데이터 모델링의 이해 , 데이터 모델의 성능
2. SQL 기본, SQL 활용, SQL 최적화 기본원리
1과목 10개 / 2과목 40개(+서술형)
응시자격
응시자격조건 없음, 유효기간 2년, 보수교육(합격일 기준 1년6월~2년)이수시 유효기간 영구로 전환.
핵심 요약 - 데이터 모델링의 이해
- 모델링의 3대 특징 - 추상화, 단순화, 명확화
- 데이터 모델은 추상화 수준에 따라 개념, 논리, 물리 데이터 모델로 구분함.
개념 데이터 모델 | 추상화가 가장 높고 핵심 엔터티 및 관계를 표현하는 것 ( 포괄적, 업무 중심 ) |
논리 데이터 모델 | 주요 엔터티, 속성, 관계 도출 및 중복 제거를 제거하여 정규화한 ( 관계표현 ) |
물리 데이터 모델 | 데이터베이스에 이식을 위한(성능, 저장을 위한 물리적 ) |
https://dhan-description.tistory.com/121
- ANSI/SPARK의 3단계 스키마 구성은 내부, 개념, 외부 스키마를 뜻한다.
- 엔터티, 속성, 식별자, 인스턴스에 대한 설명
엔터티 | 인스턴스의 집합이며, DB내에 변별 가능한 객체임. |
속성 | 인스턴스의 성격을 설명하는 것을 속성이라함. 개념적으로 칼럼(column)과 가깝다. |
식별자 | 속성 중 유일하게 식별 가능한 속성(Key)을 의미. PK, FK를 의미함. |
인스턴스 | 개별데이터를 의미하며, 쉽게 말해 데이터 1줄을 의미함. 개념적으로 행(row)과 가깝다. |
관계 | 부모 엔터티의 식별자를 자식 엔터티의 식별자로 상속하면 식별관계, 일반속성으로 상속하면 비실별관계. |
- 주식별자의 특징
유일성 | 엔터티의 모든 인스턴스를 고유하게 식별할 수 있어야함. |
최소성 | 고유성을 만족하는 최소의 속성으로 구성되어야함. |
불변성 | 주식별자의 속성이 변경되지 않아야함. |
존재성 | 주식별자의 속성에 NULL을 입력할 수 없음. |
# | 주식별자(KEY) |
* | NOT NULL |
0 | NULL |
핵심요약 - 데이터 모델의 성능
- 테이블에 대한 설명
1. 테이블(Table)은 칼럼(속성)과 행(인스턴스)의 2차원 구조를 가짐. 2. 데이터를 저장하는 객체이며 데이터 모델상의 엔터티를 관계형 데이터베이스에서 물리적으로 구현함. 3. 엔터티의 관계는 외부키(FK) 식벌자의 기본키(PK)로 구현한다. |
https://dhan-description.tistory.com/7?category=893707
- 정규화와 관련된 설명
1 정규형(1NF) | 속성의 atomicity와 관련있음. 다중값과 같은 반복 그룹에 해당함. ( 중복데이터 적재 ) |
2 정규형(2NF) | partial dependency와 관련있음. 일반 속성이 주 식별자 전체에 종속되지 않음. (서로다른 속성의 데이터) |
3 정규형(3NF) | transitive dependency과 관련있음. 일반 속성간에 종속성이 존재함. (일반 속성에 key가 있음) |
- NULL 속성 관련
NVL | NULL 값을 특정 값으로 변환한다. ( 속성, 0 ) |
SUM, AVG, MIN, MAX, COUNT 함수를 통한 값 집계는 NULL 값을 알아서 제외한다.
- 트랜잭션의 특징 ( ACID )
원자성 | 트랜잭션의 작업은 모두 수행되거나, 모두 수행되지 않아야함. |
일관성 | 트랜잭션이 완료되면 데이터의 무결성이 일관되게 보장되어야함. |
고립성 | 트랜잭션이 다른 트랜잭션으로부터 고립된 상태로 수행되어야함. |
지속성 | 트랜잭션이 완료되면 장애가 발생하더라도 변경사항이 지속되어야함. |
핵심요약 - SQL 기본
- SQL의 처리 순서
FROM > WHERE > GROUP BY > HAVING > SELECT > ORDER BY |
- SQL 문의 종류
TCL | 트랜잭션 제어어(Transaction Control Language) - DB변경사항 관리 |
DCL | 데이터 제어어(Data Control Language) - 데이터 권한 관리 |
DDL | 데이터 정의어(Data Definition Language) - 테이블 관리 |
DML | 데이터 조작어(Data Manipulation Language) - CRUD |
DDL - https://dhan-description.tistory.com/6?category=893707
- 각 SQL 구문 요약
TCL | COMMIT, ROLLBACK, SAVEPOINT |
DCL | GRANT, REVOKE |
DDL | CREATE, ALTER, DROP, RENAME, TRUNCATE |
DML | SELECT, INSERT, UPDATE, DELETE, MEPGE |
DML - https://dhan-description.tistory.com/8?category=893707
- 일반 집합 연산자
UNOIN (합집합) | UNOIN 은 두 집합의 합집합에서 중복을 제거, 고유 집합만 반환. UNION ALL 은 합집합 반환. |
INTERSECTION(교집합) | INTERSECT는 중복값을 제거한 교집합을 반환. |
DIFFERENCE(차집합) | EXCEPT MINUS는 중복값을 제거한 차집합을 반환. |
PRODUCT(곱집합) | CROSS JOIN |
MINUS연산자는 NOT EXISTIS 서브쿼리로 변경 가능하며 MINUS는 중복값을 제거하는 교집합 함수이므로
DISTINCT를 함께 사용해야함.
INTERSECT연산자는 교집합연산자이며 EXISTIS 서브쿼리로 변경 가능하며 INTERSECT는 중복값을 제거하는 교집합
함수이므로 DISTINCT를 함께 사용해야함.
- 함수에 대한 설명
LENGTH | 문자열의 길이를 반환. |
SUBSTR | EX) SUBSTR(A1, 2, 3 ) = A1 속성(칼럼)의 두번째 자리부터 3개의 문자를 잘라내어 반환. |
LTRIM | EX) LTRIM(A1, '0' ) = A1속성(칼럼)의 '0' 문자를 제거하며, '0'이 아닌 문자를 만나면 나머지 열을 반환. |
FLOOR | 입력된 인자 값보다 작거나 같은 정수 값은 반환. |
CTIL | 입력된 인자 값보다 크거나 같은 정수 값을 반환. |
TRUNC | 첫 번째 인자 값을 소수점 N번째 자리로 버림 반환. |
ROUND | 첫 번째 인자 값을 소수점 N번째 자리로 반올림하여 반환. |
ADD_MONTHS | 첫 번쨰 인자인 날짜 값에 두 번째 인자 값만큼 개월수를 더하여 반환. |
COUNT | COUNT * = 전체반환. / COUNT(expr) NULL이 아닌 expr 반환 / COUNT(DISTINCT expr) expr 중복제거 |
DECODE | 칼럼, 조건, 결과 순으로 작성하여 사용. IF문과 유사함. |
- SELECT
DISTINCT | 집약 ( 같은 값을 하나로 ) |
COUNT | 갯수 ( 조건에 따라 갯수를 반환 ) |
AS | 컬럼명에 대한 설명 EX - SELECT AS '컬럼' / AS는 생략 가능함. |
TOP | TOP 10 - 반환할 행의 개수(10)나 백분율을 지정 TOP 10 PERCENT - 백분율만큼 행을 반환 TOP 10 WITH TIES - 마지막 행에 대한 동순위를 포함하여 반환 |
GROUPING | 표현식이 행 그룹에 포함되면 0, 포함되지 않으면 1을 반환. EX - GROUPING 속성1 AS '칼럼명' |
FIRST_VALUE | 첫번째행 반환(오라클만 가능) |
LAST_VALUE | 마지막행 반환(오라클만 가능) |
FLOOR | 입력된 인자 값보다 작거나 같은 정수 값 반환 |
CEIL | 입력된 인자 값보다 크거나 같은 정수 값 반환 |
TRUNC | 첫 번째 인자 값을 소수점 N번째 자리(두번째)로 버림 반환. |
ROUND | 첫 번쨰 인자 값을 소수점 N번째 자리(두번쨰)로 반올림 반환. |
- 논리연산자
1 | NOT |
2 | AND |
3 | OR |
- SQL 연산자
BETWEEN | 속성1 과 속성2의 사이값 |
LIKE | '_L%'의 경우 두번째가 L인 값을 가진 경우 '%LIKE%'의 경우 LIKE가 포함된 값을 |
- 조건절 관련
WHERE | IN | 다중 열 사용 WHERE 속성1 IN ( '123', '123', '123', '123 ) |
NOT | 조건을 부정한다. | |
NOT IN | 일치하는 데이터가 없는지 확인함. ( NULL이 있으면 확인불가 ) | |
ROWNUM | 오라클에서 TOP 대신으로 사용됨 (WHERE ROWNUM < 101) | |
GROUP BY | CUBE | 지정한 표현식의 모든 조합을 집계 |
ROLLUP | () = 총계 / (A,B,C) = 소계 | |
GROUPING SETS | 지정한 행 그룹으로 행을 집계 |
ORDER BY에 입력한 함수는 순서에 영향을 줄뿐, 데이터에 영향을 주지는 않는다.
ASC는 생략가능.
https://myjamong.tistory.com/191
- JOIN 설명 ( LEFT OUTER, FULL OUTER, RIGHT OUTER, CROSS, INNER )
CHAR는 고정형 > 공백을 채워서 저장
VARCHAR는 가변형 > 입력한 값 그대로
핵심요약 - SQL 활용
RANK | 값의 그룹에서 값의 순위 계산 |
DENSE_RANK | RANK()와 달리 동일 순위 다음의 순위는 동일 순위의 수와 상관없이 1 증가된 값 리턴. |
LPAD | 지정한 길이 만큼 왼쪽부터 특정문자로 채워준다. EX- LPAD("값", "총 문자길이", "채움문자") |
RPAD | 지정한 길이 만큼 오른쪽부터 특정문자로 채워준다. RPAD("값", "총 문자길이", "채움문자") |
https://velog.io/@mindddi/SQL-%EB%B6%84%EC%84%9D%ED%95%A8%EC%88%98
- 서브쿼리
EXISTS | 서브 쿼리의 결과가 "한 건이라도 존재하면" TRUE 없으면 FALSE를 리턴한다. |
MINUS연산자는 NOT EXISTIS 서브쿼리로 변경 가능하며 MINUS는 중복값을 제거하는 교집합 함수이므로
DISTINCT를 함께 사용해야함.
INTERSECT연산자는 교집합연산자이며 EXISTIS 서브쿼리로 변경 가능하며 INTERSECT는 중복값을 제거하는 교집합
함수이므로 DISTINCT를 함께 사용해야함.
핵심요약 - 관리구문
DML | SELECT, INSERT, UPDATE, DELETE, MEPGE |
INSERT문에 VALUES 절을 사용하면 테이블에 단일 행을 추가함.
UPDATE문은 테이블의 기존 행을 갱신함. SET는 SELECT문의 서브쿼리와 유사한 동작.
DELETE문은 테이블의 기존행을 삭제함.
TCL | COMMIT, ROLLBACK, SAVEPOINT |
TCL 의 구문에 의해 트랜잭션이 발생하면 장애가 발생하더라도 (지속성)이 유지되며, 트랜잭션은 (고립성)이 유지되어야함. 또한 트랜잭션은 모두 수행되거나, 모두 수행되지 않는 (원자성)을 가지며, (일관성)이 있어야함.
- 블로킹 : 두 트랜잭션이 동일한 행을 갱신하고자 할 때 후행 트랙잭션은 선행 트랜잭션이 설정한 Lock이 해제되길 기다리며 블로킹된다. 선행 트랜잭션의 COMMIT이후 후행 트랜잭션은 Lock를 획득, 갱신한다.
DDL | 데이터 정의어(Data Definition Language) - 테이블 관리 |
- DDL문은 암시적으로 COMMIT이 진행된다.
- 테이블 명은 문자로 시작되어야하며 공백을 허용하지 않는다. 특수문자는 # , $ , _ 만 사용가능하다.
- "를통해 Object 명을 감싸면 제약을 피할 수 있으나 권장되지 않는다.
- Data Type중 NUMBER 타입은 이미 값이 입력된 경우 데이터 타입의 크기를 축소할 수 없다.
- FK 가 참조된 테이블이 있는경우 원 테이블을 삭제할 수 없다. 다만 CASCADE CONSTRAINTS 절을 사용하면 가능.
DCL | 데이터 제어어(Data Control Language) - 데이터 권한 관리 |
- 사용자로 로그인 하기 위한 권한은 CREATE SESSION ( ORA-01045 )
- 다른 스키마에 테이블 생성하려는 경우는 CREATE ANY TABLE ( ORA-01031)
- 테이블에 행을 삽입하기 위한 권한은 UNLIMITED TABLESPACE ( ORA-01950 )
- EXECUTE 권한은 PL/SQL에 관한 권한임.
https://www.youtube.com/watch?v=uTMY_TvYeHc
'IT' 카테고리의 다른 글
[IT]Lightning Experience용 CRM 기초 학습 (0) | 2024.01.23 |
---|---|
[IT] AICE 예제 문제 풀이 ( 샘플 - Associate ) (0) | 2023.12.22 |
[핀테크] 2022년 간편결제 점유율의 변화 - 작성중 (0) | 2022.05.23 |
Internet Explorer 11 지원 종료 및 Edge IE 모드, 그리고 Chrome - IE Tab (0) | 2022.05.23 |
2021 대한민국 소프트웨어대전 관람 후기 2 (퀸텟시스템즈, 심지) (0) | 2021.12.06 |
댓글