소품집

[SQLD] 32회 오답풀이 본문

자격증/SQL

[SQLD] 32회 오답풀이

sodayeong 2021. 3. 16. 02:09

2과목

11. 다음 주어진 조건에 해당하는 쿼리문을 고르시오. 3

(보기) 특정 칼럼의 데이터 타입 조건으로 not null을 default로 지정한다. 

 

1) alter table 테이블명 alter column 칼럼명 default not null

2) alter table 테이블명 add column 칼럼명 default not null

3) alter table 테이블명 modify(칼럼명 default not null)

4) alter table 테이블명 add_coonstrait column칼럼명 default not null 

 

[해설] 테이블에 존재하는 칼럼의 데이터 유형, 디폴트(default) 값, not null에 대한 제약조건을 변경하는 명령어는 alter문의 modify이다. 

 

alter문 구성

- add column(칼럼 추가) : 기존 테이블에 필요한 컬럼을 추가하는 명렁어

- drop column(칼럼 삭제): drop column은 테이블에서 필요 없는 칼럼을 삭제할 수 있으나 없으나 모두 삭제 가능하다. 한 번에 하나의 칼럼만 삭제 가능하며 칼럼 삭제 후 최소 하나 이상의 칼럼이 테이블에 존재해야한다. 

- modify column(칼럼명 수정): 테이블에 존재하는 칼럼의 데이터 유형, 디폴트 값, not null 제약조건에 사용한다. 

- add constraint: 테이블 생성 시 제약조건을 적용하지 않았다면 테이블 생성 이후에 필요에 의해서 제약조건을 추가한다. 

- drop constraint: 테이블 생성 시 부여했던 제약조건을 삭제하는 명령어이다. 

 

 

 

26. 다음 보기 중 SQL에 대한 설명으로 틀린 것을 고르시오. 2

1) DDL : 테이블과 같은 데이터 구조를 정의하는 데 사용되는 명령어들로 그러한 구조를 생성, 변경, 삭제하거나 이름을 바꾸는 데이터 구조와 관련된 명령어들을 의미한다. 

2) DCL: 데이터베이스의 테이블에서 들어 있는 데이터에 변형을 가하는 종류의 명령어들을 의미한다. 

3) DML: 데이터베이스에 들어 있는 데이터를 조회하거나 검색하기 위한 명령어들을 의미한다. 

4) TCL: 논리적인 작업의 단위를 묶어서 DML에 의해 조작된 결과를 작업 단위(트랜잭션)별로 제어하는 명령어를 의미한다. 

 

 

[해설] 2번은 DML에 대한 설명이다. 

- DDL(Data Defintion Language) : 테이블과 같은 데이터 구조, 데이터 틀을 정의하는데 사용되는 명령어들로 그러한 구조를 생성, 변경, 삭제하거나 이름을 바꾸는 구조와 관련된 명령어이다. (명령어: crate, drop, rename, truncate)

- DML(Data Manipulation Languge) : 데이터베이스에 들어 있는 데이터를 조회, 검색, 입력, 수정, 삭제를 수행하는 명령어이다. (명령어: select, insert, update, delete)

-  DCL (Data Control Languge) : 데이터베이스에 접근하고 객체들을 사용하도록 권한을 주고 회수하는 명령어이다. (명령어: grant, revoke)

- TCL (Transaction Control languge) : 논리적인 작업 단위를 묶어서 DML에 의해 조작된 데이터들을 제어하는 명령어이다. (명령어: commit, rollback, savepoint) 

 

 

 

 

32. 다음 주어진 테이블에서 아래와 같은 결과값을 반환하는 SQL 문을 고르시오. 

(max와 min의 값을 Job_id 별로 두 개씩 나타내서 총 네 개의 행을 반환하면 되니까) 

 

select *

from (select job_id, max(salary) from sqld_32 

group by job_id 

union 

select jod_id, min(salary) from sqld_32

group by job_id); 

 

