관리 메뉴

나구리의 개발공부기록

Chapter 04 - 단원종합문제 본문

2024정보처리기사 준비 정리(필기 - 시나공, 실기 - 수제비)/실기 7강 - SQL 응용

Chapter 04 - 단원종합문제

소소한나구리 2024. 7. 2. 19:36

2024년도 수제비 실기책(6판) 내용 정리


1) 커밋(COMMIT)에 대해서 서술

정답

더보기

트랜잭션을 메모리에 영구적으로 저장하는 제어어


2) STUDENT 테이블에 컴퓨터과 학생 50명, 인터넷과 학생 100명, 사무자동화학과 학생 50명의 정보가 저장되어 있을 때, 다음 쿼리 문을 실행한 결과 튜플 수는? (단, DEPT 컬럼은 학과명)

  1. SELECT DEPT FROM STUDENT;
  2. SELECT DISTINCT DEPT FROM STUDENT;
  3. SELECT COUNT(DISTINCT DEPT) FROM STUDENT WHERE DEPT='컴퓨터과';

정답

더보기

1. 200

2. 3

3. 1


3) 사원 테이블에 생년월일이라는 컬럼을 삭제하고자 할때 알맞은 쿼리를 작성

정답

더보기

ALTER TABLE 사원 DROP COLUMN 생년월일;

 

책의 정답에는 ALTER TABLE 사원 DROP 생년월일; 만 나와있는데, DROP COLUMN이 맞다


4) 사람이라는 테이블을 만들려고 할 때, 사람 테이블에는 이름, 생년월일이라는 컬럼이 있고, 이름은 VARCHAR(10), 생년월일은 CHAR(8) 데이터 타입을 가지고 생년월일은 추가로 NULL을 가질 수 없도록 제약 조건을 걸고자 할 때 알맞은 쿼리는?

정답

더보기

CREATE TABLE 사람 (이름 VARCHAR(10), 생년월일 CHAR(8) NOT NULL);


5) 아래와 같이 학생 테이블이 존재할 때 뷰를 생성하는 SQL은?

  • 학생 테이블에서 전공이 '전산'인 학번, 이름으로 학생뷰 라는 이름의 뷰를 생성

 

정답

더보기

CREATE VIEW 학생뷰 AS SELECT 학번, 이름 FROM 학생 WHERE 전공 = '전산';


6) 아래와 같이 테이블이 존재할 때, 인덱스를 생성하는 SQL문을 작성

  • 학생 테이블의 학번 컬럼에 대해 학번인덱스라는 인덱스명으로 인덱스를 생성

 

정답

더보기

CREATE INDEX 학번인덱스 ON 학생(학번);


7) 아래와 같이 조건을 만목하는 테이블을 생성하는 SQL문을 작성

  • 테이블명은 교수
  • VARCHAR 타입의 사이즈가 10인 교번 이고 PRIMARY KEY인 컬럼
  • VARCHAR 타입의 사이즈가 10인 이름 컬럼
  • VARCHAR 타입의 사이즈가 8이면서 Null을 허용하지 않는 임용일 컬럼

정답

더보기

CREATE TABLE 교수 (

교번 VARCHAR(10) PRIMARY KEY, 

이름 VARCHAR(10), 

임용일 VARCHAR(8) NOT NULL);


8) 성적 테이블에 학점 컬럼을 추가하는 SQL문을 작성

  • 학점 컬럼은 VARCHAR 타입이고 사이즈는 4이고 NULL을 허용하지 않음

 

정답

더보기

ALTER TABLE 성적 ADD 학점 VARCHAR(4) NOT NULL;


9) 학생 테이블에서 전산과를 출력하는 SQL문을 작성

  • WHERE 절 조건을 이용하여 학과가 전산과인 행을 출력

정답

더보기

SELECT 학번, 이름 FROM 학생 WHERE 학과 = '전산과';


