7. 예상문제은행 (SQL)

header


예상문제은행 Part 1

문제 1

다음은 SELECT 권한을 취소하는 SQL문이다. 괄호에 들어갈 가장 적합한 SQL 명령어를 쓰시오.

DCL REVOKE
(      ) SELECT ON course FROM HONG;

문제 2

다음은 <수강생> 테이블에 가변적인 20자리 문자가 저장되는 ‘연락처’ 속성을 추가하는 SQL문이다. 괄호에 들어갈 알맞은 데이터 타입을 쓰시오.

DDL ALTER
ALTER TABLE 수강생 ADD 연락처 (        );

문제 3

인덱스 운영 중 데이터의 Insert, Update, Delete 등의 반복 작업으로 단편화가 발생하여 인덱스 성능이 저하될 수 있다. 다음은 idx_P 인덱스를 재구성하기 위한 SQL문이다. 괄호에 들어갈 알맞은 명령어를 쓰시오.

DDL INDEX
ALTER INDEX idx_P (        );

문제 4

다음은 기존 테이블과 동일한 구조의 테이블을 복사하여 생성하는 SQL문이다. 괄호에 알맞은 명령어를 쓰시오.

DDL CREATE
(      ) TABLE order_backup SELECT * FROM order_main;

문제 5

다음은 이순신에게 <수강생> 테이블에 대한 모든 권한을 부여하고, 해당 권한을 다른 사용자에게도 부여할 수 있도록 하는 SQL문이다. 괄호에 들어갈 가장 적합한 명령어를 쓰시오.

DCL GRANT
GRANT ALL ON 수강생 TO 이순신 (        );

문제 6

다음은 <member> 테이블의 email 속성을 제거하면서 연계된 모든 제약 조건도 함께 제거하는 SQL문이다. 괄호에 적합한 예약어를 쓰시오.

DDL ALTER
ALTER TABLE member DROP COLUMN email (        );

예상문제은행 Part 2

문제 7

다음은 <Inventory> 테이블에서 quantity가 50 미만인 제품들의 item_id, item_name, quantity를 가져와 <low_stock> 뷰를 생성하는 SQL문이다. 괄호(①, ②)에 적절한 예약어를 쓰시오.

DDL VIEW
CREATE VIEW low_stock ( ① )
SELECT item_id, item_name, quantity
FROM Inventory
( ② ) quantity < 50;

문제 8

다음 <처리 조건>을 준수하여 인덱스를 생성하는 SQL문의 괄호(①, ②)에 들어갈 알맞은 명령어를 쓰시오.

DDL INDEX
<처리 조건>
• 기본 테이블 S의 열(A, B, C)에 관한 조합으로 Y 인덱스를 생성한다.
• 인덱스 정렬은 A(오름차순), B(내림차순), C(오름차순)이다.
• UNIQUE와 CLUSTER는 생략한다.
CREATE ( ① ) Y ( ② ) S(A, B DESC, C);

문제 9

<환자> 테이블을 정의하는 SQL문이다. 아래의 <요구사항>을 만족하도록 괄호에 적합한 예약어를 쓰시오.

DDL CREATE TABLE
<요구사항>
• 'pid(문자 5)', 'pname(문자 10)', 'gender(문자 1)', 'contact(문자 20)' 속성을 가진다.
• 'pid' 속성은 기본키이다.
• 'gender' 속성은 'M' 또는 'F' 값만 갖도록 한다(제약조건명 : gender_ck).
• 'pid'는 <physician> 테이블에 있는 'phy_id'를 참조한다(제약조건명 : pid_fk).
CREATE TABLE patient (
    pid CHAR(5) (        ),
    pname CHAR(10),
    gender CHAR(1),
    contact CHAR(20),
    CONSTRAINT gender_ck CHECK (gender='M' or gender='F'),
    CONSTRAINT pid_fk FOREIGN KEY(pid) REFERENCES physician(phy_id)
);

문제 10

SQL에 대한 다음 설명에서 괄호(①~③)에 들어갈 알맞은 DDL 명령어를 쓰시오.

DDL
DDL(Data Definition Language)은 DB 구조, 데이터 형식, 접근 방식 등을 정의하는 언어로, 다음 3가지 명령어로 표현한다.

• ( ① ) : 스키마, 도메인, 테이블 등의 객체를 정의하는 명령어
• ( ② ) : 객체에 대한 정의를 변경하는 명령어
• ( ③ ) : 스키마, 도메인, 테이블 등의 객체를 삭제하는 명령어

예상문제은행 Part 3

문제 11

데이터 제어어(DCL)에 대한 다음 설명에서 괄호(①, ②)에 들어갈 알맞은 답을 <보기>에서 찾아 쓰시오.

DCL
• ( ① ) : 수행 결과를 실제 물리적 디스크에 저장하고, 데이터베이스 조작 작업이 정상 완료되었음을 관리자에게 알려주는 명령어
• ( ② ) : 작업이 비정상적으로 종료되었을 때 원래 상태로 복구할 때 사용하는 명령어

<보기>
GRANT   ROLLBACK   SAVEPOINT   COMMIT   REVOKE   UNDO   REDO

문제 12

