WorkHard/자격증

[SQLD 개발자] 기출문제 공부(30회)

코딩공대 2023. 3. 3. 10:10
728x90

1. SQL로우의 건수는?

  • DISTINCT로 중복을 제거한 후 UNION ALL로 중복 허용 합집합을 구한다.
  • SQLD_30_31_01에선 (COL1, COL2)가 (1, 2), (1, 3)이 남는다.
  • SQLD_30_31_02에선 (COL1, COL2)가 (1, 2), (1, 4), (1, 5)가 남는다.
  • 01번과 02번을 합치면 (1, 2), (1, 3), (1, 2), (1, 4), (1, 5)로 총 5개가 남는다.

2. Unique Index Scan을 할 수 없는 것은?

  • Unique Index Scan은 1개 값을 추출하는 방식이다.
  • PK는 KEY1, KEY2인데 4번은 KEY1에만 조건을 줬기 때문에 1개 이상이 나올 수 있다.

3. Cross Join, Natural Join?

  • Cross Join : Where절에서 조건을 걸 수 있다, Join Key가 없을 경우 발생한다.
  • Natural Join : Where절에서 조건을 걸 수 없다, 특정 Join컬럼을 명시적으로 적을 수 없다, Join key는 컬럼명으로 결정된다.

4. 좋은 파티셔닝과 적절한 방법?

  • Range : 관리가 쉬울 때, 숫자값으로 분리가 가능하다.
  • List : 데이터의 양이 많은 대용량 테이블일 때, 특정컬럼이 없을 때 사용한다.
  • Hash : 관리가 어려울 때, 데이터 위치를 모를때 사용한다. 

5. SQL문의 수행 결과?

  • SQLD_30_39는 N1 -> 1, 2 / TMP SQLD_30_39는 N1 -> 1 인데
  • ROLLBACK으로 돌아가서 SQLD_30_39의 N1값으로 돌아간다.
  • 그리고 값을 더해주면 3이 된다.

6. ORDER BY로 사용할 수 없는 것?

  • SELECT JOB, COUNT(*) AS CNT는 JOB과 행 수를 세는 것이다.(2개)
  • 4번은 행이 (3, 3)등이 아니라 3만 있기 때문에 사용이 불가능하다.

7. ABS, FLOOR, TRUNC, ROUND?

  • ABS : 절대값
  • FLOOR : 내림
  • TRUNC : 소수점 아래 버림
  • ROUND : 반올림
  • EXAMPLE
    ABS(-3.8), FLOOR(3.8), TRUNC(3.8), ROUND(3.8)까지 순서대로 값을 보면 3.8, 3, 3, 4가 된다.

8. 아래에서 설명하는 것은?

  • VIEW : 복잡한 질의를 단순하게 작성할 수 있고 해당 형태의 SQL문을 자주 사용할 때 이용하면 편리하다, 실제테이터가 아니라서 논리적이고, 사용자에게 정보를 감출 수 있고, 보편적이다 

9. SQL문의 수행 결과?

  • FROM에서 해당 표를 선택하고,
  • START WITH 상위계층번호 IS NULL에서 상위계층번호가 NULL인 1, 2번을 선택한다.
  • CONNECT BY 계층번호 = PRIOR 상위계층번호
    PRIOR 자식 = 부모
  • PRIOR 상위계층번호 = NULL인 계층번호가 없으니까 종료되고
  • 2건을 출력한다.

10. 컬럼의 데이터 타입을 변형하기?

  • ALTER TABLE 테이블명 ADD 컬럼명 데이터 유형; -> 여러개 컬럼 동시수정이 불가하다.(SQL SERVER)
  • ALTER TABLE 테이블명 DROP COLUMN 컬럼명;
  • ALTER TABLE 테이블명 MODIFY (컬럼명 데이터유형); -> (ORACLE)
  • ALTER TABLE 테이블명 ALTER (컬럼명 데이터유형); ->(SQL SERVER)
  • ALTER TABLE 테이블명 DROP CONSTRAINT 조건명; -> 제약조건 삭제
  • ALTER TABLE 테이블명 ADD CONSTRANT 조건명; -> 제약조건 추가
  • RENAME 변경 전 테이블명 TO 변경 후 테이블명;
  • ALTER TABLE 테이블명 RENAME COLUMN 변경 전 컬럼명 TO 새로운 컬럼명;
  • DROP TABLE 테이블명 [CASCADE CONSTRAINT] -> 연쇄삭제
  • TRUNCATE TABLE 테이블명;
  • INSERT INTO 테이블명(컬럼 리스트) VALUES (컬럼 값);
  • UPDATE 테이블명 SET 수정되어야 할 컬럼명 = 값;
  • DLELTE FROM 테이블명;
  • SELECT 컬럼리스트 FROM 테이블명; 
  • SAVEPOINT SVPT1; (ORACLE)
  • ROLLBACK TO SVPT1; (ORACLE)
  • SAVE TRANSACTION SVPT1; (SQL SERVER)
  • ROLLBACK TRANSACTION SVPT1; (SQL SERVER)

11. SQL문의 수행 결과?

  • ALTER TABLE SQLD_47 MODIFY COL2 DEFAULT 10;
    • 값이 안 들어온 경우 10으로 채운다(NULL은 NULL로 지정한 거니까 해당 안된다.)
    • INSERT INTO SQLD_47(COL1) VALUES('EXD') 이때 COL2 = 10
    • SUM(COL2)하면 NULL값을 무시하고 연산한다.

12. 권한을 주기 위한 SQL은?

  • GRANT : 생성 권한 주기를 준다.

13. SQL문을 작성하자

  • DENSE_RANK() : 동일 순위, 순위 건너뛰기(1위, 2위, 2위, 3위)
    • 주문금액에 따라 순위부여
    • DENSE_RANK() OVER(ORDER BY '주문금액 DESC') -> 높은 순으로 나열했으니 DESC가 들어간다.