10) [인사]테이블에 20개의 튜플이 있을 때 다음 쿼리를 실행한 결과의 튜플 개수는? (단, 인사 테이블에서 나이는 3명이 20대, 6명이 30대, 나머지가 40대임)

  • SELECT * FROM 인사 WHERE 나이 BETWEEN 35 AND 49;
  • (       )명 이상 (           ) 명 이하

정답

더보기

(11)명 이상 (17)명 이하


11) 급여 테이블에서 부서의 급여 합계가 6000 이상인 부서, 급여합계를 출력하는 SQL문을 작성

  • 급여합계는 급여 컬럼의 값들의 합

정답

더보기

SELECT 부서, SUM(급여) AS 급여합계 FROM 급여 GROUP BY 부서 HAVING 급여합계 >= 6000;


12) 주어진 성적테이블에서 다음을 만족하는 SQL을 작성

  • SELECT 절에 *을 사용하지 않음
  • 학점은 내림차순 정렬, 같은 값일 때 이름을 오름차순으로 정렬

정답

더보기

SELECT 이름, 과목, 학점 FROM 성적 ORDER BY 학점 DESC, 이름 ASC;


13) 주어진 도서 테이블과 도서가격 테이블을 내부 조인(Inner Join)하는 SQL문을 작성

  • FROM 절에서 도서는 A, 도서가격은 B로 별칭을 줌
  • 도서 테이블의 책번호와 도서가격 테이블의 책번호는 ON절에서 조인 조건으로 사용

정답

더보기

SELECT A.책번호 AS 책번호, A.책명 AS 책명 B.가격 AS 가격

FROM 도서 A JOIN 도서가격 B ON A.책번호 = B.책번호;

 

AS로 별칭을 안해주면 A.책번호, AS 책명 이런식으로 표시된다


14) 주어진 도서 테이블과 도서가격 테이블을 완전 외부조인(Full Outer Join) 하는 SQL 문을 작성

  • 13번과 동일한 도서, 도서가격 테이블로 진행하고 출력 결과만 이미지를 참고

  • FROM 절에서 도서는 A, 도서가격은 B로 별칭을 줌
  • 도서 테이블의 책번호와 도서가격 테이블의 책번호는 ON절에서 조인 조건으로 사용

정답

더보기

SELECT A.책번호, A.책명, B.책번호, B.가격

FROM 도서 A FULL OUTER JOIN 도서가격 B ON A.책번호 = B.책번호;

FULL JOIN도 동작하지만 명시적으로 FULL OUTER JOIN을 적어주는 것도 좋다


15) 도서 테이블과 도서가격 테이블에서 아래를 만족하는 SQL문을 작성

  • 13번과 동일한 도서, 도서가격 테이블로 진행하고 출력 결과만 이미지를 참고

  • WHERE 절에서 IN연산자를 사용하며 IN연산자의 조건에 서브쿼리를 사용
  • 책명이 자료구조인 가격 중에 가장 비싼 값을 도서가격 테이블에서 서브쿼리

정답

더보기

SELECT 가격 FROM 도서가격 WHERE 책번호 IN 

(SELECT 책번호 FROM 도서 WHERE 책명 = '자료구조');

책의 정답에는 SELECT MAX(가격) AS 가격 FROM 도서가격 WHERE 책번호 IN (SELECT 책번호 FROM 도서 WHERE 책명 = '자료구조'); 어차피 결과가 25000하나이므로 MAX연산자를 사용할 필요가 없다


16) 데이터의 내용을 삽입하는 SQL문을 작성

정답

더보기

INSERT INTO 학생(학번, 이름, 학년, 수강과목) VALUSE (3000, '장길산', 3, '수학');


17) 학생 테이블에서 학번이 1000인 데이터의 수강과목을 수학에서 영어로 변경하는 쿼리를 작성(단, WHERE 조건에서 학번 이외의 컬럼을 사용하지 않아야 함)

정답

더보기

UPDATE 학생 SET 수강과목 = '영어' WHERE 학번 = 1000;


18) 학생 테이블에서 학번이 3000인 데이터를 삭제하는 쿼리를 작성 (단, WHERE 조건에서 학번 이외의 컬럼을 사용하지 않아야 함)

