CoDream

[NCS전공교과] 데이터베이스구현 TEST 본문

TEST (오답노트)

[NCS전공교과] 데이터베이스구현 TEST

코잠 2024. 4. 3. 21:57
728x90
반응형

1.   DBMS(DataBase Management System) 설치하기 점수 (20.0점)
아래의 사례를 읽고 에러가 발생한 원인(10점)을 찾고 그 원인을 해결(20점)하시오 (총 30점)


1. 사례 (2개 문제)
사용자 계정을 만들기 위해 일반 사용자 계정인 TEST계정으로 접속하여 계정이 SAMPLE 비밀번호가 1234인
계정을 생성하기 위해 CREATE USER SAMPLE; 를 실행하니 정상적으로 실행이 되지 않았다.

2. 사례
위사례의 문제점을 고치고 계정을 생성(CREATE명령만 실행 함.)을 하여서 접속을 만들고 접속하려는 데 접속이 되지 않고 테이블도 생성되지 않았다.
사례를 구분하여 원인과 문제를 해결하기 위한 조치를 원인과 조치내용란에 각각 기술하시오.
2번 조치내용에는 관련 용어를 설명 하시오.

 

본인답안 1. 사례 1에서는 SYSTEM 계정 (관리자)이 아닌 
일반 계정을 사용해 계정을 생성하려 해서 오류가 남.

2. TEST계정은 테이블을 생성할 수 있는 권한이 
없기 때문에 오류가 남.
모범답안 1. 일반 사용가 계정이 아닌 SYSTEM, SYS AS SYSDBA계정으로 실행해야함. SQL구문이 잘못되었다.

2. 사용자 계정을 생성만 하고 이용할 수 있는 권한을 부여하지 않음
본인답안 1. 사용자 계정은 관리자인 SYSTEM계정이 만들 수 
있다. 관리자 계정으로 접속 후 아래 SQL 구문을 
작성하고 실행한다.
CREATE USER KH IDENTIFIED BY 1234;

2. 테이블을 생성하려면 SYSTEM 계정(관리자)이 TEST 계정에게 테이블을 생성할 수 있는 권한을 부여해야함.
RESOURCE : 데이터베이스 객체를 생성하고 사용할 때 필요한 권한​
CONNECT : 데이터베이스에 연결하는 권한​​​을 모두 부여한다.
GRANT RESOURCE, CONNECT TO KH;​
모범답안 1. SYSTEM계정으로 재접속한다
CREATE USER SAMPLE IDENTIFIED BY 1234;로 SQL구문을 수정한다.

2.GRANT RESOURCE, CONNECT TO SAMPLE;명령어 실행
RESOURCE : 사용자 계정으로 TABLE을 생성 이용할 수있는 권한
CONNECT : 사용자가 DB에 접속할 수 있는 권한



2.   데이터베이스 생성하기 점수 (30.0점)
아래 테이블이 있다는 가정하에 다음 조건에 맞는 사원을 조회하려고 SQL구문을 작성했는데 제대로된

결과가 출력되지 않았다. SQL구문을 보고 문제를 찾고 원인(20점)에 작성하고 제대로된 SQL문을 조치사항(30점)에 작성하시오. (총 50점)



검색조건
DEPT_CODE가 D9이거나 D6이고 SALARY이 300만원 이상이고 BONUS가 있고
남자이고 이메일주소가 _ 앞에 3글자 있는
사원의 EMP_NAME, EMP_NO, DEPT_CODE, SALARY를 조회

작성된 쿼리구문
SELECT EMP_NAME, EMP_NO, DEPT_CODE, SALARY
FROM EMPLOYEE
WHERE DEPT_CODE='D9' OR DEPT_CODE='D6' AND SALARY > 3000000
AND EMAIL LIKE '____%' AND BONUS IS NULL;
* 5개의 문제점이 있음

본인답안 문제를 찾고 원인(20점)

1. AND 연산자가 OR연산자 앞에 있음. 
2. EMAIL LIKE '____%' : _는 글자수를 의미하고 %는 아무 글자를 의미하는데 
   ____4개의 글자뒤에 % 아무거나 와도 된다고 조건을 주었음.​
3. BONUS IS NULL : 보너스가 없는 사람을 찾게됨.
4. 남자 : 조건을 안줌.
5.SALARY > 3000000 : 300만원 초과로 조건을 줌​
모범답안 1. OR문에 () 를 하여 우선연산처리가 되어야함
2. SALARY조건은 이상이므로 >= 로 변경
3. _를 기준으로 조회를 하려면 ESCAPE를 사용해야함.
4. BONUS가 있는 사원인데 없는 것으로 조건을 설정함 IS NULL이 아님
5. 남자에 대한 조건이 빠져있음.
본인답안 제대로된 SQL문을 조치사항(30점)

SELECT  EMP_NAME, EMP_NO, DEPT_CODE, SALARY
FROM EMPLOYEE​
WHERE  SALARY >= 3000000 
AND​  BONUS IS NOT NULL 
AND EMP_NO LIKE '_______1%' 
AND EMAIL LIKE '___^_%' ESCAPE'^'
AND DEPT_CODE='D9' OR DEPT_CODE='D6' ​ ​
;
모범답안 SELECT EMP_NAME, EMP_NO, DEPT_CODE, SALARY
FROM EMPLOYEE
WHERE (DEPT_CODE='D9' OR DEPT_CODE='D6') AND SALARY >= 3000000
AND EMAIL LIKE '___\_%' ESCAPE '\' AND BONUS IS NOT NULL AND SUBSTR(EMP_NO,8,1)=1;



3.   2001020405_19v4.3 데이터베이스 오브젝트 생성하기점수 (20.0점)
다음과 같이 NULL값을 비교하였는데 정상적으로 작동하지 않았다 그 이유를 원인(10점)에 작성하고
정상적으로 작동하기 위한 SQL구문을 조치내용(10점)에 작성하여라 (총 20점)

문제 SQL문
SELECT * FROM EMPLOYEE WHERE BONUS = NULL AND MANAGER_ID !=NULL;
NULL값에 대한 비교처리가 되지 않았다.

본인답안 정상적으로 작동하지 않았다 그 이유를 원인(10점)
오라클에서 NULL 값을 비교하기 위해서는 
IS NULL, IS NOT NULL 함수를 사용해야함.
모범답안 NULL값을 일반적인 값이 아닌 아무것도 없음을 의미하는 것으로 일반연산자로 비교할 수가 없다.
NULL값을 비교하려면 IS NULL, IS NOT NULL로 비교해야함.
본인답안 정상적으로 작동하기 위한 SQL구문을 조치내용(10점)
SELECT * 
FROM EMPLOYEE 
WHERE BONUS IS NULL 
AND MANAGER_ID IS NOT NULL;​
모범답안    
SELECT * FROM EMPLOYEE WHERE BONUS IS NULL AND MANAGER_ID IS NOT NULL;

 

728x90
반응형