17차시 연계 · 3과목 데이터베이스 일반

컴활 1급 필기 쿼리·SQL 문제 모음

SELECT·DISTINCT·WHERE·ORDER BY·GROUP BY·HAVING, 집계·Access 함수, IN·BETWEEN·LIKE, 하위 질의, 조인, INSERT·UPDATE·DELETE, 크로스탭·매개 변수·실행 쿼리 범위 문제 45개를 모았습니다. 실전 모의고사 문제 40개를 먼저, 이어서 17차시 확인문제 5개를 보여 줍니다.

2급 기출로 기초 다지기

같은 범위의 2급 기출문제를 먼저 풀면 1급 문제가 쉬워집니다.

데이터베이스 일반2020년 2회 (7월 4일)

Q1.다음 중 주어진 [학생] 테이블을 참조하여 아래의 SQL 문을 실행한 결과로 옳은 것은?

[학생] 테이블

학번전공학년나이
100국사421
150회계219
200수학330
250국사331
300회계425
350수학219
400국사123
SELECT AVG(나이) FROM 학생
WHERE 전공 NOT IN ('수학', '회계');
  1. ①25
  2. ②23
  3. ③21
  4. ④19
정답과 해설 보기

정답: ① 25

전공이 수학·회계가 아닌 레코드는 국사 3명(21, 31, 23)이므로 평균은 75÷3 = 25입니다.

출제: 2020년 2회 (7월 4일) 48번

데이터베이스 일반2020년 2회 (7월 4일)

Q2.아래와 같이 조회할 고객의 최소 나이를 입력받아 검색하는 매개 변수 쿼리를 작성하려고 한다. 다음 중 'Age' 필드의 조건식으로 옳은 것은?

문제 자료
  1. ①>={조회할 최소 나이 입력}
  2. ②>="조회할 최소 나이 입력"
  3. ③>=[조회할 최소 나이 입력]
  4. ④>=(조회할 최소 나이 입력)
정답과 해설 보기

정답: ③ >=[조회할 최소 나이 입력]

매개 변수 쿼리에서는 조건에 대괄호[ ]로 안내 문구를 쓰면 실행할 때 그 문구가 적힌 입력 창이 나타납니다.

출제: 2020년 2회 (7월 4일) 49번

데이터베이스 일반2020년 2회 (7월 4일)

Q3.다음 중 주어진 [Customer] 테이블을 참조하여 아래의 SQL문을 실행한 결과로 옳은 것은?

[Customer]

CityAgeHobby
부산30축구
서울26영화감상
부산45낚시
서울25야구
대전21축구
서울19음악감상
광주19여행
서울38야구
인천53배구
SELECT Count(*)
FROM (SELECT Distinct City From Customer);
  1. ①3
  2. ②5
  3. ③7
  4. ④9
정답과 해설 보기

정답: ② 5

안쪽 SELECT Distinct City는 중복을 뺀 도시 목록(부산, 서울, 대전, 광주, 인천)을 만들고, 바깥 Count(*)가 그 개수 5를 셉니다.

출제: 2020년 2회 (7월 4일) 51번

데이터베이스 일반2020년 1회 (2월 29일)

Q4.다음 중 SQL 질의에 대한 설명으로 옳지 않은 것은?

  1. ①ORDER BY절 사용 시 정렬방식을 별도로 지정하지 않으면 기본 값은 'DESC'로 적용된다.
  2. ②GROUP BY절은 특정 필드를 기준으로 그룹화 하여 검색할 때 사용한다.
  3. ③FROM절에는 테이블 또는 쿼리 이름을 지정하며, WHERE절에는 조건을 지정한다.
  4. ④SELECT DISTINCT문을 사용하면 중복 레코드를 제거할 수 있다.
정답과 해설 보기

정답: ① ORDER BY절 사용 시 정렬방식을 별도로 지정하지 않으면 기본 값은 'DESC'로 적용된다.

ORDER BY에서 정렬 방식을 생략하면 오름차순(ASC)이 기본입니다. 내림차순은 DESC를 직접 써야 합니다.

출제: 2020년 1회 (2월 29일) 43번

데이터베이스 일반2020년 1회 (2월 29일)

Q5.다음 중 아래 <학생> 테이블에 대한 SQL문의 실행 결과로 옳은 것은?

<학생>

학번전공학년나이
1002영문SO19
1004통계SN23
1005영문SN21
1008수학JR20
1009영문FR18
1010통계SN25
SELECT AVG([나이]) FROM 학생
WHERE 학년="SN" GROUP BY 전공
HAVING COUNT(*) >= 2;
  1. ①21
  2. ②22
  3. ③23
  4. ④24
정답과 해설 보기

정답: ④ 24

학년이 SN인 레코드는 통계 23, 영문 21, 통계 25입니다. 전공별로 묶으면 통계 2명, 영문 1명이고, HAVING COUNT(*) >= 2를 만족하는 것은 통계뿐이므로 평균은 (23+25)/2 = 24입니다.

출제: 2020년 1회 (2월 29일) 48번

