ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [SQLD]공부7일차_진짜문제풀이만해보기_241114
    자격증/SQLD 2024. 11. 14. 19:01
    반응형

    # 최초 등록일 : 2024년 10월 14일 19:01
    # 최근 변경일 : 2024년 10월 15일 00:47

    # 내용 : 2과목 문제풀이중

     

    6일차까지 이론정리를 했는데, 문제를 보니까 뭐지 싶어서 일단 문제풀이를 해본다.

    6일차는 아래에~

     

    [SQLD]공부6일차_2과목이론양많네...?_241113

    # 최초 등록일 : 2024년 10월 13일 00:45# 최근 변경일 : 2024년 10월 13일 13:13# 내용 : 2과목 정리하기 SQLD 5일차 공부는 아래에 링크에~ [SQLD]공부5일차_1과목마무리!+2과목_241112# 최초 등록일 : 2024년 10월

    doradorabean.tistory.com

     

    ------------------------------------------------------------------------------------------------------------------------------

     

    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)

           >> oracleDDL 수행후 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 등 복수 행 비교 연산자와 사용

    반응형
Designed by Tistory.