[해설] 결과값은 주어진 테이블에서 JOB_ID별로 그룹화하였을 때 각 JOB_ID별 salayr의 최댓값과 최솟값이 반환되는 결과값이다. 

그런데 job_id별 salary 값이 하나의 속성값으로 통일되었으므로 union 연산자를 이용한다. 

즉, union all이 아니라 union을 사용하는 이유는 max, min 별로 job_id를 통일시켰기 때문이다.

 

 

 

 

 

38. 아래의 결과값을 보고 SQL문의 빈칸에 들어갈 수 있는 내용을 고르시오. 3

1) deptno, job

2) grouping sets (deptno, job)

3) rollup(deptno, job)

4) cube(deptno, job)

 

[해설]

1. 주어진 결과를 보면 deptno 별 합계

2. depntno, job 별 합계

3. 전체 합계가 조회되므로 빈 칸에는 그룹 함수 중 ROLLUP이 와햐한다. 

 

 

 

 

41. 다음 주어진 테이블에서 아래의 SQL 문을 수행한 결과가 다음과 같다. SQL문의 빈칸에 들어갈 문장으로 알맞는 것은?4

 

1) group by cube (자재번호, (발주처ID, 발주일자))
2) group by cube (자재번호, 발주처ID, 발주일자)

3) group by grouping sets(자재번호, 발주처ID, 발주일자)

4) grouo by grouping sets(자재번호, (발주처ID, 발주일자)) 

 

[해설]

집계 그룹함수의 종류는 ROLLUP, CUBE, GROUPING SETS 함수가 있다. 

 

문제의 결과에는

1. (자재번호) 별 SUB TOTAL (소계)

2. (발주처ID, 발주일자) 별 SUB TOTAL이 출력되고 있다. 

 

grouping sets 함수를 사용하여 입력된 인수들에 대한 개별 집계를 구할 수 있으며, cube 함수의 경우는 나열된 모든 인수의 결합 가능한 집계가 출력되야 하므로 전체 집계가 조회되지 않아 해당되지 않음. 

그러므로 위의 문제에서는 group by grouping sets(자재번호, (발주처ID, 발주일자))가 되어야 한다. 

 

 

 

 

 

 

 

42. 다음 SQL의 결과로 알맞은 것은?

 

 

[해설] cross join 결과 12건에 대한 조건 체크 후 sum non equal join의 경우는 조인 조건을 제외한 cross 조인 후 조인 조건을 필터 조건으로 처리하는 것이 좋다. 

뭔 말이지 ;; where 조건은 무시하라는건가 왜.,,? 

 

 

 

 

 

47. 다음 주어진 두 개의 테이블에 대해서 아래와 같은 결과값이 반환되도록 아래의 SQL문의 빈칸에 들어갈 말을 적으시오. 

select b.grade, a.job_id, sum(b.grade)
from sqld_47_1 a, sqld_47_2 b
groub by groubping sets(b.grade, (b.grade, a.job_id)); 

 

[해설] 

결과 값을 보면

1. b.grade, a.job_id에 대한 집계,

2. b.grade에 대한 집계가 있고, 전체 집계는 없으므로 그룹 함수 중 grouping sest을 사용한다. 

 

 

 

 

 

48. 다음 주어진 테이블에서 아래와 같은 결과값이 반환되도록 아래의 SQL문의 빈칸에 들어갈 윈도우 함수를 적으시오. 

 

select ENAME, SAL, 

count(*) over (order by sal range between 50 preceding and 100 following) as SIM_CNT

from sqld_48; 

 

[해설]

먼저 위의 SQLD_48 테이블에서 결과값과 같이 반환 되도록 'SAL' 속성을 기준으로 정렬값을 수행하고 

각각의 행에서 'SAL' 속성을 기준으로 -50에서 +150 범위 사이에 포함되는 SAL 값을 가지는 모든 행의 수를 count 하여

SIM_CNT 속성값으로 조회한다. 

(range는 현재 행의 데이터 값을 기준으로 앞뒤 데이터 값의 범위를 표시함.) 

 

 

 

 

50. 생략

 

 

 

728x90
Comments