데이터베이스 일반2020년 1회 (2월 29일)

Q6.다음 중 선택 쿼리에서 사용자가 지정한 패턴과 일치하는 데이터를 찾고자 할 때 사용되는 연산자는?

  1. ①Match
  2. ②Some
  3. ③Like
  4. ④Any
정답과 해설 보기

정답: ③ Like

Like 연산자는 *, ?, # 같은 와일드카드로 패턴을 지정해 일치하는 데이터를 찾습니다. 예: Like "김*"는 김으로 시작하는 값.

출제: 2020년 1회 (2월 29일) 49번

데이터베이스 일반상시 경향 모의고사 1회

Q7.[학생] 테이블에서 다음 SQL문을 실행한 결과로 표시되는 값은?

[학생]

이름학과점수
김가람경영85
이나래컴퓨터92
박다솜경영78
최라온영어88
정마루컴퓨터70
SELECT COUNT(*) FROM 학생
WHERE 점수 BETWEEN 78 AND 88 AND 학과 <> "영어";
  1. ①1
  2. ②2
  3. ③3
  4. ④4
정답과 해설 보기

정답: ② 2

점수가 78 이상 88 이하이면서 학과가 '영어'가 아닌 레코드는 김가람(85)과 박다솜(78) 두 개입니다. BETWEEN은 양 끝값을 포함하며, 최라온(88)은 영어과라 제외됩니다.

출제: 상시 경향 모의고사 1회 43번

데이터베이스 일반상시 경향 모의고사 1회

Q8.[고객] 테이블에 (C1, 한별), (C2, 은솔), (C3, 도윤) 세 레코드가 있고 [주문] 테이블은 다음과 같다. 다음 SQL문을 실행했을 때 결과로 표시되는 레코드 수는?

[주문]

주문번호고객ID금액
1C15000
2C33000
3C12000
4C47000
SELECT 고객.이름, 주문.금액
FROM 고객 LEFT JOIN 주문 ON 고객.고객ID = 주문.고객ID;
  1. ①2
  2. ②3
  3. ③5
  4. ④4
정답과 해설 보기

정답: ④ 4

LEFT JOIN은 왼쪽(고객)의 모든 레코드를 표시합니다. C1은 주문 2건, C2는 주문이 없어 금액이 Null인 1건, C3은 1건이므로 4개이며, 고객에 없는 C4 주문은 표시되지 않습니다.

출제: 상시 경향 모의고사 1회 52번

데이터베이스 일반상시 경향 모의고사 1회

Q9.Access 쿼리에서 Mid("Database", InStr("Database", "b"), 3) 의 결과는?

  1. ①aba
  2. ②ata
  3. ③base
  4. ④bas
정답과 해설 보기

정답: ④ bas

InStr은 "b"가 처음 나타나는 위치 5를 반환하고, Mid는 5번째 글자부터 3글자를 추출하므로 "bas"입니다.

출제: 상시 경향 모의고사 1회 56번

데이터베이스 일반상시 경향 모의고사 1회

Q10.Access 쿼리에 대한 설명으로 옳지 않은 것은?

  1. ①크로스탭 쿼리에서 행 머리글은 최대 3개, 열 머리글은 1개까지 지정할 수 있다.
  2. ②중복 데이터 검색 쿼리 마법사로 만든 쿼리를 실행하면 중복된 레코드가 자동으로 삭제된다.
  3. ③매개 변수 쿼리는 실행할 때 대괄호([ ]) 안에 입력한 메시지를 대화 상자로 표시한다.
  4. ④불일치 검색 쿼리는 한 테이블의 레코드 중 다른 테이블에 관련 레코드가 없는 것을 찾는다.
정답과 해설 보기

정답: ② 중복 데이터 검색 쿼리 마법사로 만든 쿼리를 실행하면 중복된 레코드가 자동으로 삭제된다.

중복 데이터 검색 쿼리는 필드 값이 중복된 레코드를 찾아 보여 주는 선택 쿼리일 뿐 레코드를 삭제하지 않습니다.

출제: 상시 경향 모의고사 1회 60번

데이터베이스 일반상시 경향 모의고사 2회

Q11.<사원> 테이블에 다음 SQL문을 실행했을 때의 결과로 옳은 것은?

<사원>

이름부서급여
김민준영업300
이서연기획450
박서준영업380
최지우인사420
정하은기획350
SELECT 이름 FROM 사원
WHERE 부서 IN ('영업', '기획') AND 급여 BETWEEN 350 AND 420
ORDER BY 급여 DESC;
  1. ①2개의 레코드가 검색되며, 첫 번째 레코드의 이름은 박서준이다.
  2. ②3개의 레코드가 검색되며, 첫 번째 레코드의 이름은 이서연이다.
  3. ③2개의 레코드가 검색되며, 첫 번째 레코드의 이름은 정하은이다.
  4. ④3개의 레코드가 검색되며, 첫 번째 레코드의 이름은 박서준이다.
정답과 해설 보기

