CoDream

[NCS전공교과] SQL응용 (문제해결시나리오) 본문

TEST (오답노트)

[NCS전공교과] SQL응용 (문제해결시나리오)

코잠 2024. 4. 3. 22:08
728x90
반응형

1.  절차형 SQL 작성하기 점수 (40.0점)
아래의 상황과 에러의 내용을 읽고 에러가 발생한 원인(20점)과 그 조치사항(올바른 SQL구문)(20점)을 작성하시오(총 40점)

 

1) 시나리오 상황
사용자 계정을 만들기 위해 관리자 계정으로 접속하여
CREATE USER EMP IDENTIFIED BY EMP0123; 명령어를 실행한 뒤
접속을 확인하였다.

2) 에러 내용
User EMP이(가) 생성되었습니다.
ORA-01045: user EMP lacks CREATE SESSION privilege; logon denied

본인답안 아래의 상황과 에러의 내용을 읽고 에러가 발생한 원인(20점)
​EMP계정이 CREATE SESSION 권한이 없어 에러가 발생함.
모범답안 계정은 생성되었으나, 생성된 계정을 접속하기 위한 접속 권한이 부여되지 않았다.
본인답안 그 조치사항(올바른 SQL구문)(20점)
관리자 계정으로 접속하여 EMP계정에 CREATE SESSION 권한을 부여하는 구문을 추가함.
 > GRANT CREATE SESSION TO EMP;
모범답안 DCL 를 통해 권한을 부여한다.
GRANT CREATE SESSION TO EMP; or GRANT CONNECT TO EMP;

 

 

2. 응용 SQL 작성하기 점수 (60.0점)
다음 두 개의 테이블을 조인하여 EMPNO, EMPNAME, DEPTNO, DEPTNAME 컬럼을 조회하였을 때 문제가 발생한다.
아래의 내용과 문제상황을 보고, 발생한 원인(30점)과 해결할 수 있는 조치사항(30점)을 기술하시오. 

(총 60점)

 

-- 사용한 테이블 생성 정보 --
CREATE TABLE DEPARTMENT(
DEPTCODE NUMBER PRIMARY KEY,
DEPTNAME NVARCHAR2(10) NOT NULL
);

CREATE TABLE EMPLOYEE(
EMPNO NUMBER PRIMARY KEY,
EMPNAME VARCHAR2(10) NOT NULL,
DEPTNO NUMBER REFERENCES DEPARTMENT(DEPTCODE)
);

-- 실행한 조인 쿼리 --
SELECT EMPNO, EMPNAME, DEPTNO, DEPTNAME
FROM EMPLOYEE
JOIN DEPARTMENT USING(DEPTNO);

-- 문제 상황
ORA-00904: "DEPARTMENT"."DEPTNO": invalid identifier

본인답안 문제상황 발생한 원인(30점)
각 테이블에서 JOIN하려는 컬럼이름이 DEPTCODE, EMPNO으로 다른데 USING을 사용함.​
하지만 USING은 JOIN하려는 컬럼이름이 같을 때 사용할 수 있음.
모범답안 조인하여 조회할 때 DEPTNO이라는 컬럼은 EMPLOYEE에만 존재하며, DEPARTMENT 테이블에서는 DEPTCODE 라는 컬럼으로 존재한다.
본인답안 해결할 수 있는 조치사항(30점)
이러한 경우 JOIN을 할 때 테이블에 별칭을 부여한 후 
'ON'뒤에 같은 값임을 비교하는 =(동등연산자)를 넣어 사용해야함.
SELECT E.EMPNO, E.EMPNAME, D.DEPTNO, D.DEPTNAME
FROM EMPLOYEE E
JOIN DEPARTMENT D ON E.EMPNO = D.DEPTCODE;​
모범답안 JOIN DEPARTMENT USING(DEPTNO) 에서 USING을 ON으로 바꿔 준다.
JOIN DEPARTMENT ON(DEPTNO = DEPTCODE);




728x90
반응형