[데이터베이스 개론 3판] Chapter 7. 연습문제 풀이
1. SQL은 데이터 정의어 DDL, 데이터 조작어 DML, 데이터 제어어 DCL 로 구분할 수 있다. 다음 중 성격이 다른 명령어는 무엇인가?
- ALTER
- DROP
- CREATE
- INSERT
2. 고객 테이블을 생성한 후, 주소 속성이 누락되었다. 주소 속성을 추가하기에 적합한 SQL 명령어는?
- CREATE
- ALTER
- ADD
- MODIFY
3. 오라클에서 학생 테이블을 참조하는 제약조건과 함께 학생 테이블을 제거하는 SQL 문에서 빈칸에 필요한 것은 무엇인가?
DROP TABLE 학생 ________;
- ALL
- CASCADE
- RESTRICT
- DELETE
4. SQL 문을 이용해 테이블을 생성할 때 특정 속성에 대해 가능한 데이터 값의 범위를 지정하거나 제약 조건을 지정하여 데이터 무결성을 유지하기 위해 사용되는 키워드는 무엇인가?
- PRIMARY KEY
- DEFAULT
- NOT NULL
- CHECK
5. SQL 문을 이용해 테이블을 생성할 때 외래키를 지정하기 위해 사용되는 키워드로 참조 무결성 제약조건과 관련이 있는 것은?
- PRIMARY KEY
- DEFAULT
- NOT NULL
- FOREIGN KEY
6. 다음 집계함수 중 어떠한 데이터 타입에도 사용이 가능한 것은?
- AVG
- COUNT
- SUM
- STDDEV
7. 다음 SQL 문을 실행하면 출력되는 결과로 옳은 것은?
SELECT 고객명
FROM 고객
WHERE 고객아이디 LIKE ‘_T%’;
- 고객아이디가 T로 시작하는 고객들의 이름
- 고객아이디가 T로 끝나는 고객들의 이름
- 위치 상관없이 고객아이디에 T를 포함한 고객들의 이름
- 고객아이디 두 번째 문자가 T인 고객들의 이름
8. SQL 문에서 HAVING 키워드를 사용할 수 있는 절은?
- LIKE 절
- WHERE 절
- GROUP BY 절
- ORDER BY 절
9. 고객 테이블에서 주소가 널 값이 아닌 모든 고객의 이름을 검색하기 위한 다음 SQL 문의 빈 칸에 적합한 내용은?
SELECT 고객이름
FROM 고객
WHERE __________________;
- 주소 != NULL
- 주소 <> NULL
- 주소 IS NOT NULL
- NOT(주소 = NULL)
10. SQL의 DELETE 명령문에 대한 설명으로 옳지 않은 것은?
- 테이블의 투플을 삭제할 때 사용한다.
- 특정 테이블에 대하여 WHERE 절이 없는 DELETE 명령문을 수행하면 DROP TABLE 명령문을 수행했을 때와 같은 효과를 얻을 수 있다.
- SQL을 기능에 따라 분류할 경우 DML에 해당한다.
- 기본 사용 형식은 “DELETE FROM 테이블 [WHERE 조건];”이다.
11. 제품(제품코드, 제품명, 가격, 제조일자) 테이블에 “제품코드 100, 제품명 깨끗세제, 가격 5,000원”인 제품 투플을 삽입하는 SQL 문으로 옳은 것은?
- INSERT 제품 INTO VALUES (100, '깨끗세제', 5000);
- INSERT FROM 제품 VALUES (100, '깨끗세제', 5000);
- INSERT INTO 제품(제품코드, 제품명, 가격) VALUES (100, '깨끗세제', 5000);
- INSERT TO 제품(제품코드, 제품명, 가격) VALUES (100, '깨끗세제', 5000);
12. 다음 SQL 문에서 Ⓐ와 Ⓑ에 적합한 키워드로 짝지어진 것은?
UPDATE 학생 Ⓐ 점수 = 점수 + 5 Ⓑ 성명 = ‘홍길동’;
- Ⓐ : SET Ⓑ : WHERE
- Ⓐ : FROM Ⓑ : SET
- Ⓐ : INTO Ⓑ : WHERE
- Ⓐ : WHERE Ⓑ : INTO
13. 다음 두 개의 SQL 문은 같은 결과 테이블이 반환되는 동일한 의미의 SQL 문이다. Ⓐ와 Ⓑ에 적합한 키워드로 짝지어 진 것은?
-- Ⓐ
SELECT 학생.이름, 학과.이름
FROM 학생, 학과
WHERE 학생.중간성적 >= 50 AND
학생.소속학과 = 학과.학과번호;
-- Ⓑ
SELECT 학생.이름, 학과.이름
FROM 학생 Ⓐ 학과 Ⓑ 학생.소속학과 = 학과.학과번호
WHERE 학생.중간성적 >= 50;
- Ⓐ : LEFT OUTER JOIN Ⓑ : ON
- Ⓐ : LEFT OUTER JOIN Ⓑ : IN
- Ⓐ : INNER JOIN Ⓑ : IN
- Ⓐ : INNER JOIN Ⓑ : ON
14. 다음 SQL 문을 실행했을 때 결과 테이블의 모습은 무엇인가?
<사원 테이블>
사원번호 | 성명 | 소속부서 |
25 | 김미순 | 총무과 |
56 | 박이준 | 자재과 |
23 | 이형주 | 자재과 |
43 | 오형우 | 총무과 |
SELECT 성명
FROM 사원
WHERE 소속부서 = (SELECT 소속부서
FROM 사원
WHERE 성명 = '오형우');
-
성명 김미순 오형우
15. 다음과 같이 3개의 테이블 스키마가 정의되어 있다. 아래에 제시된 SQL 문의 실행 결과에 대한 설명으로 옳은 것은?
학생 (학번, 학생이름, 학년, 학과)
동아리 (동아리번호, 동아리이름, 동아리방, 지도교수이름)
가입 (학번, 동아리번호, 가입연도)
SELECT 학생이름
FROM 학생
WHERE NOT EXISTS (SELECT *
FROM 가입
WHERE 학생.학번 = 가입.학번);
- 모든 동아리에 가입한 학생이름
- 어떤 동아리에도 가입하지 않은 학생이름
- 존재하지 않는 동아리에 가입한 학생이름
- 어떤 동아리든 가입한 학생이름
16. 다음은 외래키를 정의하는 SQL 문의 형식 중 일부다. 옵션으로 선택할 수 없는 것은?
FOREIGN KEY (속성_리스트) REFERENCES 테이블_이름(속성_리스트)
[ON DELETE 옵션] [ON UPDATE 옵션]
- NO ACTION
- CHECK
- CASCADE
- SET NULL
15. 기본 테이블 R과 S를 조인해서 뷰 V1을 정의하고, 뷰 V1을 이용해 V2가 정의되었다. 이때 다음과 같 은 SQL 문이 실행됐을 때 발생하는 결과를 올바르게 설명한 것은?
DROP VIEW V1;
- V1만 삭제된다.
- V2만 삭제된다.
- V1과 V2가 모두 삭제된다.
- V1과 V2 모두 삭제되지 않는다.
18. 뷰에 대한 설명으로 옳지 않은 것은?
- 뷰는 물리적으로 데이터를 저장하지 않는 가상의 테이블이다.
- 뷰에 대한 삽입·삭제·수정 연산이 항상 허용되는 것은 아니다.
- 뷰는 기본 테이블로부터 유도되지만, 검색 연산은 기본 테이블과 약간의 차이가 있다.
- 뷰에 대한 정의는 ALTER 문으로 변경할 수 없다.
19. 뷰에 대한 설명으로 옳지 않은 것은?
- 데이터에 대한 보안을 제공한다.
- 뷰의 내용을 검색하고자 할 때는 SELECT 문을 이용한다.
- WITH CHECK OPTION을 사용하여 뷰를 정의하면, 뷰를 통한 삽입 또는 수정 연산에 제한을 둘 수 있다.
- 물리적 독립성을 제공한다.
20. 다음 SQL 명령어를 보고 각 물음에 답하시오.
① CREATE ② SELECT ③ DROP ④ ALTER ⑤ DELETE ⑥ INSERT ⑦ UPDATE
20-1. DDL에 해당하는 SQL 명령어를 모두 고르시오.
① CREATE ③ DROP ④ ALTER
20-2. DML에 해당하는 SQL 명령어를 모두 고르시오.
② SELECT ⑤ DELETE ⑥ INSERT ⑦ UPDATE
21. 뷰에 대한 설명으로 적합한 것을 모두 고르시오.
(A) 뷰는 물리적으로 저장 장치에 저장된다.
(B) 뷰에 대한 삽입·수정·삭제 연산이 항상 허용되는 것은 아니고 제약이 따른다.
(C) 뷰는 CREATE 문을 이용해 생성할 수 있다.
(D) 뷰는 ALTER 문을 이용해 변경할 수 있다.
(E) 뷰는 DROP 문을 이용해 삭제할 수 있다.
(F) 기본 테이블이 제거되더라도 뷰는 자동으로 삭제되지 않는다.
(G) 뷰를 기반으로 새로운 뷰를 만들 수 있다.
22. 삽입 SQL에 대한 설명으로 옳지 않은 것은?
- 프로그래밍 언어로 작성된 프로그램 안에 삽입하여 사용하는 SQL 문이다.
- 프로그램 안에서 일반적인 명령문이 위치할 수 있는 곳이면 어디에나 삽입할 수 있다.
- 프로그램 안에 선언된 일반 변수를 삽입 SQL 문에서 사용할 수 있지만 테이블의 속성과 구별하기 위해 이름이 달라야 한다.
- 프로그램 안에 선언된 일반 변수의 데이터 타입은 이에 대응하는 테이블의 속성과 데이터 타입이 일치해야 한다.
23. 뷰를 생성하기 위한 기본 형식 중 WITH CHECK OPTION의 의미를 설명하시오.
뷰의 생성 이후 뷰에 대한 삽입이나 수정 연산이 실행될 때, SELECT 문에서 제시한 뷰의 정의 조건을 위반할 경우 실행을 거부하는 제약조건이다.
24. 다음의 관계 대수를 SQL 문으로 작성하시오.
π도서명, 가격(σ출판사='한빛'∧재고량>=50 (도서))
SELECT 도서명, 가격
FROM 도서
WHERE 출판사 = '한빛' AND
재고량 >= 50;
25. 제품 테이블에 제조업체가 대한식품인 제품 50개, 민국푸드인 제품 30개, 한빛제과인 제품 50개에 대한 데이터가 저장되어 있을 때, 다음 SQL 문의 실행 결과 투플 수는 각각 얼마인가?
가. SELECT 제조업체 FROM 제품;
나. SELECT DISTINCT 제조업체 FROM 제품;
다. SELECT 제품명 FROM 제품 WHERE 제조업체=‘대한식품’;
가 : 130 / 나 : 3 / 다 : 50
26. 다음 SQL 문을 성공적으로 실행하여 부서 테이블과 사원 테이블이 생성되었다. 각 물음에 답하시오.
CREATE TABLE 부서 (
부서코드 CHAR(3) NOT NULL,
부서명 VARCHAR(10),
PRIMARY KEY(부서코드)
);
CREATE TABLE 사원 (
사원번호 INT NOT NULL,
소속부서 VARCHAR(10),
PRIMARY KEY(사원번호),
FOREIGN KEY(소속부서) REFERENCES 부서(부서코드) ON DELETE CASCADE
);
INSERT INTO 부서 VALUES ('P1', '개발부');
INSERT INTO 부서 VALUES ('P2', '홍보부');
INSERT INTO 사원 VALUES (100, 'P1');
INSERT INTO 사원 VALUES (200, 'P2');
INSERT INTO 사원 VALUES (300, 'P2');
26-1. 부서 테이블과 사원 테이블의 카디널리티는 각각 얼마인가?
부서 : 2 / 사원 : 3
26-2. 다음 SQL 문이 성공적으로 실행되었다면 부서 테이블과 사원 테이블의 카디널리티는 각각 얼마인가?
DELETE FROM 부서 WHERE 부서코드 = 'P2';
부서 : 1 / 사원 : 1
27. 다음 학생 테이블을 보고 각 물음에 답하시오.