정답: ① 2개의 레코드가 검색되며, 첫 번째 레코드의 이름은 박서준이다.

부서가 영업·기획이면서 급여가 350 이상 420 이하인 사원은 박서준(380)과 정하은(350)입니다. 급여 내림차순이므로 박서준이 먼저 표시됩니다. 이서연(450)은 BETWEEN 범위를 벗어납니다.

출제: 상시 경향 모의고사 2회 43번

데이터베이스 일반상시 경향 모의고사 2회

Q12.Access에서 다음 식의 결과로 옳지 않은 것은?

  1. ①DateDiff("d", #2026-03-01#, #2026-03-10#) → 10
  2. ②Left("Database", 4) → Data
  3. ③InStr("Access", "c") → 2
  4. ④DateAdd("m", 2, #2026-01-31#) → 2026-03-31
정답과 해설 보기

정답: ① DateDiff("d", #2026-03-01#, #2026-03-10#) → 10

DateDiff는 두 날짜의 차이를 구하므로 3월 1일과 3월 10일의 일수 차이는 9입니다. DateAdd("m", 2, …)는 2개월 뒤 날짜를 구하므로 3월 31일이 맞습니다.

출제: 상시 경향 모의고사 2회 56번

데이터베이스 일반상시 경향 모의고사 2회

Q13.<판매> 테이블에 다음 SQL문을 실행했을 때의 결과로 옳은 것은?

<판매>

지점금액
서울100
부산200
서울300
대구150
부산250
서울80
SELECT 지점, COUNT(*) AS 건수, SUM(금액) AS 합계
FROM 판매
GROUP BY 지점
HAVING SUM(금액) >= 400;
  1. ①2개의 레코드가 표시되며, 서울의 건수는 3이다.
  2. ②3개의 레코드가 표시되며, 대구의 합계는 150이다.
  3. ③2개의 레코드가 표시되며, 부산의 합계는 200이다.
  4. ④1개의 레코드가 표시되며, 서울의 합계는 480이다.
정답과 해설 보기

정답: ① 2개의 레코드가 표시되며, 서울의 건수는 3이다.

지점별 합계는 서울 480(3건), 부산 450(2건), 대구 150(1건)입니다. HAVING 조건(합계 400 이상)을 만족하는 서울과 부산 2개 레코드가 표시됩니다.

출제: 상시 경향 모의고사 2회 59번

데이터베이스 일반상시 경향 모의고사 2회

Q14.Access의 크로스탭 쿼리에 대한 설명으로 옳지 않은 것은?

  1. ①행 머리글로는 둘 이상의 필드를 지정할 수 있다.
  2. ②열 머리글로 여러 필드를 지정하여 다단계 열 머리글을 만들 수 있다.
  3. ③값으로는 하나의 필드를 지정하고 합계, 평균, 개수 등의 집계 함수를 적용한다.
  4. ④크로스탭 쿼리 마법사나 쿼리 디자인 보기에서 만들 수 있다.
정답과 해설 보기

정답: ② 열 머리글로 여러 필드를 지정하여 다단계 열 머리글을 만들 수 있다.

크로스탭 쿼리에서 열 머리글과 값은 각각 하나의 필드만 지정할 수 있습니다. 여러 필드를 지정할 수 있는 것은 행 머리글입니다.

출제: 상시 경향 모의고사 2회 60번

데이터베이스 일반상시 경향 모의고사 3회

Q15.다음 <학생> 테이블에 아래 SQL문을 실행했을 때 표시되는 이름을 순서대로 나열한 것은?

<학생>

학번이름학과점수
1김가컴공85
2이나경영92
3박다컴공78
4최라전자92
5정마경영70
SELECT 이름 FROM 학생
WHERE 학과 IN ('컴공', '경영') AND 점수 BETWEEN 75 AND 90
ORDER BY 점수 DESC;
  1. ①김가, 박다
  2. ②박다, 김가
  3. ③김가, 이나, 박다
  4. ④김가, 박다, 정마
정답과 해설 보기

정답: ① 김가, 박다

학과가 컴공·경영이면서 점수가 75~90(양 끝 포함)인 학생은 김가(85)와 박다(78)이며, 점수 내림차순이므로 김가, 박다 순입니다. 이나(92)는 범위를 벗어나고 정마(70)도 제외됩니다.

출제: 상시 경향 모의고사 3회 43번

데이터베이스 일반상시 경향 모의고사 3회

Q16.<부서> 테이블에 (D1, 영업), (D2, 기획), (D3, 인사) 세 레코드가 있고, <사원> 테이블은 아래와 같다. 다음 SQL문을 실행했을 때 결과 레코드의 개수는?

<사원>

사번이름부서코드
101강D1
102윤D2
103한D1
104오D4
SELECT 부서.부서명, 사원.이름
FROM 부서 LEFT JOIN 사원 ON 부서.부서코드 = 사원.부서코드;
  1. ①3
  2. ②4
  3. ③5
  4. ④12
정답과 해설 보기

정답: ② 4

LEFT JOIN은 왼쪽 <부서>의 모든 레코드를 포함합니다. 영업-강, 영업-한, 기획-윤에 사원이 없는 인사(이름 Null) 1건이 더해져 4개입니다. ①의 3은 INNER JOIN, ④의 12는 조건 없는 교차 조인의 결과입니다.

출제: 상시 경향 모의고사 3회 51번

데이터베이스 일반상시 경향 모의고사 3회

Q17.다음 <주문> 테이블에 아래 SQL문을 실행한 결과로 옳은 것은?

<주문>

고객제품수량
AP13
BP25
AP34
CP12
BP11
CP26
AP22
SELECT 고객, SUM(수량) AS 합계
FROM 주문
WHERE 수량 >= 2
GROUP BY 고객
HAVING COUNT(*) >= 2;
  1. ①A 9, C 8
  2. ②A 9, B 5, C 8
  3. ③A 9, B 6, C 8
  4. ④A 9
정답과 해설 보기

정답: ① A 9, C 8

WHERE로 수량 1인 B의 레코드가 먼저 제외되어 B는 1건만 남으므로 HAVING COUNT(*)>=2를 만족하지 못합니다. A는 3건(3+4+2=9), C는 2건(2+6=8)이 표시됩니다. ③은 WHERE를 무시했을 때의 결과입니다.

출제: 상시 경향 모의고사 3회 59번

데이터베이스 일반상시 경향 모의고사 4회

Q18.[사원] 테이블에 다음 SQL 문을 실행했을 때 결과로 표시되는 레코드의 개수는?

[사원] 테이블

사번이름부서급여
1김민수영업350
2이지은기획420
3김태호영업400
4박소연인사300
5김가람기획280
SELECT 이름 FROM 사원
WHERE 이름 LIKE "김*" AND 급여 BETWEEN 300 AND 400;
  1. ①1개
  2. ②2개
  3. ③3개
  4. ④4개
정답과 해설 보기

정답: ② 2개

'김'으로 시작하는 이름은 김민수(350), 김태호(400), 김가람(280)입니다. BETWEEN은 양 끝 값을 포함하므로 300~400에 해당하는 김민수, 김태호 2개가 표시됩니다.

출제: 상시 경향 모의고사 4회 42번

데이터베이스 일반상시 경향 모의고사 4회

Q19.다음 중 Access의 SELECT 문에 관한 설명으로 옳지 않은 것은?

  1. ①ORDER BY 절에서 ASC나 DESC를 생략하면 오름차순으로 정렬된다.
  2. ②SELECT DISTINCT 부서 FROM 사원;은 부서 값을 중복 없이 한 번씩만 표시한다.
  3. ③WHERE 부서 IN ('영업', '기획')은 WHERE 부서='영업' OR 부서='기획'과 같은 결과를 반환한다.
  4. ④WHERE 이름 LIKE '김?'는 '김'으로 시작하는 이름이면 글자 수와 관계없이 모두 검색한다.
정답과 해설 보기

정답: ④ WHERE 이름 LIKE '김?'는 '김'으로 시작하는 이름이면 글자 수와 관계없이 모두 검색한다.

Access의 와일드카드 ?는 한 글자를 의미하므로 '김?'는 '김'으로 시작하는 두 글자 이름만 검색합니다. 글자 수와 관계없이 검색하려면 '김*'를 사용합니다.

출제: 상시 경향 모의고사 4회 43번

데이터베이스 일반상시 경향 모의고사 4회

Q20.[부서] 테이블에는 (D1, 영업부, 서울), (D2, 기획부, 부산), (D3, 인사부, 서울)의 세 레코드가 (부서코드, 부서명, 위치) 순으로 저장되어 있다. 아래 [사원] 테이블에 다음 SQL 문을 실행했을 때 결과에 포함되지 않는 이름은?

[사원] 테이블

사번이름부서코드
101정우진D1
102한지민D2
103오세훈D3
104윤채원D2
105강민재D1
SELECT 이름 FROM 사원
WHERE 부서코드 IN (SELECT 부서코드 FROM 부서 WHERE 위치 = '서울');
  1. ①정우진
  2. ②한지민
  3. ③오세훈
  4. ④강민재
정답과 해설 보기

정답: ② 한지민

하위 쿼리는 위치가 '서울'인 부서코드 D1, D3을 반환합니다. 따라서 D1·D3에 속한 정우진, 오세훈, 강민재가 표시되고, D2(부산)에 속한 한지민은 제외됩니다.

출제: 상시 경향 모의고사 4회 51번

데이터베이스 일반상시 경향 모의고사 4회

Q21.[사원] 테이블에 다음 SQL 문을 실행한 후 '김태호'의 급여 값은?

[사원] 테이블

사번이름부서급여
1김민수영업350
2이지은기획420
3김태호영업400
4박소연인사300
5김가람기획280
UPDATE 사원 SET 급여 = 급여 * 1.1
WHERE 부서 = '영업' AND 급여 < 400;
  1. ①440
  2. ②400
  3. ③385
  4. ④360
정답과 해설 보기

정답: ② 400

조건은 부서가 '영업'이면서 급여가 400 미만인 레코드입니다. 김태호는 급여가 400이라 '400 < 400'이 거짓이므로 수정되지 않고 400 그대로입니다. 385는 김민수(350)가 수정된 값입니다.

출제: 상시 경향 모의고사 4회 59번

데이터베이스 일반상시 경향 모의고사 5회

Q22.다음 <사원> 테이블에 아래 SQL문을 실행했을 때, 결과의 첫 번째 이름과 전체 레코드 수로 옳은 것은? SELECT 이름 FROM 사원 WHERE 급여 BETWEEN 280 AND 320 AND 부서 IN ('영업', '총무') ORDER BY 급여 DESC;

<사원>

사번이름부서급여
101김하늘영업320
102이바다총무280
103박구름영업250
104최산기획300
105정노을총무350
  1. ①김하늘, 2개
  2. ②이바다, 2개
  3. ③김하늘, 3개
  4. ④최산, 3개
정답과 해설 보기

정답: ① 김하늘, 2개

급여가 280~320(양 끝 포함)이면서 부서가 영업·총무인 사원은 김하늘(320)과 이바다(280)뿐입니다. 급여 내림차순이므로 김하늘이 먼저 표시됩니다. 최산은 급여 조건은 맞지만 기획 부서라 제외됩니다.

출제: 상시 경향 모의고사 5회 42번

데이터베이스 일반상시 경향 모의고사 5회

Q23.Access의 SELECT문에 대한 설명으로 옳지 않은 것은?

  1. ①ORDER BY 절에 정렬 방식을 생략하면 오름차순(ASC)으로 정렬된다.
  2. ②DISTINCT를 사용하면 검색 결과에서 중복된 행은 한 번만 표시된다.
  3. ③WHERE 이름 Like "김?" 은 '김'으로 시작하는 두 글자 이름을 검색한다.
  4. ④WHERE 나이 BETWEEN 20 AND 30 은 20과 30을 제외한 21~29를 검색한다.
정답과 해설 보기

정답: ④ WHERE 나이 BETWEEN 20 AND 30 은 20과 30을 제외한 21~29를 검색한다.

BETWEEN a AND b는 a 이상 b 이하로, 양 끝 값을 포함합니다. Access의 Like에서 ?는 임의의 한 글자를 뜻하므로 "김?"은 김으로 시작하는 두 글자입니다.

출제: 상시 경향 모의고사 5회 43번

데이터베이스 일반상시 경향 모의고사 5회

Q24.<학생> 테이블은 아래와 같고, <수강> 테이블의 (학번, 과목) 레코드는 (1, 'DB'), (3, 'DB'), (3, 'OS'), (4, 'NW')이다. 다음 SQL문의 실행 결과로 옳은 것은?

<학생>

학번이름
1김가
2이나
3박다
4정라
SELECT 이름 FROM 학생
WHERE 학번 NOT IN (SELECT 학번 FROM 수강 WHERE 과목 = 'DB');
  1. ①김가, 박다
  2. ②이나, 정라
  3. ③이나
  4. ④정라, 박다
정답과 해설 보기

정답: ② 이나, 정라

하위 쿼리는 'DB'를 수강한 학번 1, 3을 돌려주고, NOT IN이므로 그 외의 학번 2(이나)와 4(정라)가 검색됩니다. 박다(3)는 OS도 수강했지만 DB를 수강했으므로 제외됩니다.

출제: 상시 경향 모의고사 5회 51번

데이터베이스 일반상시 경향 모의고사 5회

Q25.Access에서 다음 식과 결과의 연결이 옳지 않은 것은?

  1. ①Left("Access2021", 6) → Access
  2. ②InStr("database", "a") → 1
  3. ③Mid("데이터베이스", 3, 2) → 터베
  4. ④Len("컴활 1급") → 5
정답과 해설 보기

정답: ② InStr("database", "a") → 1

InStr은 찾는 문자열이 처음 나타나는 위치를 돌려주므로 "database"에서 a는 2번째에 있어 2입니다. Len은 공백도 한 글자로 세므로 5입니다.

출제: 상시 경향 모의고사 5회 55번

데이터베이스 일반상시 경향 모의고사 5회

Q26.다음 SQL문에 대한 설명으로 옳은 것은?

SELECT 이름, 급여 INTO 고급여사원
FROM 사원
WHERE 급여 >= 400;
  1. ①이미 있는 <고급여사원> 테이블에 조건에 맞는 레코드를 추가한다.
  2. ②<사원> 테이블에서 급여가 400 이상인 레코드로 새 테이블 <고급여사원>을 만든다.
  3. ③<사원> 테이블에서 급여가 400 이상인 레코드를 삭제한다.
  4. ④급여가 400 이상인 레코드를 화면에 표시만 하고 테이블로 저장하지 않는다.
정답과 해설 보기

정답: ② <사원> 테이블에서 급여가 400 이상인 레코드로 새 테이블 <고급여사원>을 만든다.

SELECT ... INTO는 테이블 만들기 쿼리로, 검색 결과를 새 테이블로 저장합니다. 기존 테이블에 추가하는 것은 INSERT INTO ... SELECT(추가 쿼리)이며 원본 <사원> 테이블은 변하지 않습니다.

출제: 상시 경향 모의고사 5회 59번

데이터베이스 일반실전 모의고사 1회

Q27.다음 SQL문에 대한 설명으로 옳은 것은? SELECT 부서, COUNT(*) FROM 사원 WHERE 직급 = "대리" GROUP BY 부서 HAVING COUNT(*) >= 3;

  1. ①대리가 3명 이상인 부서와 그 부서의 대리 수를 표시한다.
  2. ②전체 직원이 3명 이상인 부서의 대리 수를 표시한다.
  3. ③대리를 제외한 직원이 3명 이상인 부서를 표시한다.
  4. ④모든 부서의 대리 수를 표시한다.
정답과 해설 보기

정답: ① 대리가 3명 이상인 부서와 그 부서의 대리 수를 표시한다.

WHERE로 대리만 고른 뒤 부서별로 묶고, HAVING으로 그 인원이 3명 이상인 그룹만 표시합니다.

출제: 실전 모의고사 1회 51번

데이터베이스 일반실전 모의고사 1회

Q28.<회원> 테이블에서 '가입일' 필드의 값이 2026년 1월 1일부터 2026년 6월 30일 사이인 레코드를 검색하는 SQL의 WHERE 절로 옳은 것은?

  1. ①WHERE 가입일 BETWEEN #2026-01-01# AND #2026-06-30#
  2. ②WHERE 가입일 IN (#2026-01-01#, #2026-06-30#)
  3. ③WHERE 가입일 LIKE "2026-0?"
  4. ④WHERE 가입일 >= "2026-01-01" OR 가입일 <= "2026-06-30"
정답과 해설 보기

정답: ① WHERE 가입일 BETWEEN #2026-01-01# AND #2026-06-30#

범위는 BETWEEN으로 지정하며 날짜는 #으로 묶습니다. IN은 두 날짜만, ④는 OR이라 모든 레코드가 검색됩니다.

출제: 실전 모의고사 1회 52번

데이터베이스 일반실전 모의고사 1회

Q29.다음 중 <상품> 테이블의 '단가'를 모두 10% 인상하는 SQL문으로 옳은 것은?

  1. ①UPDATE 상품 SET 단가 = 단가 * 1.1;
  2. ②UPDATE 상품 단가 = 단가 * 1.1;
  3. ③ALTER 상품 SET 단가 = 단가 * 1.1;
  4. ④INSERT INTO 상품 SET 단가 = 단가 * 1.1;
정답과 해설 보기

정답: ① UPDATE 상품 SET 단가 = 단가 * 1.1;

UPDATE 테이블 SET 필드=값 [WHERE 조건]; 형식이며 WHERE가 없으면 모든 레코드가 수정됩니다.

출제: 실전 모의고사 1회 53번

데이터베이스 일반실전 모의고사 1회

Q30.쿼리를 실행할 때 사용자에게 값을 입력받는 대화상자가 나타나도록 하려면 조건 행에 어떻게 입력해야 하는가?

  1. ①[조회할 학과를 입력]
  2. ②{조회할 학과를 입력}
  3. ③(조회할 학과를 입력)
  4. ④"조회할 학과를 입력"
정답과 해설 보기

정답: ① [조회할 학과를 입력]

매개 변수 쿼리는 조건 행에 대괄호([ ])로 묶은 안내문을 입력합니다.

출제: 실전 모의고사 1회 54번

데이터베이스 일반실전 모의고사 2회

Q31.<제품> 테이블에서 '제품명'이 '노트'로 끝나는 레코드를 검색하는 조건으로 옳은 것은?

  1. ①WHERE 제품명 LIKE "노트*"
  2. ②WHERE 제품명 LIKE "*노트"
  3. ③WHERE 제품명 = "*노트"
  4. ④WHERE 제품명 IN ("*노트")
정답과 해설 보기

정답: ② WHERE 제품명 LIKE "*노트"

'노트'로 끝나려면 앞에 *를 붙여 LIKE "*노트"로 지정합니다. LIKE를 써야 대표 문자가 동작합니다.

출제: 실전 모의고사 2회 50번

데이터베이스 일반실전 모의고사 2회

Q32.다음 SQL문의 실행 결과에 대한 설명으로 옳은 것은? SELECT DISTINCT 학과 FROM 학생 ORDER BY 학과 DESC;

  1. ①모든 학생의 학과를 중복 포함하여 오름차순으로 표시한다.
  2. ②학과를 중복 없이 한 번씩 내림차순으로 표시한다.
  3. ③학과별 학생 수를 내림차순으로 표시한다.
  4. ④학과가 중복된 학생만 표시한다.
정답과 해설 보기

정답: ② 학과를 중복 없이 한 번씩 내림차순으로 표시한다.

DISTINCT는 중복을 한 번만 표시하고 DESC는 내림차순 정렬입니다.

출제: 실전 모의고사 2회 51번

데이터베이스 일반실전 모의고사 2회

Q33.다음 중 하위 질의를 사용하여 '평균 급여보다 많이 받는 사원'의 이름을 검색하는 SQL문으로 옳은 것은?

  1. ①SELECT 이름 FROM 사원 WHERE 급여 > AVG(급여);
  2. ②SELECT 이름 FROM 사원 WHERE 급여 > (SELECT AVG(급여) FROM 사원);
  3. ③SELECT 이름 FROM 사원 HAVING 급여 > AVG(급여);
  4. ④SELECT 이름, AVG(급여) FROM 사원 WHERE 급여 > 평균;
정답과 해설 보기

정답: ② SELECT 이름 FROM 사원 WHERE 급여 > (SELECT AVG(급여) FROM 사원);

WHERE 절에는 집계 함수를 직접 쓸 수 없으므로 하위 질의로 평균을 구해 비교합니다.

출제: 실전 모의고사 2회 52번

데이터베이스 일반실전 모의고사 2회

Q34.<주문> 테이블과 <고객> 테이블을 조인할 때, 주문이 없는 고객까지 포함하여 모든 고객을 표시하려고 한다. 빈칸에 알맞은 것은? SELECT 고객.고객명, 주문.주문번호 FROM 고객 ( ㉠ ) 주문 ON 고객.고객ID = 주문.고객ID;

  1. ①INNER JOIN
  2. ②LEFT JOIN
  3. ③RIGHT JOIN
  4. ④UNION
정답과 해설 보기

정답: ② LEFT JOIN

왼쪽 테이블(고객)의 모든 레코드를 포함하려면 LEFT JOIN을 사용합니다.

출제: 실전 모의고사 2회 53번

데이터베이스 일반실전 모의고사 2회

Q35.다음 중 실행 쿼리에 해당하지 않는 것은?

  1. ①테이블 만들기 쿼리
  2. ②추가 쿼리
  3. ③크로스탭 쿼리
  4. ④삭제 쿼리
정답과 해설 보기

정답: ③ 크로스탭 쿼리

실행 쿼리는 테이블 만들기, 추가, 업데이트, 삭제 쿼리입니다. 크로스탭은 집계 결과를 보여 주는 선택 계열 쿼리입니다.

출제: 실전 모의고사 2회 54번

데이터베이스 일반실전 모의고사 3회

Q36.다음 SQL문에 대한 설명으로 옳지 않은 것은? SELECT 학과, AVG(점수) AS 평균 FROM 성적 GROUP BY 학과 ORDER BY 평균 DESC;

  1. ①학과별로 그룹을 묶는다.
  2. ②각 학과의 점수 평균을 '평균'이라는 이름으로 표시한다.
  3. ③평균이 높은 학과부터 표시한다.
  4. ④점수가 Null인 레코드도 0으로 계산하여 평균에 포함한다.
정답과 해설 보기

정답: ④ 점수가 Null인 레코드도 0으로 계산하여 평균에 포함한다.

AVG 함수는 Null이 아닌 값만 대상으로 평균을 구합니다.

출제: 실전 모의고사 3회 49번

데이터베이스 일반실전 모의고사 3회

Q37.다음 SQL문의 실행 결과로 <회원> 테이블에 일어나는 일은? DELETE FROM 회원;

  1. ①회원 테이블 자체가 삭제된다.
  2. ②회원 테이블의 모든 레코드가 삭제되고 테이블 구조는 남는다.
  3. ③첫 번째 레코드만 삭제된다.
  4. ④오류가 발생하여 아무것도 삭제되지 않는다.
정답과 해설 보기

정답: ② 회원 테이블의 모든 레코드가 삭제되고 테이블 구조는 남는다.

WHERE 절이 없는 DELETE는 모든 레코드를 삭제하지만 테이블 구조는 남습니다. 테이블 자체를 지우는 것은 DROP TABLE입니다.

출제: 실전 모의고사 3회 50번

데이터베이스 일반실전 모의고사 3회

Q38.<학생> 테이블에서 학과가 '경영' 또는 '회계'인 학생을 검색하는 조건으로 옳지 않은 것은?

  1. ①WHERE 학과 IN ("경영", "회계")
  2. ②WHERE 학과 = "경영" OR 학과 = "회계"
  3. ③WHERE 학과 = "경영" AND 학과 = "회계"
  4. ④WHERE 학과 LIKE "경영" OR 학과 LIKE "회계"
정답과 해설 보기

정답: ③ WHERE 학과 = "경영" AND 학과 = "회계"

한 레코드의 학과가 동시에 두 값일 수 없으므로 AND 조건은 결과가 없습니다.

출제: 실전 모의고사 3회 51번

데이터베이스 일반실전 모의고사 3회

Q39.<수강> 테이블에 레코드를 추가하는 SQL문으로 옳은 것은?

  1. ①INSERT INTO 수강 (학번, 과목) VALUES ("26001", "DB");
  2. ②INSERT 수강 SET 학번="26001", 과목="DB";
  3. ③UPDATE INTO 수강 VALUES ("26001", "DB");
  4. ④ADD INTO 수강 (학번, 과목) VALUES ("26001", "DB");
정답과 해설 보기

정답: ① INSERT INTO 수강 (학번, 과목) VALUES ("26001", "DB");

레코드 추가는 INSERT INTO 테이블(필드) VALUES(값); 형식입니다.

출제: 실전 모의고사 3회 52번

데이터베이스 일반실전 모의고사 3회

Q40.두 테이블의 레코드를 비교하여 한쪽 테이블에만 있는 레코드(예: 주문이 한 번도 없는 고객)를 찾는 쿼리 마법사는?

  1. ①중복 데이터 검색 쿼리 마법사
  2. ②불일치 검색 쿼리 마법사
  3. ③크로스탭 쿼리 마법사
  4. ④단순 쿼리 마법사
정답과 해설 보기

정답: ② 불일치 검색 쿼리 마법사

불일치 검색 쿼리는 다른 테이블에 관련 레코드가 없는 레코드를 찾습니다.

출제: 실전 모의고사 3회 53번

데이터베이스 일반차시 확인문제

Q41.<성적> 테이블에서 학과별 평균 점수가 80점 이상인 학과만 조회하려 할 때 빈칸에 들어갈 내용으로 옳은 것은?
SELECT 학과, AVG(점수) FROM 성적
GROUP BY 학과 ( ㉠ );

  1. ①WHERE AVG(점수) >= 80
  2. ②HAVING AVG(점수) >= 80
  3. ③ORDER BY AVG(점수) >= 80
  4. ④WHERE 점수 >= 80
정답과 해설 보기

정답: ② HAVING AVG(점수) >= 80

그룹에 대한 조건은 GROUP BY 뒤의 HAVING 절에 씁니다. WHERE 절에는 집계 함수를 쓸 수 없고, ④는 개별 점수 조건이라 의미가 다릅니다.

출처: 17차시 확인문제 1번

데이터베이스 일반차시 확인문제

Q42.다음 SQL문의 결과에 대한 설명으로 옳은 것은?
SELECT 학생.이름, 학과.학과명
FROM 학생 LEFT JOIN 학과
ON 학생.학과코드 = 학과.학과코드;

  1. ①학과코드가 일치하는 학생만 표시된다.
  2. ②모든 학과가 표시되고 학생이 없는 학과는 이름이 비어 있다.
  3. ③모든 학생이 표시되고 학과가 일치하지 않는 학생은 학과명이 비어 있다.
  4. ④두 테이블의 모든 레코드 조합이 표시된다.
정답과 해설 보기

정답: ③ 모든 학생이 표시되고 학과가 일치하지 않는 학생은 학과명이 비어 있다.

LEFT JOIN은 왼쪽 테이블(학생)의 레코드를 모두 표시하고, 오른쪽(학과)은 일치하는 것만 가져오므로 일치하지 않으면 학과명이 Null로 표시됩니다.

출처: 17차시 확인문제 2번

데이터베이스 일반차시 확인문제

Q43.WHERE 이름 LIKE "김??" 조건으로 검색되는 이름은?

  1. ①김하늘별
  2. ②김하늘
  3. ③김
  4. ④이김수
정답과 해설 보기

정답: ② 김하늘

?는 한 글자를 대신하므로 '김'으로 시작하는 정확히 세 글자 이름이 검색됩니다.

출처: 17차시 확인문제 3번

데이터베이스 일반차시 확인문제

Q44.크로스탭 쿼리에 대한 설명으로 옳지 않은 것은?

  1. ①필드의 합계, 개수, 평균 등을 행과 열 형태로 요약한다.
  2. ②엑셀의 피벗 테이블과 비슷한 형태이다.
  3. ③행 머리글로 사용할 필드는 여러 개 지정할 수 있다.
  4. ④열 머리글로 사용할 필드도 여러 개 지정할 수 있다.
정답과 해설 보기

정답: ④ 열 머리글로 사용할 필드도 여러 개 지정할 수 있다.

크로스탭 쿼리에서 열 머리글로 사용할 필드는 하나만 지정할 수 있습니다.

출처: 17차시 확인문제 4번

데이터베이스 일반차시 확인문제

Q45.<학생> 테이블에서 학년이 4인 학생을 모두 삭제하는 SQL문으로 옳은 것은?

  1. ①DROP FROM 학생 WHERE 학년 = 4;
  2. ②DELETE FROM 학생 WHERE 학년 = 4;
  3. ③DELETE 학생 SET 학년 = 4;
  4. ④UPDATE 학생 DELETE 학년 = 4;
정답과 해설 보기

정답: ② DELETE FROM 학생 WHERE 학년 = 4;

레코드 삭제는 DELETE FROM 테이블 WHERE 조건; 형식입니다. DROP은 테이블 구조 자체를 삭제하는 DDL입니다.

출처: 17차시 확인문제 5번