정답

더보기

DELETE FROM 학생 WHERE 학번 = 3000;


19) 데이터베이스 관리자가 권한을 부여하는 DCL문을 작성

  • 관리자가 사용자 홍길동에게 '사원' 테이블에 대해 SELECT 할 수 있는 권한을 부여

정답

더보기

GRANT SELECT ON 사원 TO 홍길동;


20) 데이터베이스 관리자가 권한을 회수하는 DCL문을 작성

  • 관리자가 사용자 장길산에게 '학생' 테이블에 대해 UPDATE할 수 있는 권한을 회수

정답

더보기

REVOKE UPDATE ON 학생 FROM 장길산;


21) 다음 조건을 만족하도록 쿼리를 완성

  • [학생] 테이블에는 학번, 이름, 과목번호, 중간고사점수, 기말고사 점수 컬럼이 있음
  • 학생들의 과목번호별 5명 이상 존재할 때 해당 과목의 중간고사 평균 점수를 계산하는 쿼리를 작성

쿼리

 

  • SELECT 과목번호, ___ㄱ___ (중간고사점수) FROM 학생 GROUP BY 과목번호 HAVING ___ㄴ___ (*) >= 5;

정답

더보기

ㄱ : AVG 

ㄴ : COUNT


22) 다음 테이블 및 컬럼명에 대한 명세를 보고 나이가 25세 이하인 직원들의 급여를 250으로 변경하는 쿼리를 작성

  • 테이블명: EMPLOYEE(직원 테이블)
  • 컬럼명: NAME(사원명), AGE(나이), SALARY(급여)

정답

더보기

UPDATE EMPLOYEE SET SALARY = 250 WHERE AGE <= 25;


23) 관리자가 사용자 홍길동에게 '학생' 테이블에 대해 조회 할 수 있는 권한을 회수하는 쿼리를 작성

정답

더보기

REVOKE SELECT ON 학생  FROM 홍길동;


24) DBMS에서 지원하는 기능이며, 일련의 쿼리들을 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합으로 반환 값을 출력하지 않는 기능은 무엇인지 작성

정답

더보기

프로시저(Procedure)


25) 데이터베이스 시스템에서  삽입, 갱신, 삭제 등의 이벤트가 발생할 때마다 관련 작업이 자동으로 수행되는 절차형 SQL 문은 무엇인지 작성

정답

더보기

트리거(Trigger)


26) 다음 괄호(   ) 안에 알맞은 용어를 영어로 작성

  • 통계 정보가 없는 상태에서 사전 등록된 규칙에 따라 질의 실행 계획을 선택하는 옵티마이저인 (   1   )와/과 통계 정보로부터 모든 접근 경보를 고려한 질의 실행 계획을 선택하는 옵티마이저인(   2   )이/가 있다

정답

더보기

1 : RBO(Rule Based Optimizer)

2 : CBO(Cost Based Optimizer)


27) 다음 조건을 만족하도록 쿼리를 완성

  • [학생] 테이블에는 학번, 이름, 과목번호, 중간고사점수, 기말고사 점수 컬럼이 있음
  • 학생들의 과목번호별 5명 이상 존재할 때 해당 과목의 중간고사 합계 점수를 계산하는 쿼리를 작성

쿼리

 

  • SELECT 과목번호, ___ㄱ___ (중간고사점수) FROM 학생 GROUP BY 과목번호 HAVING ___ㄴ___ (*) >= 5;

정답

더보기

ㄱ: SUM

ㄴ: COUNT


28) 다음이 설명하는 용어를 작성 -> 이건 왜 여기서나왔는지 모르겠네;;

  • (    )은/는 의사결정 지원 시스템으로, 사용자가 다양한 방식으로 바라보면서 다차원 데이터 분석을 할 수 있도록 도와주는 기술
  • 데이터 웨어하우스(Data Warehouse)에서 OLTP(On-Transaction Processing)는 데이터 소스를 제공하고, (    )은/는 해당 데이터를 분석

정답

더보기

OLAP