-
[SQLD]공부7일차_진짜문제풀이만해보기_241114자격증/SQLD 2024. 11. 14. 19:01반응형
# 최초 등록일 : 2024년 10월 14일 19:01
# 최근 변경일 : 2024년 10월 15일 00:47
# 내용 : 2과목 문제풀이중6일차까지 이론정리를 했는데, 문제를 보니까 뭐지 싶어서 일단 문제풀이를 해본다.
6일차는 아래에~
------------------------------------------------------------------------------------------------------------------------------
SQLD 문제 풀이-------
SQL 자격검정 실전문제
문제: 1~97 / 1~35
다시 풀어봐야하는 항목: 7, 12, 14, 15, 16, 18, 19, 21, 23, 25, 26, 27, 28, 29, 37, 47, 49, 65, 66, 67, 71, 72, 73, 74, 79, 81, 83, 87, 89, 90, 91, 93, 95 // 22, 29, 30** 데이터 타입 > varchar2 숫자 문자 가능
> 일반함수: 기타함수 (널 치환함수등)
** VNL == ISNULL, COALESCE
* SELECT : from > where > group by > having > select > order by
* where 절
> null 조회시, is null is not null 로 조회
>> ‘’값 : oracle은 NULL, sql server 는 ‘’
* ALTER : 테이블 구조 변경, 컬럼순서변경불가
> 컬럼 추가, 데이터타입변경, 컬럼 사이즈 변경, 컬럼 삭제, 제약조건, Default 값변경
> ()으로 여러 개를 한번에 수정할 수 없고 한줄한줄 ;로 처리해야함
// ALTER TABLE ~1 DROP COLUMN ~2 à ~1의 테이블에서 ~1컬럼을 삭제
** DELETE / DROP / TRUNCATE 차이
> 데이터 일부 또는 전체 삭제, 롤백 가능
> 데이터 전체 삭제만 가능(일부 삭제 불가), 롤백 불가(시스템초기화+로그를남기지않음), 스키마 정의도 함께 삭제
> 데이터와 구조를 동시에 삭제, 롤백 불가(시스템초기화+로그를남기지않음)
>> create alter drop truncate : auto commit
** 테이블 이름을 변경할 때 : RENAME
> RENAME ~1 TO ~2 : ~1을 ~2의 이름의 TABLE로 변경
* PK (기본키) : 유일한 식별자, 중복 허용 X, NULL 허용 X (UNIQUE INDEX, NOT NULL)
* FK : 외래키, 참조테이블의 참조 컬럼에 있는 데이터를 확인하면서 본 테이블 데이터를 관리할 목적으로 생성
// 테이블 생성시 설정할 수 있음, 외래키 값은 널 값을 가질 수 있음, 한 테이블에 여러 개 존재할 수 있음, 외래키 값은 참조 무결성 제약을 받을 수 있음
** 고유키로 지정된 모든 컬럼들은 NULL을 가질 수 있다.
// CHECK제약조건: 데이터베이스에서 데이터의 무결성을 유지하기 위하여 테이블의 특정 컬럼에 설정하는 제약
* 참조동작
** Delete(modify) action : Cascade, Set Null, Set Default, Restrict
> Cascade : 부모삭제시 자식 같이 삭제
> Set null : 부모 삭제시 자식 null
> Set default : 부모 삭제시 자식 default 값
> Restrict : 자식 테이블에 PK가 없는 경우만 부모 삭제 허용
> No Action : 참조무결성을 위반 하는 삭제/수정 액션을 취하지 않음
** Insert action: automatic, set null. Set default, dependent
> Automatic : 부모 테이블에 PK가 없는 경우 부모 PK를 생성 후 자식 입력
> Set null : 부모 테이블에 PK가 없는 경우 자식 외부키 NULL 값으로 처리
> Set default : 부모 테이블에 PK가 없는 경우 자식 외부키 Default값으로 처리
> Dependent : 부모 테이블에 PK가 존재할 때만 자식 입력 허용
> No Action : 참조무결성을 위반하는 입력 액션을 취하지 않음
* 트랜잭션: 데이터베이스의 논리적 연산 단위(하나의 연속적인 업무 단위), 분할 할 수 없는 최소의 단위
> 원자성(atomicity) : 트랜잭션 정의된 연산들 모두 성공적으로 실행되던지 아니면 전혀 실행되지 않은 상태로 남아있어야함
> 일관성(consistency) : 트랜잭션 실행 전 데이터베이스 내용이 잘못되어 있지 않다면 트랜잭션 실행 이후에도 데이터베이스 내용의 잘못이 있으면 안됨
> 고립성(isolation) : 트랜잭션 실행도중 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들어서는 안됨
> 지속성(durability) : 트랜잭션이 성공적으로 수행되면 갱신한 데이터베이스 내용이 영구적으로 저장
** 트랜잭션의 격리성(Transaction Isolation : Dirty Read, Non-Repeatable Read, Phantom Read
> Dirty Read : 다른 트랜잭션에 의해 수정됐지만 아직 커밋되지 않은 데이터를 읽는 것
> Non-Repeatable Read : 한 트랜잭션 내에서 같은 Key를 가진 Row를 두번 읽었는데 그 사이에 값이 변경되거나 삭제되어 결과를 다르게 나타나는 현상
> Phantom Read : 한 트랜잭션 내에서 같은 쿼리를 두 번 수행했는데, 첫 번째 쿼리엣 ㅓ없던 유령 레코드가 두 번째 쿼리에서 나타나는 현상
>> auto commit : SQL SERVER의 기본 방식 (oracle은 기본x)
>> oracle은 DDL 수행후 auto commit // sql server X
** 순수 관계 연산자 : select, project, join, divide
* 그룹함수 : 숫자함수 중 여러값을 전달하여 하나의 요약값을 출력하는 다중행 함수, 반드시 한 컬럼만 전달, NULL은 무시하고 연산 == NULL이 포함된 연산의 결과는 NULL이다 ( + - * /)
> COUNT == 행의 수
> SUM == 값의 합
> AVG == 값의 평균( NULL은 제외한 대상의 평균을 리턴하므로 전체 대상 평균 연산시 주의)
> MIN/MAX == 최소/최대
> VARIANCE / STDDEV == 분산과 표준편차 (표준편차는 분산의 루트값)
* LIKE
> 자리수 제한 없는 모든 % // 자리수 의미
> 날짜형 함수 : 날짜 연산과 관련된 함수
// 날짜 계산 : 1/24/60 == 1분
* 조인의 종류
> 조건의 형태에 따라 EQUI JOIN(등가 JOIN) : JOIN 조건이 동등 조건인 경우, NON EQUI JOIN : JOIN 조건이 동등 조건이 아닌 경우
> 조인 결과에 따라 INNER JOIN, OUTER JOIN(LEFT, RIGHT, FULL OUTER JOIN), NATURAL JOIN, CROSS JOIN, SELF JOIN
> INNER JOIN : JOIN 조건에 성립하는 데이터만
> OUTER JOIN : 성립하지 않는 데이터도
> NATURAL JOIN : 조인 조건 생략 시 두 테이블에 같은 이름으로 자연 연결
> CROSS JOIN : 조인 조건 생략 시 두 테이블의 발생 가능한 모든 행을 출력하는 조인, 카타시안곱으로 출력
> SELF JOIN : 하나의 테이블을 두 번 이상 참조하여 연결하는 조인
> ON : JOIN의 조건을 넣어서 조인 (cf. join ~ on ~)
> USING : (cf. join ~ using (~)) -> using안에 있는 것이 join의 조건
* 집합 연산자 : SELECT 문 결과를 하나의 집합으로 간주, 합집합 교집합 차집합
> 합집밥 : UNION, UNION ALL
> 차집합 : MINUS
// 교집합 : intersect
* 계층형 질의 : 하나의 테이블 내 각 행끼리 관계를 가질 때, 연결고리를 통해 행과 행 사이의 계층을 표현하는 기법
> PRIOR의 위치에 따라 연결하는 데이터가 달라짐
> START WITH : 데이터를 출력할 시작 지정하는 조건
> CONNECT BY PRIOR : 행을 이어나갈 조건
> NOCYCLE : 순환이 발생하면 무한 루프가 될 수 있기 때문에 이를 방지하고자 사용
*서브쿼리
> 단일행 : 서브쿼리 결과가 1개의 행이 리턴되는 형태 ( = <> > >= < <=)
> 다중행 : 서브쿼리 결과가 여러 행이 리턴되는 형태
> 다중컬럼 : 서브쿼리 결과가 여러 컬럼이 리턴되는 형태
> 상호연관 : 메인쿼리와 서브쿼리의 비교를 수행하는 형태
// 서브쿼리의 결과가 복수 행 결과를 반환하는 경우 IN ALL ANY 등 복수 행 비교 연산자와 사용
반응형'자격증 > SQLD' 카테고리의 다른 글
[SQLD]공부9일차_D-1+준비사항_241116 (0) 2024.11.16 [SQLD]공부8일차_진짜문제풀이만해보기2_241115 (2) 2024.11.15 [SQLD]공부6일차_2과목이론양많네...?_241113 (6) 2024.11.13 [SQLD]공부5일차_1과목마무리!+2과목_241112 (4) 2024.11.12 [SQLD]공부4일차_문제풀면서부족한거채워보기_241109 (2) 2024.11.09