받은 점수: 85점
나의 소감:
[문항1] (-10점)(해석을 안써서 감점)⭐⭐
: 해당 문제는 기사시험에서 합격자를 줄일 때 많이 사용되는 난이도 높은 문제이다
내가 쓴 답안 >>
3개 (U3, UB, UC)
답: 2개( U1, U2)
선생님의 풀이 >>
scott3:GRANT SELECT ON STUDENT TO U1 WITH GRANT OPTION
=> scott3 사용자가 U1 사용자에게 STUDENT 테이블에서 SELECT 하는 권한과,
다른 사용자에게 STUDENT 테이블에서 SELECT 할 수 있는 권한을 준다.
scott3:GRANT SELECT ON STUDENT TO UA WITH GRANT OPTION
=> scott3 사용자가 UA 사용자에게 STUDENT 테이블에서 SELECT 하는 권한과,
다른 사용자에게 STUDENT 테이블에서 SELECT 할 수 있는 권한을 준다.
U1 : GRANT SELECT ON scott3.STUDENT TO U2
=> U1 사용자가 U2 사용자에게 STUDENT 테이블에서 SELECT 하는 권한을 준다.
U2 : GRANT SELECT ON scott3.STUDENT TO U3
=> U2 사용자가 U3 사용자에게 STUDENT 테이블에서 SELECT 하는 권한을 준다.
=> U2 사용자는 GRANT OPTION 없이 GRANT SELECT 되었으므로 권한을 줄 수 없다.
UA: GRANT SELECT ON scott3.STUDENT TO UB
=> UA 사용자가 UB 사용자에게 STUDENT 테이블에서 SELECT 하는 권한을 준다.
UA: GRANT SELECT ON scott3.STUDENT TO UC
=> UA 사용자가 UC 사용자에게 STUDENT 테이블에서 SELECT 하는 권한을 준다.
DBA: REVOKE SELECT ON STUDENT FROM UA CASCADE;
=> UA 사용자에게 부여되어 있던 SELECT 권한과 그에 연관된 권한을 모두 해제한다.
=> UA가 허가한 UB, UC의 SELECT 권한 또한 회수된다.
최종적으로, scott3를 제외하고 U1, U2 사용자들만 STUDENT 테이블에서 SELECT 할 수 있다.
[문항2] (-5점)
내가 쓴 답안 >>
[(가) 답안]
CREATE USER usertest01 IDENRIFIED BY tiger;
GRANT CONNECT , RESOURCRE to usertest01;
GRANT DBA to usertest01;
[(나) 답안]
CREATE란, 오라클 데이터 베이스 객체를 생성하는 데 사용하는 명령어이다.
CONNECT란, 사용자가 데이터베이스에 접속하는 데 필요한 CREATE SESSION 권한을 갖고 있다.
RESOURCE란, 사용자가 테이블, 시퀀스를 비롯한 여러 객체를 생성할 수 있는 기본 시스템 권한을 묶어놓은 롤이다.
GRANT란, 사용자에게 시스템 권한을 부여할 때 사용한다.
나의 DB서버 관점에서 줄 수 이름은 별명(alias), 전용 동의어, 공용 동의어이다.
선생님의 풀이 >>
가) : CREATE USER scott IDENTIFIED BY tiger;
GRANT CONNECT, RESOURCE TO scott;
나) : '호스트 이름' 칸에 들어갈 내용은 데이터베이스의 IP주소 혹은 그 주소를 대변하는 도메인 이름이 된다.
해당 부분에 들어갈 내용들에는 다음의 3가지가 있다.
1. localhost
2. 127.0.0.1
3. IPv4 주소(cmd 에서 ipconfig 명령어를 입력한 후 확인 가능함)
1번의 경우, 해당 단말에서 자기 자신을 참조하기 위한 방법이 된다.
2번의 경우, 자기 자신을 참조하는 ip 주소이다.
1번과 2번을 루프백(loopback) 주소라고 하는데, 이는 단말 자기 자신의 주소를 반환한다.
3번의 경우, 괄호 안에 작성한 방법을 이용하면 자기 자신의 IPv4 주소를 얻을 수 있다.
3번의 주소는 다른 컴퓨터에서 자신의 단말로 연결하는데 사용할 수 있는 주소이기도 하다.
[문항3] ⭐⭐⭐⭐⭐면접에 무조건 나오는 질문!!
내가 쓴 답안 >>
[답안]
[1]
Database 언어의 종류에는 크게 DDL, DML, DCL 세 가지가 있다.
DDL은 데이터 정의어로, RDBMS 내 데이터 관리를 위해 테이블을 포함한 여러 객체를 생성, 수정, 삭제하는 명령어이다.
예시로는 Create table와 Alter table가 있다.
DML은 데이터 조작어, 최초 사용자이며 RDBMS 내 테이블의 데이터를 저장, 수정, 삭제하는 명령어이다.
예시로는 Select, Insert, Delete, Update가 있다.
DCL은 데이터 사용 권한과 관련된 명령어이며, 데이터베이스의 규정이나 기법을 정의하고 제어하는 언어이다.
예시로는 Grant와 Revoke가 있다.
[2]
PK란 Primary Key의 약자로, 한 테이블 내의 Primary Key는 해당 테이블 내에서 데이터를 식별하기 위한 제약조건이다. PK의 제약조건은 UNIQUE와 NOT NULL 제약 조건의 특성을 모두 가지며, 최소성과 제약조건을 결합한 형태이어야 한다.
INDEX란, 오라클 데이터베이스에서 데이터 검색 성능의 향상을 위해 테이블 열에 사용하는 객체를 뜻한다.
비교: Primary Key는 테이블에 오직 한개만 생성할 수 있으며, INDEX는 그 이상으로 생성이 가능하다. 다만, 7개 이상은 추천하지 않는다. 또한 Primary Key는 NOT NULL제약조건을 가지지만, INDEX는 가지지 않는다.
마지막으로 Primary Key의 목적은 데이터 무결성을 위한 것이며, INDEX의 목적은 빠른 자료 조회를 위해 사용한다.
[3]
Delete, Truncate, Drop은 삭제라는 공통점을 갖지만 삭제의 범주와 대상이 다르다. 또한 Delete를 제외한 Truncate와 Drop는 저장공간을 반납하여 다른 곳에서 해당 공간을 재사용할 수 있다
Delete의 삭제 범위는 행 데이터 일부부터 행 데이터 전체까지이다. 삭제 이후에도 데이터 저장 공간과 인덱스, 테이블 컬럼, 제약조건, 테이블 정의가 남는다. Delete는 삭제되는 행마다 로그를 기록하기 때문에 작업 속도가 느린 편이며 복구 가능성이 있다.
Truncate의 삭제 범위는 행 전체부터 인덱스까지이다. 다만 테이블 전체 삭제는 되지 않는다. 삭제 이후에 행 데이터와 데이터 저장공간과 인덱스는 삭제되며, 테이블 컬럼, 제약조건, 테이블 정의는 남는다. 작업 속도가 빠르며 복구는 일부만 가능하다.
Drop의 삭제 범위는 행 전체, 인덱스에 이르러 테이블 전체까지 가능하다. 즉, 행 데이터, 데이터 저장공간, 인덱스, 테이블 컬럼, 제약 조건 , 테이블 정의까지 전부 삭제된다. 작업속도가 빠르며 복구가능성은 없다.
선생님의 풀이 >> (맞은 것으로 처리해주셨지만, 빠진 포인트들이나 추가설명 더 적음)
[1]
[2]
[3]
[문항4]
내가 쓴 답안 >> 답:150
이유: NULL은 공백과 달리, 정의할 수 없는 값이다.
따라서 SUM(COL1)의 값은 80, SUM(COL2)의 값은 10, SUM(COL3)의 값은 60으로 세 값을 합한 결과값은 80+10+60인 150이 된다
[문항5]
내가 쓴 답안 >>
create or replace PROCEDURE in_emp3
(p_name IN emp.ename%TYPE,
p_sal IN emp.sal%TYPE,
p_job IN emp.job%TYPE
)
IS
v_empno emp.empno%TYPE;
highsal_err EXCEPTION;
BEGIN
DBMS_OUTPUT.ENABLE;
SELECT MAX(empno)+1
INTO v_empno
FROM emp
;
IF p_sal < 9000 THEN
INSERT INTO emp(empno , ename , sal , job , hiredate)
VALUES(v_empno , p_name , p_sal , p_job , SYSDATE);
ELSE
RAISE highsal_err;
END IF;
EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN
DBMS_OUTPUT.PUT_LINE('중복 데이터 ENAME 존재합니다');
DBMS_OUTPUT.PUT_LINE('DUP_VAL_ON_INDEX');
WHEN highsal_err THEN
DBMS_OUTPUT.PUT_LINE('ERROR!!!-지정한 급여가 너무 많습니다. 9000이하으로 다시 입력하세요');
END in_emp3;
'DB > Oracle' 카테고리의 다른 글
2024_09_02_월 (0) | 2024.09.02 |
---|---|
2024_07_05_금~07_08_월 (0) | 2024.07.05 |
2024_07_03_수~ 07_04_목 (0) | 2024.07.03 |
2024_07_02_화 (0) | 2024.07.02 |
2024_07_01_월 (0) | 2024.07.01 |