다음 <보기>에 나열된 SQL 명령어를 DDL, DML, DCL로 구분하시오. (각 분류별로 쉼표로 구분하여 작성)

SQL
<보기>
SELECT   REVOKE   ALTER   CREATE   DELETE   DROP   INSERT   GRANT   UPDATE

문제 13

<고객> 테이블에 가변 길이 25자의 ‘이메일’ 속성을 추가하는 SQL문을 완성하시오. 괄호(①, ②)에 들어갈 알맞은 예약어를 쓰시오.

DDL ALTER
( ① ) TABLE 고객 ( ② ) 이메일 VARCHAR(25);

문제 14

<직원> 테이블에서 ‘성명’이 ‘김철수’인 튜플을 삭제하고자 한다. 다음 <처리 조건>을 참고하여 SQL문을 작성하시오.

DML DELETE
<처리조건>
• 최소한의 코드로 SQL문을 구성한다.
• 마지막 세미콜론(;)은 생략 가능하다.
• 인용 부호가 필요한 경우 작은따옴표(')를 사용한다.

문제 15

다음은 <Employee> 테이블의 ‘emp_no’ 속성에 대해 중복을 허용하지 않는 ‘Emp_idx’라는 이름의 인덱스를 정의하는 SQL문이다. 괄호(①, ②)에 알맞은 예약어를 쓰시오.

DDL INDEX
CREATE ( ① ) ( ② ) Emp_idx ON Employee (emp_no);

예상문제은행 Part 4

문제 16

<PRODUCT> 테이블의 구조와 데이터를 모두 삭제하되, 외래키 제약 등 다른 테이블이 참조하고 있다면 삭제되지 않도록 제한하는 SQL문을 작성하시오.

DDL DROP

문제 17

다음 <직원> 테이블의 정의문과 <조건>을 참고하여 괄호(①, ②)에 들어갈 알맞은 답을 쓰시오.

DDL CREATE TABLE
CREATE TABLE 직원
(
    사번 NUMBER NOT NULL,
    성명 CHAR(10) UNIQUE,
    부서 CHAR(10) ( ① ) (부서 ( ② ) ('개발', '기획', '인사', '영업')),
    급여 NUMBER
);
<조건>
• '사번' 속성은 NULL을 갖지 않는다.
• '성명' 속성은 중복 값을 허용하지 않는다.
• '부서' 속성에는 '개발', '기획', '인사', '영업' 중 하나의 값만 저장할 수 있다.

문제 18

다음 <employees> 테이블에서 사번(emp_id)이 E1035인 직원의 급여(salary)를 3200으로 갱신하는 SQL문을 작성하시오.

DML UPDATE
<employees>
emp_id name salary
E1031 Kim 2800
E1032 Lee 2500
E1035 Park 2900
E1038 Choi 3500
E1041 Jung 4100

문제 19

다음 <처리조건>에 부합하는 SQL문이 완성되도록 괄호(①~③)에 적합한 명령어를 쓰시오.

DML INSERT UPDATE
<처리조건>
• <상품> 테이블에 상품명이 '무선마우스', 카테고리가 '주변기기', 가격이 '25000'인 상품 정보를 입력하시오.
• <상품> 테이블에서 상품명이 '유선키보드'인 상품의 가격을 '18000'으로 변경하시오.
• INSERT ( ① ) 상품 (상품명, 카테고리, 가격) ( ② ) ('무선마우스', '주변기기', 25000);
• UPDATE 상품 ( ③ ) 가격 = 18000 WHERE 상품명 = '유선키보드';

핵심 요약

DDL 핵심 포인트

  • CREATE TABLE : PRIMARY KEY, FOREIGN KEY, UNIQUE, CHECK, NOT NULL 제약 조건
  • CREATE VIEW : AS SELECT문 사용, UNION/ORDER BY 사용 불가
  • CREATE INDEX : UNIQUE(고유 인덱스), ASC/DESC(정렬), CLUSTER
  • ALTER TABLE : ADD(추가), ALTER(변경), DROP COLUMN(삭제, CASCADE 옵션)
  • DROP : CASCADE(연쇄 삭제) vs RESTRICT(참조 시 삭제 취소)
  • INDEX REBUILD : 단편화 발생 시 인덱스 재구성

DML 핵심 포인트

  • INSERT INTO ~ VALUES : 속성명 생략 시 모든 속성에 대응하는 데이터 필요
  • DELETE FROM ~ WHERE : WHERE 생략 시 전체 삭제 (구조는 유지)
  • UPDATE ~ SET ~ WHERE : SET 절에서 산술 연산 가능 (예: 가격 = 가격 * 1.1)
  • SELECT ~ FROM ~ WHERE : 데이터 검색의 기본 구문

DCL 핵심 포인트

  • GRANT ~ ON ~ TO : 권한 부여, WITH GRANT OPTION으로 재부여 가능
  • REVOKE ~ ON ~ FROM : 권한 취소, GRANT OPTION FOR로 재부여 권한만 취소 가능
  • COMMIT : 트랜잭션 결과를 영구적으로 반영
  • ROLLBACK : COMMIT 이전 상태로 복원, ROLLBACK TO 저장점으로 특정 지점까지 복원
  • SAVEPOINT : 트랜잭션 내 롤백 지점 설정