---------------------------------------------------------------------------------------------------------------------------------------------
- 다음 중 계층형 쿼리에 대한 설명으로 올바르지 않은 것은?
1. PRIOR 자식 = 부모 형태를 사용하면 계층 구조에서 순방향 전개를 수행
2. 계층형 쿼리는 계층형 형태로 데이터를 질의할 때 사용됨
3. CONNECT BY는 부모 자식을 설명하는 것임
4. CONNECT_BY_ISLEAF에서 해당 데이터가 리프데이터면 1, 그렇지 않으면 0을 반환함
답 : 3번
CONNECT BY는 부모 계층형 쿼리에서 부모노드와 자식 노드 사이의 특정한 관계를 나타낼 때 사용
* PIROR가 자식쪽에 있으면 순방향임
* 계층형 쿼리의 순서 : FROM → START WITH → CONNECT BY → ORDER
---------------------------------------------------------------------------------------------------------------------------------------------
- 다음 중 계층형 쿼리문의 내장 함수가 아닌 것은?
1. LEVEL
2. TRIM
3. SYS_CONNECT_BY_PATH
4. CONNECT_BY_ROOT
답 : 2번
LEVEL : 검색 항목의 깊이
CONNECY_BY_ROOT : 계층 구조에서 가장 최상위 값 표시
CONNECT_BY_ISLEAF : 게층 구조에서 가장 최하위 값 표시
SYS_CONNECT_BY_PATH : 계층 구조의 전체 전개 경로를 표시
NOCYCLE : 순환 구조가 발생 지점까지만 전개함
CONNECY_BY_ISCYCLE : 순환 구조 발생 지점 표시
---------------------------------------------------------------------------------------------------------------------------------------------
- 분산 데이터베이스의 투명성과 관련이 없는 것은?
1. 분할 투명성
2. 위치 투명성
3. 지역사상 투명성
4. 이행 투명성
답 : 4번
분산 데이트베이스의 투명성은 분할, 위치, 지역사상, 중복 투명성 등이 있음
---------------------------------------------------------------------------------------------------------------------------------------------
- DROP TABLE 테이블명 [CASCADE CONSTRAINT]에 대한 설명으로 옳은 것은?
1. 테이블의 구조만 삭제됨
2. CASCADE는 Oracle, SQL Server, MySQL, PostgreSQL 모두 지원함
3. SQL Sever에서는 테이블을 먼저 삭제한 뒤 참조하는 FOREIGN KEY 제약 조건, 참조하는 테이블을 삭제함
4. CASCADE CONSTRAINT 옵션은 해당 테이블에서 참조되는 제약조건도 삭제를 수행함
답 : 4번
DROP 명령어는 테이블의 모든 데이터 및 구조를 삭제
CASCADE는 Oracle에만 옵션으로 존재하고 SQL Server에는 존재하지 않음
SQL Server에서 참조하는 FOREIGN KEY 제약조건, 참조하는 테이블을 먼저 삭제한 후에 해당 테이블을 삭제함
---------------------------------------------------------------------------------------------------------------------------------------------
- 다음의 Mytest 테이블에서 데이터 입력 시 에러가 발생하는 것은?
[Mytest]
Create table Mytest
(
A number(10) primary key,
B number(10)
C date,
D varchar2(10)
);
1. INSERT into Mytest values(1,12,sysdate,002)
2. INSERT into Mytest values (2,1111,to_date('20230101','yyyymmdd'),'003')
3. INSERT into Mytest values(3,200,sysdate-10,'004')
4. INSERT into Mytest values(4,32,20220420,'004')
답 : 4번
4번은 숫자형(20220420)을 DATE에 넣어 데이터타입 불일치 에러가 발생함
---------------------------------------------------------------------------------------------------------------------------------------------
- 다음은 Oracle 데이터베이스에서 사용하는 Outer Join의 예제임, 빈칸을 채워 Oracle를 표준 ANSI SQL로 변경하라
[Oracle OUTER JOIN]
SELECT *
FROM EMP, DEPT
WHERE EMP.부서코드(+)=DEPT. 부서코드;
[ANSI JOIN]
SLECT *
FROM EMP ( ) DEPT
ON (EMP.부서코드 = DEPT.부서코드)
답 : RIGHT OUTER JOIN
(+)의 오른쪽에 OUTER JOIN을 걸어주면 됨
---------------------------------------------------------------------------------------------------------------------------------------------
- 다음 보기에서 설명하고 있는 데이터베이스 키의 종류는?
데이터베이스 키의 종류 중에서 유일성과 최소성을 만족함
1. 인조키
2. 수퍼키
3. 후보키
4. 외래키
답 : 3번
기본키 : 후보키 중에서 엔터티를 대표할 수 있는 키
후보키 : 후보키는 유일성과 최소성을 만족하는 키
슈퍼키 : 슈퍼키는 유일성은 만족하지만 최소성을 만족하지 않는 키
외래키 : 하나 혹은 다수의 다른 테이블의 기본키 필드를 가리키는 것으로 참조무결성을 확인하기 위해 사용되는 키
---------------------------------------------------------------------------------------------------------------------------------------------
- 다음 설명하고 있는 식별자는?
데이터베이스 키는 생성 여부에 따라 ( A ) 식별키와 ( B ) 식별자로 분류됨
( A ) 식별자는 엔터티 스스로 생성되는 식별자이고, ( B ) 식별자는 다른 엔터티 간의 관계에 의해 만들어지는 식별자임
답 : A = 내부, B = 외부
---------------------------------------------------------------------------------------------------------------------------------------------
- 서브쿼리(Subquery)에 대한 설명으로 올바르지 않은 것은?
1. 스칼라 서브쿼리에는 Order by 구를 사용할 수 없음
2. 서브쿼리에 여러 개의 행이 반환되면 IN, ANY, ALL과 같은 다중행 서브쿼리 함수를 사용해야 함
3. FROM구에 사용되면 인라인 뷰, WHERE절에 사용되면 서브쿼리임
4. 서브쿼리에서 메인쿼리의 칼럼을 사용할 수 있고 메인쿼리에서도 서브쿼리의 칼럼을 사용할 수 있음
답 : 4번
서브쿼리는 메인쿼리의 칼럼을 모두 이용할 수 있지만, 메인쿼리는 서브쿼리의 칼럼을 사용할 수 없으므로 스칼라 서브쿼리 등을 사용해야함
* 3번의 서브쿼리는 중첩쿼리를 말함
---------------------------------------------------------------------------------------------------------------------------------------------
- 다음 SQL문의 실행 결과로 올바른 것
1. SELECT FLOOR(35.8)
FROM DUAL
→ 36
2. SELECT CEIL(35.8)
FROM DUAL
→36
3. SELECT ROUND(36.8,0)
FROM DUAL
→36
4. SELECT TRUNC(35.8)
FROM DUAL
→36
답 : 2번
FLOOR : 내림
ROUND : 반올림
CEIL : 값보다 큰 가장 작은 정수 = 가우스 기호
TRUNC : 절삭
---------------------------------------------------------------------------------------------------------------------------------------------
★★★ - 다음 중 Oracle과 SQL Server의 트랜잭션 처리 방식에 대한 설명으로 올바르지 않은 것은?
1. SQL의 DML과 DDL을 실행할 때 COMMIT을 자동으로 처리하는 것이 AUTO COMMIT임
2. 명시적 트랜잭션의 시작과 끝은 모두 SQL을 실행하는 사용자가 지정함
3. 암시적(묵시적) 트랜잭션 처리는 트랜잭션이 자동으로 시작되며 자동으로 완료 혹은 취소 되는 것임
4. Oracle에서 INSERT를 실행하면 자동적으로 COMMIT까지 완료됨
답 : 4번
오라클에서 기본적으로 AUTO COMMIT이 설정되지 않음
---------------------------------------------------------------------------------------------------------------------------------------------
- 다음 중 데이터베이스 관리 언어에 대한 설명으로 올바르지 않은 것은?
1. DDL은 테이블, 뷰, 인덱스 등을 생성하거나 변경하는 것으로 CREATE, ALTER, DROP, RENAME 등이 있음
2. DML은 질의를 실행하여 데이터를 조작할 수 있으며 INSERT, UPDATE, SELECT, DELETE구가 있음
3. COMMIT과 ROLLBACK, SAVEPOINT는 TCL명렁어임
4. DML은 비절차형 언어로 데이터를 조작할 수 있음
답 : 4번
DML은 절차적, 비절자척 언어 두가지 모두로 볼 수 있음
---------------------------------------------------------------------------------------------------------------------------------------------
- 다음 중 데이터베이스 관리 언어를 올바르게 매핑한 것은?
1. DML - RENAME
2. TCL - COMMIT
3. DCL - DROP
4. DML - ALTER
답 : 2번
DDL : CREATE, DROP, ALTER, RENAME
DML : SELECT, INSERT, UPDATE, DELETE
DCL : GRANT, REVOKE
TCL : COMMIT, ROLLBACK
---------------------------------------------------------------------------------------------------------------------------------------------
- 다음 SQL문의 실행 결과는?
SELECT COALESCE(NULLIF(1,1),200,300)AS DATA FROM DUAL ;
답 : 200
COALESCE(NULL, A, B) : NULL이 아닌 첫 값 출력
NULLIF(A,B) : A=B 이면 NULL을, 아니면 A값을 반환함
---------------------------------------------------------------------------------------------------------------------------------------------
- 날짜값을 2020,02와 같이 조회되도록 SQL문을 완선하시오
[Mytest]
COL1 |
2020-2-1 |
SELECT EXTRACT
(YEAR FROM SYSDATE),
LPAD(EXTRACT(month from sysdate), ㄱ , ㄴ)
FROM Mytest;
답 : ㄱ = 2, ㄴ = 0
LPAD : 대상 문자, 지정 길이, 채울 문자 순으로 입력
---------------------------------------------------------------------------------------------------------------------------------------------
★★- 아래의 SQL문을 수행한 후 보기의 쿼리문을 실행할 때 잘못된 것은?
CREATE TABLE MYTEST (N1 NUMBER(20),N2 NUMBER(20) );
INSERT INTO MYTEST VALUES (1,100);
INSERT INTO MYTEST VALUES(2,200);
COMMIT;
1. SELECT N1 FROM MYTEST ORDER BY N2:
2. SELECT * FROM MYTEST ORDER BY 2;
3. SELECT N1 FROM (SELECT * FROM MYTEST) ORDERR BY N2;
4. SELECT N1 FROM (SELECT * FROM MYTEST) ORDERR BY 2;
답 : 4번
4번에서 ORDER BY 항목은 반드시 SELECT 목록에 있는 칼럼의 자릿수를 이용해야 함
---------------------------------------------------------------------------------------------------------------------------------------------
★★★ - 다음 중 프로시저(Procedure)와 트리거(Trigger)에 대한 설명으로 잘못된 것은?
1. 프로시저는 COMMIT, ROLLBACK이 가능하지만 트리거는 COMMIT, ROLLBACK 실행이 불가능함
2. 프로시저와 트리거 모두 생성하면 소스코드와 실행코드가 생성되고 소스코든느 데이터베이스 내에 저장되어 있음
3. 프로시저와 트리거는 모두 CREATE구로 생성됨
4. 프로시저는 execute 명령어로 실행되고 트리거는 EXEC로 실행됨
답 : 4번
트리거는 자동 실행됨
---------------------------------------------------------------------------------------------------------------------------------------------
- 트랜잭션이 가지는 특징에 해당되지 않는 것은?
1. 원자성
2. 일관성
3. 고립성
4. 통합성
답 : 4번
# 트랜잭션 특징
원자성 : 트랜잭션은 데이터베이스 연산의 전부 또는 일부 실행만이 있으며 일부 실행으로 트랜잭션의 기능을 갖지 않음
일관성 : 트랜잭션 실행 결과로 데이터베이스의 상태가 모순되지 않아야 함
고립성 : 트랜잭션이 실행 중에는 중간에 다른 트랜잭션이 접근할 수 없음
지속성(=연속성) : 트랜잭션이 실행을 성공적으로 완료하면 그 결과는 영구적으로 보장되어야 함
---------------------------------------------------------------------------------------------------------------------------------------------
- AUTO COMMIT이 FALSE로 설정된 환경에서 다음의 SQL문을 실행했을 때의 결과로 올바르지 않은 것은?
COL1 | COL2 |
10 | 10 |
20 | 20 |
CREATE TABLE MYTEST_TEMP(COL1 NUMBER(10));
UPDATE MYTEST SET COL1=130 WHERE COL2=10;
ROLLBACK;
1. SQL SERVER에서 ROLLBACK을 하는 경우 UPDATE구는 취소됨
2. ORACLE에서 ROLLBACK을 수행하면 UPDATE구는 취소됨
3. ORACLE에서 ROLLBACK을 실행하면 테이블은 생성되지 않음
4. AUTO COMMIT이 FALSE이므로 UPDATE구는 자동 COMMIT되지 않음
답 : 3번
ORACLE의 경우 DDL이 수행될 경우 묵시적으로 COMMIT이 수행됨
*SQL은 아님
---------------------------------------------------------------------------------------------------------------------------------------------
- 다음 중 ORDER BY에 대한 특징으로 옳지 않은 것은?
1. ORDER BY 속성에 숫자와 칼럼을 혼용하여 사용할 수 있음
2. SELECT 구문에 사용되지 않은 칼럼에도 ORDER BY 구문에서 사용할 수 있음
3. ORACLE은 NULL을 가장 큰 값으로 취급하고 SQL SERVER는 가장 작은 값으로 취급함
4. ORDER BY 칼럼명에서 정렬 옵션을 주지 않은 경우에 내림차순이 됨
답 : 4번
---------------------------------------------------------------------------------------------------------------------------------------------
★★- 다음 중 조인 기법에 대한 설명으로 알맞은 것은?
1. HASH JOIN은 CPU를 많이 사용함
2. SORT MERGE JOIN은 EQUAL JOIN에서는 가능하지만 NOT EQUAL JOIN에서는 불가능함
3. 옵티마이저는 조인 칼럼에 인덱스가 없으면 무조건 NESTED LOOP JOIN으로 실행됨
4. NESTED LOOP JOIN은 RANDOM ACCESS를 유발하지 않음
답 : 1번
HASH JOIN은 HASH함수를 사용하기에 CPU를 많이 사용함
EQUAL JOIN만 가능한 것은 HASH JOIN임
NESTED LOOP JOIN은 조인 칼럼의 인덱스가 필수적으로 존재해야함, RANDOM ACCESS를 유발함
---------------------------------------------------------------------------------------------------------------------------------------------
- 함수 정리
SUM, AVG, MAX, MIN은 NULL값을 제외하고 계산
COUNT(칼럼명)은 NULL값을 제외함
COUNT(*), COUNT(1)은 NULL값을 포함함
LAG() : 뒤의 행 출력
LEAD() : 앞의 행 출력
200 BETWEEN A AND B = A≤200 and B≥400
"_"이 있는 것을 검색하는 것 : SELECT * FROM a WHERE NAME LIKE '%@_%' ESCAPE '@'
EXTRACT(MONTH FROM DATE '2022-05-01') : 05가 아닌 5만 출력
SELECT RTRIM(' ABCD') FROM DUAL : ' '안에 공백 있는거 조심
WHERE sal <= (SELECT MAX(sal) GROUP BY ~ )인 경우 MAX의 값이 여러개 나오는 다중행 서브쿼리로 ANY,ALL,IN 사용해야함
DECODE(GENDER,0'남자','여자') : GENDER = 0이면 남자를 아니면 여자를 출력
DECODE('06',0,price) : '06'=0이면 price를 아니면 null을 반환
ON DELETE CASCADE : A 삭제시 B테이블도 같이 삭제
ON DELETE SET NULL : A 삭제시 삭제된 값을 NULL로 치환
ROLLUP(COL1,COL2) = GROUPING SETS(UNIONALL)
SQL문 수행 순서 : START WITH → CONNECT BY → FROM, WHERE 순서NULL값을 마지막에 정렬 : NULLS LAST
---------------------------------------------------------------------------------------------------------------------------------------------
- 다음 중 WINDOW FUNCTION에 대한 설명으로 알맞은 것은?
1. WINDOW FUNCTION은 내부적으로 자동 튜닝을 실시함
2. SUM, MIN, MAX 등과 같은 집계 WINDOW FUNCTION을 사용할 때 WINDOW절과 함께 사용하면 집계의 대상이 되는 레코드 범위를 지정할 수 있음
3. WINDOW FUNCTION 처리로 인해 결과 건수가 줄어들 수 있어 성능이 빠름
4. GROUP BY와 WINDOW FUNCTION은 병행하여 사용 가능함
답 : 2번
WINDOW 절로 레코드 범위를 지정가능함
---------------------------------------------------------------------------------------------------------------------------------------------
- 다음의 ANSI JOIN에서 가장 올바르지 않은 것은?
1. SELECT * FROM EMP a INNER JOIN DEPT b ON a.DEPTNO = b.DEPTNO;
2. SELECT EMP.DEPTNO, EMPNO, ENAME, DNAME FROM EMP NATURAL JOIN DEPT;
3. SELECT * FROM DEPT JOIN DEPT_TEMP USING (DEPTNO);
4. SELECT E.EMPNO, E.DEPTNO, D.DNAME FROM EMP E INNER JOIN DEPT D ON (E.DEPTNO = D.DEPTNO);
답 : 2번
NATURAL JOIN이 사용된 열은 식별자를 가질 수 없음 즉 EMP.DEPTNO와 같이 OWNER명을 사용하면 에러가 남
* NATURAL JOIN : 두 테이블에 모두 존재하는 동일한 칼럼 기반으로 JOIN 수행
---------------------------------------------------------------------------------------------------------------------------------------------
- 다음 중 데이터베이스 인덱스(INDEX)에 대한 설명으로 올바르지 않은 것은?
1. 인덱스를 생성하면 검색 속도가 향상됨 하지만 데이터의 분포에 따라서 반드시 향상되는 것은 아님
2. 테이블에 대해 입력 수정 삭제를 할 때는 테이블의 데이터와 함께 인덱스도 변경되므로 속도가 느려짐, 따라서 대용량의 데이터를 적재하는 작업에서는 인덱스로 인해 속도가 떨어질 수 있음
3. 인덱스는 EQUAL 조건에서만 사용 가능함
4. 인덱스 데이터는 인덱스를 구성하는 칼럼의 값으로 정렬을 수행
답 : 3번
인덱스 중 B-TREE는 다른 연산자로 검색하는 범위 검색에도 사용 가능
---------------------------------------------------------------------------------------------------------------------------------------------
- 다음 중 PL/SQL에 대한 설명으로 적절하지 않은 것은?
1. PL/SQL문의 기본 구조로 DECLARE, BEGIN~END, EXCEPTION은 반드시 사용해야 함
2. 변수와 상수 등을 사용해서 일반 SELECT 문장을 실행할 때 WHERE 절의 조건을 대입할 수 있음
3. USER STORED PROCEDURE, USER DEFINED FUNCTION, TRIGGER 등의 객체를 PL/SQL로 생성할 수 있음
4. PL/SQL은 절차형 언어임
답 : 1번
EXCEPTION은 선택임
---------------------------------------------------------------------------------------------------------------------------------------------
- 다음 중 데이터베이스 무결성을 확보하기 위한 방안으로 가장 올바르지 않은 것은?
1. 제약조건
2. 트리거
3. LOCK
4. 어플리케이션에서 무결성 검사 로직을 추가
답 : 3번
LOCK은 동시성 제어를 위한 방법
---------------------------------------------------------------------------------------------------------------------------------------------
★★- 다음 중 조인기법에 대한 설명으로 알맞은 것은?
1. HASH JOIN은 정렬 작업이 없어 정렬이 부담되는 대량 배치작업에 유리함
2. SORT MERGE JOIN은 EQUAL JOIN에서만 사용 가능함
3. 옵티마이저는 조인 칼럼에 인덱스가 존재하지 않으면 NESTED LOOP JOIN을 선호함
4. NESTED LOOP JOIN은 정렬된 결과들을 통해 조인 작업이 수행되며 조인에 성공하면 추출 버퍼에 넣는 작업을 수행함
답 : 1번
SORT MERGE JOIN은 EQUAL/NON EQUAL 둘 다 가능 , EQUAL만 가능한 것은 HASH JOIN
NESTED LOOP JOIN은 인덱스가 필수임
정렬된 결과들을 통해 조인 작업이 수행되며 조인에 성공하면 추출 버퍼에 넣는 작업을 수행하는 것은 SORT MERGE
---------------------------------------------------------------------------------------------------------------------------------------------
- 데이터베이스 테이블의 제약조건(Constraint)에 대한 설명으로 올바르지 않은 것은?
1. 기본키(Primary Key)는 테이블 당 하나의 제약만을 정의할 수 있음
2. Check 조건은 테이블에 데이터를 입력하기 전에 검사를 수행함
3. 외래키(Foreign Key)는 테이블 간의 관계를 정의하고 참조 무결성을 준수하게 함
4. 고유키(Uinque Key)로 지정되면 모든 칼럼들은 Null 값을 가질 수 없음
답 : 4번
고유키는 NULL값 허용, 기본키는 NULL값 허용하지 않음
---------------------------------------------------------------------------------------------------------------------------------------------
★★- 다음 중 ROWID에 대한 설명으로 올바르지 않은 것은?
1. ORACLE 데이터베이스가 내부적으로 관리하는 값이기 때문에, 개발자가 ROWID 값을 확인할 수 없음
2. ROWID는 ORACLE 데이터베이스 내에서 데이터를 구분할 수 있는 유일한 값임
3. ROWID를 사용하면 조회를 원하는 블록을 바로 참조 가능함
4. 오브젝트 번호, 상패타일 번호, 블록번호, 데이터 번호로 구성됨
답 : 1번
ROWID는 SELECT문으로 확인 가능함
---------------------------------------------------------------------------------------------------------------------------------------------
- 다음 SQL문의 실행 결과는?
SELECT COUNT(*)
FROM Mytest
WHERE DATA1<>4
START WITH DATA1 = 1
CONNECT BY PRIOR DATA1 = DATA2;
[Mytest]
DATA1 | DATA2 |
1 | |
2 | |
3 | 1 |
4 | 1 |
5 | 2 |
6 | 2 |
7 | 3 |
8 | 4 |
9 | 6 |
10 | 7 |
---------------------------------------------------------------------------------------------------------------------------------------------
답 : 5개
다음과 같이 나온 후 WHERE절을 이용해 DATA1=4인 것을 제외하면 5개의 행이 나옴
DATA1 | DATA2 |
1 | |
3 | 1 |
7 | 3 |
10 | 7 |
4 | 1 |
8 | 4 |
---------------------------------------------------------------------------------------------------------------------------------------------
- 주어진 SQL문에서 오류가 발생하지 않는 것은?
CREATE TABLE TEST20
(
ID NUMBER PRIMARY KEY,
AGE NUMBER NOT NULL,
NAME VARCHAR2(1)
);
1. INSERT INTO TEST 20 VALUES(10,20,SYSDATE);
2. INSERT INTO TEST 20 VALUES(10,NULL,'A');
3. INSERT INTO TEST 20(age, name) VALUES(10,'A');
4. INSERT INTO TEST 20(id, age, name) VALUES(10,20,NULL);
답 : 4번
3번은 ID의 기본키(PRIMARY KEY)가 입력되지 않아서 오류가 발생함
---------------------------------------------------------------------------------------------------------------------------------------------
- 다음 중 문자에 대한 설명으로 부적절한 것은?
1. VARCHAR(가변 길이 문자형)은 비교시 서로 길이가 다를 경우 서로 다른 내용으로 판단함
2. CHAR(고정 길이 문자형)은 비교 시 서로 길이가 다를 경우 서로 다른 내용으로 판단함
3. 문자형과 숫자형을 비교 시 문자형을 숫자형으로 묵시적 변환하여 비교함
4. 연산자 실행 순서는 괄호, NOT, 비교연산자, AND, OR 순임
답 : 2번
CHAR은 길이가 서로 다르면 짧은 쪽에 공백을 추가하여 같은 값으로 판단함
연산자 실행 순서
괄호→논리 NOT→산술→비교(=,<>)→논리(AND, OR)→문자열→비트→NULL 검사 연산자→기타 연산자(IN, LIKE)
---------------------------------------------------------------------------------------------------------------------------------------------
- 다음 중 VIEW에 대한 설명으로 올바르지 않은 것은?
1. 독립성 : 테이블 구조가 변겨오디어도 뷰를 사용하는 응용 프로그램은 변경하지 않아도 됨
2. 편리성 : 복잡한 질의를 뷰로 생성함으로써 관련 질의를 단순하게 작성할 수 있고 또한 해당 형태의 SQL문을 자주 사용할 때 뷰를 이용하면 편리하게 사용할 수 있음
3. 물리성 : 실제 데이터를 가지고 있어서 물리적인 관리가 가능함
4. 보안성 : 직원의 급여정보와 같이 숨기고 싶은 정보가 존재한다면 뷰를 생성할 때 해당 칼럼을 빼고 생성함으로써 사용자에게 정보를 감출 수 있음
---------------------------------------------------------------------------------------------------------------------------------------------
- 다음 SQL문의 ( ) 에 들어가는 것으로 올바르지 않은 것은?
SELECT ( ), Count(Empno)
FROM EMP
WHERE EMPNO > 0
GROUP BY DEPTNO, SAL;
1.EMPNO
2. DEPTNO
3. SAL
4. DEPTNO 와 SAL
답 : 1번
SELECT구에는 GROUP BY절에 있는 칼럼만 나와야 함
---------------------------------------------------------------------------------------------------------------------------------------------
- 다음 보기의 SUB QUERY유형은 무엇인가?
SELECT A.EMPNO, A.ENAME
FROM EMP A
WHERE A.EMPNO=(SELECT 1 FROM EMP_T B WHERE A.EMPNO = B.EMPNO);
1. SERVICE SUBQUERY
2. EARLY FILTER형 SUB QUERY
3. CORRELATED SUB QUERY
4. LOOPING SUB QUERY
답 : 3번
상호연관 서브쿼리는 메인쿼리 값을 서브쿼리가 사용하고 서브쿼리의 값을 받아서 메인쿼리가 계산되는 쿼리임
EMP_T의 서브쿼리가 실행되어 1이 나오면 메인쿼리의 WHERE절 조건과 비교됨
---------------------------------------------------------------------------------------------------------------------------------------------
- 테이블의 칼럼을 변경하는 DDL문으로 올바른 것은?
TEST 테이블의 NAME 칼럼의 데이터 타입을 CHAR에서 VARCHAR로 변경하고 데이터 크기를 100으로 늘림
1. ALTER table TEST alter column NAME varchar(100);
2. ALTER table TEST modify (NAME varchar(100));
3. ALTER table TEST add column NAME varchar(100):
4. ALTER table TEST add constraint cloumn name NAME varchar(100)
답 : 칼럼 변경 시 ALTER TABLE ~ MODIFY 문 사용
---------------------------------------------------------------------------------------------------------------------------------------------
- NULL에 대한 설명으로 올바른 것은?
1. 데이터베이스의 NULL 값의 의미는 DMBS 종류별로 다르게 해석함
2. MS-SQL에서 NULL의 값은 0임
3. ORACLE에서 NULL은 TRUE 혹은 FALSE의 의미임
4. NULL 값은 아직 알려지지 않은 미지의 값임
답 : 4번
---------------------------------------------------------------------------------------------------------------------------------------------
- 다음 보기 중 WHERE에서 사용되는 서브쿼리에 대한 설명으로 옳지 않은 것은?
1. 서브쿼리에서는 정렬을 수행하기 위해서 내부에 ORDER BY를 사용하지 못함
2. 메인쿼리를 작성할 때 서브쿼리에 있는 칼럼을 자유롭게 사용할 수 있으면 편리함
3. 여러 개의 행을 되돌리는 서브쿼리는 다중행 연산자를 사용해야함
4. EXISTS는 TRUE와 FALSE만 되돌림
답 : 2번
메인쿼리에서 서브쿼리의 칼럼을 사용할 수 없음
---------------------------------------------------------------------------------------------------------------------------------------------
- 다음 ( )에 올바른 것은?
A 기업에 새로운 D가 입사를 했다, 팀장은 D에게 권한을 할당하려고 GRANT D TO SUERA;라는 SQL문을 실행했다. 이 때 GRANT 문에서 사용된 DBA는 권한들을 묶어서 한꺼번에 부여하는 ( )라고 한다
답 : ROLE
---------------------------------------------------------------------------------------------------------------------------------------------
- 아래의 SQL문을 수행한 결괏값은?
CREATE TABLE A(N1 NUMBER);
INSERT INTO A VALUES(1);
INSERT INTO A VALUES(2);
CREATE TABLE T_A(N1 NUMBER);
INSERT T_A VALUES(1);
TRUNCATE TABLE T_A;
ROLLBACK;
COMMIT;
SELECT SUM(N1) FROM A;
답 : 3
DDL( DATA DEFITINITION LANGUAGE) : CRATE, DROP, ALTER, TRUNCATE 등으로 테이블 생성 삭제 수정 모든 데이터 삭제 등을 하며 자동 COMMIT 됨
---------------------------------------------------------------------------------------------------------------------------------------------
- JOIN에 대한 설명으로 올바르지 않은 것은?
1. NESTED LOOP JOIN은 랜덤 액세스가 발생함
2. SORT MERGE JOIN은 정렬을 유발하여 조인하는 형태를 사용함
3. 대용량 데이터를 조인할 후행 테이블에 인덱스가 없을 경우 NESTED LOOP JOIN을 이용함
4. HASH JOIN은 정렬 작업이 없어 정렬이 부담되는 대량 배치 작업에 유리함
답 : 3번
인덱스가 없을경우 HASH JOIN을 사용함
---------------------------------------------------------------------------------------------------------------------------------------------
- 다음 중 SQL 명령어가 올바르지 않은 것은?
1. DDL : TRUNCATE
2. DDL : ALTER
3. DCL : REVOKE
4. DML : RENAME
답 : 4번
---------------------------------------------------------------------------------------------------------------------------------------------
★★- SELECT NVL(COUNT(*),999) FROM TABLE WHERE 1=2의 결괏값은?
1. 999
2. 0
3. NULL
4. 1
답 : 2번
집계함수에서 COUNT(*) 함수는 조건절이 거짓일 경우 0을 반환함
---------------------------------------------------------------------------------------------------------------------------------------------
- 다음의 PL/SQL에 대한 설명으로 올바르지 않은 것은?
1. PL/SQL은 절차형 언어임
2. PL/SQL에서 테이블을 생성할 수는 없음
3. PL/SQL에서 조건문은 IF~ THEN ~ ELSEIF ~ END IF와 CASE~ WHEN을 사용함
4. PL/SQL에서 NAME이라는 변수에 'AAA'를 대입할 경우 ":="을 사용함
답 : 2번
PL/SQL에서 임시 테이블로 사용하기 위해 테이블을 생성가능함
---------------------------------------------------------------------------------------------------------------------------------------------
- 인덱스 생성 구문은?
답: CREATE INDEX [ 인덱스 명 ] ON <테이블명> (칼럼명)
---------------------------------------------------------------------------------------------------------------------------------------------
- 릴레이션 EMP, DEPT가 다음과 같이 정의 되어있음, 부서에 사원이 한명도 없는 부서(DEPTNO)를 검색하는 질의를 작성할 때 가장 올바르지 않은 것은? (단, EMP테이블의 DEPNO는 DEPT의 DEPNO를 참조하는 외래키이며, EMP의 DEPTNO에는 NULL인 값이 없음)
EMP(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
DEPT(DEPTNO, DNAME, LOC)
1. SELECT DEPTNO FROM DEPT WHERE DEPTNO NOT IN (SELECT DEPTNO FROM EMP);
2. SELECT DEPTNO FROM DEPT A WHERE NOT EXISTS(SELECT * FROM EMP B WHERE A.DEPTNO = B.DEPTNO)
3. SELECT B.DEPTNO FROM EMP A RIGHT OUTER JOIN DEPT B ON A.DEPTNO = B.DEPTNO WHERE EMPNO IS NULL
4. SELECT DEPTNO FROM DEPT WHERE DEPTNO <> ANY(SELECT DPETNO FROM EMP);
답 : 4번
4번의 결과는 모든 DEPTNO가 조회됨
---------------------------------------------------------------------------------------------------------------------------------------------
- 다음 중 인덱스에 대한 설명으로 올바르지 않은 것은?
1. 인덱스는 순차 인덱스, 결합 인덱스, 비트맵, 클러스터, 해시 인덱스가 있음
2. VARCHAR, CHAR, DATE, NUMBER 모두 인덱스 생성이 가능함
3. 파티션 테이블은 파티션 키에 대해서 인덱스를 생성할 수 없음
4. 인덱스의 수가 증가하면 입력과 삭제, 수정 속도가 저하될 수 있음
답: 3번
파티션 키에 대해 생성한 인덱스를 로컬 파티션 인덱스, 파티션 키와 다른 칼럼으로 생성한 인덱스를 글로벌 파티션 인덱스라고 함
---------------------------------------------------------------------------------------------------------------------------------------------
- 계층형 쿼리에 대한 설명으로 올바르지 않은 것은?
1. 루트 노드의 LEVEL 값은 가장 큰 값을 가짐
2. 순방향과 역방향 모두 수행할 수 있음
3. 재무제표 및 조직도와 같은 구조에서 사용할 수 있음
4. 계층형 질의는 하나의 테이블에서 자기자신을 조인하는 형태를 사용함
답 : 1번
루트 노드의 LEVEL 값은 1임
---------------------------------------------------------------------------------------------------------------------------------------------
- 다음 보기의 연산자 중 우선순위가 가장 나중인 것은?
1. 연결 연산자
2. 비교 연산자
3. NOT 연산자
4. OR 연산자
답 : 4번
산술 연산자/ 연결 연산자/ 비교연산자/ IS NULL/ BETWEEN / NOT/ AND / OR 순임
---------------------------------------------------------------------------------------------------------------------------------------------
- 다음 중 순수 관계 연산자에 해당하지 않는 것은?
1. SELECT
2. DELETE
3. JOIN
4. DIVIDE
답 : 2번
순수 관계 연산자란 관계형 데이터베이스에 적용할 수 있도록 개발한 관계 연산자를 의미, SELECT, PROJECT, JOIN, DIVIDE 등
---------------------------------------------------------------------------------------------------------------------------------------------
- 다음의 ( )에 올바른 것은?
( )은 SQL이 데이터베이스에서 실행될 때 실행 절차 및 방법을 표현하여 DBA에게 알려줌, ( )은 옵티마이저의 종류를 확인할 수 있는 RULE, COST가 표현되고 SQL이 내부적으로 어떤 방식으로 실행 되었는지 확인할 수 있음
답 : 실행 계획
---------------------------------------------------------------------------------------------------------------------------------------------
★★ - 다음 중 해시 조인(HASH JOIN)에 대한 설명으로 옳지 않은 것은?
1. 해시조인은 두 개의 테이블 간에 조인을 할 때 범위 검색이 아닌 동등 조인(EQUAL JOIN)에 적합한 방식임
2. 작은 테이블을 먼저 읽어서 HASH AREA에 해시 테이블을 생성하는 방법으로 큰 테이블로 HASH AREA를 생성하면 과다한 DISK I/O가 유발되어 성능이 저하될 수 있음
3. 오라인 트랜잭션 처리(OLTP)에 유용함
4. 해시조인은 수행 빈도가 낮고 수행시간이 오래 걸리는 대용량 테이블에 대한 조인을 할 때 유용함
답 : 3번
OLTP는 해시 조인보단 NESTED LOOP JOIN방식이 유리함
즉 NESTED LOOP JOIN은 적은 데이터를 조인할 때 유리한 구조임
HASH JOIN은 대용량 데이터에 대한 조인 시 빠른 성능을 보이며, 선행 테이블에 작은 테이블이 와야하며 범위 검색보단 동등 조인에 적합함
---------------------------------------------------------------------------------------------------------------------------------------------
- 다음 중 JOIN기법에 대한 설명으로 가장 적절한 것은?
1. NESTED LOOP JOIN은 OLTP 시스텡메서 데이터를 조인할 때 먼저 나오는 테이블의 선택도가 낮은 테이블을 참조하는 것이 유리함
2. SORT MERGE JOIN은 오직 동등 조인에서만 사용할 수 있음
3. HASH JOIN은 결과 행의 수가 큰 테이블을 선행 테이블로 사용하면 HASH AREA 사이즈가 작아져 성능에 유리함
4. HASH JOIN은 SORT MERGE JOIN, NESTED LOOP JOIN보다 항상 성능이 우수함
답 : 1번
2번 : SORTMERGE JOIN은 EQUL, NONEQUAL 둘다 가능
3번 : HASH JOIN은 결과 행의 수가 작은 테이블으 선행 테이블로 사용
---------------------------------------------------------------------------------------------------------------------------------------------
- 다음 중 PL/SQL에 대한 설명으로 가장 적절하지 않은 것은?
1. 변수와 상수 등을 사용하여 일반 SQL문장을 실행할 때 WHERE절의 조건 등으로 대입할 수 있음
2. PROCEDURE, USER DEFINED FUNCTION, TRIGGER 객체를 PL/SQL로 작성할 수 있음
3. PROCEDURE 내부에 작성된 절차적 코드는 PL/SQL 엔진이 처리하고 일반적인 SQL 문장은 실행기가 처리함
4. PL/SQL문의 기본 구조로 DECLARE, BEGIN ~ END, EXCEPTION은 필수적임
답 : 4번
EXCEPTION은 선택사항임
---------------------------------------------------------------------------------------------------------------------------------------------
- 다음 중 아래의 SQL에 대한 설명으로 가장 올바른 것은
SELECT 분류코드
, AVG(상품가격 AS 상품가격
,COUNT(*) OVER(ORDER BY AVG(상품가격)
RANGE BETWEEN 10000 PRECEDING AND 10000 FOLLOWING) AS CNT
FROM 상품
GROUP BY 분류코드 ;
1. WINDOW FUNCTION을 GROUP BY절과 함께 사용했으므로 SQL은 오류가 나옴
2. WINDOW FUNCTION의 ORDER BY 절로 인해 문법 오류임
3. CNT 칼럼은 분류코드별 평균상품가격을 서로 비교해 -10000~+10000 사이에 존재하는 분류코드의 개수를 구함
4. CNT 칼럼은 상품전체의 평균상품가격을 서로 비교해 -10000~+10000 사이에 존재하는 상품의 개수를 구함
답 : 3번
---------------------------------------------------------------------------------------------------------------------------------------------
★★ - 아래의 테이블에 대해 SQL문을 수행하였을 때의 결과 값은?
[TEST1]
COL1 |
1 |
2 |
3 |
4 |
[TEST2]
COL2 |
2 |
NULL |
SELECT COUNT(*)
FROM TEST1
WHERE A.COL NOT IN (SELECT COL FROM TEST2);
답 : 1번
NOT IN 안에 NULL이 들어갈 경우 공집합이 출력되고 이때 COUNT함수의 값은 0이 됨
---------------------------------------------------------------------------------------------------------------------------------------------
- 다음 중 TEST 사용자가 아래의 작업을 수행할 수 있도록 권한을 부여하는 DCL로 올바른 것은?
UPDATE A_USER.TB_A
SET COL1='TEST'
WHERE COL2=100;
1.GRANT UPDATE TO TEST;
2. REVOKE SELECT ON A_USER.TB_A FROM TEST;
3. REVOKE UPDATE ON A_USER.TB_A TO TEST;
4. GRANT SELECT, UPDATE ON A_USER.TB_A TO TEST;
답 :4번
GRANT privileges ON object TO user;
---------------------------------------------------------------------------------------------------------------------------------------------
'공부 > 【SQLD】' 카테고리의 다른 글
【SQLD】 제54회 SQLD 합격후기 및 공부법(비전공자, 2주) (2) | 2024.09.06 |
---|---|
【SQLD】 1과목 데이터 모델링의 이해 기출문제 정리 (0) | 2024.08.22 |
【SQLD】 2과목 SQL 기본 및 활용 연습문제 정리(4) (0) | 2024.08.16 |
【SQLD】 2과목 SQL 기본 및 활용 연습문제 정리(3) (1) | 2024.08.15 |
【SQLD】 2과목 SQL 기본 및 활용 연습문제 정리(2) (0) | 2024.08.15 |