* 위 게시글을 바탕으로 코드 정리를 하였습니다.
SQL문
1. 데이터베이스와 관련된 다음 <처리 조건>에 부합하는 SQL문을 작성하시오. (2017년 1회)
<처리 조건>
1. 테이블명은 학생으로 정의한다.
2. 학생 테이블의 구조는 다음과 같다.
속성명 | 데이터타입 | 비고 |
학번 | INT | PRIMART KEY |
성명 | VARCHAR(20) | |
학년 | INT | |
과목 | VARCHAR(20) | |
연락처 | VARCHAR(20) |
3. 학생 테이블에 학번이 98170823, 성명이 '한국산', 학년이 3, 과목이 '경영학개론, 연락처가 '?-1234-1234'인 학생의 정보를 입력하시오.
4. 문자형은 싱글(작은)따옴표로 입력하고 문장의 끝에는 세미클론(;)를 반드시 표기하시오.
답안
INSERT INTO 학생 VALUES (98170823, '한국산', 3, '경영학개론', '?-1234-1234');
2. 데이터베이스와 관련한 다음 <처리 조건>에 부합하는 SQL문을 작성하시오. (2017년 2회)
<처리조건>
1. 학생 테이블에서 이름이 Scott인 튜블을 삭제하시오.
2. 문자형은 싱글(작은)따옴표로 입력하고 문장의 끝에는 세미콜론(;)을 받드시 표기하시오.
답안
DELETE FROM 학생 WHERE 이름 ='Scott';
3. 데이터베이스와 관련한 다음 <처리조건>에 부합하도록 괄호 (①)~(④)를 채워 SQL문을 완성하시오. (2017년 3회)
<처리 조건>
1. 이름, 학번, 전공, 성별, 생년월일로 구성된 <학생> 테이블을 정의하는 SQL 문을 작성하시오. 단, 제약 조건은 다음과 같다.
- 이름은 NULL이 올 수 없고, 학번은 기본키다.
- 전공은 <학과> 테이블의 학과코드를 참조하는 외래키로 사용된다.
- <학과> 테이블에서 삭제가 일어나면 관련된 튜플들의 전공 값을 NULL로 만든다.
- <학과> 테이블에서 학과코드가 변경되면 전공 값도 같은 값으로 변경한다.
- 생년월일은 1980-01-01 이후의 데이터만 저장할 수 있다.
- 제약 조건의 이름은 '생년월일제약'으로 한다.
- 각 속성의 데이터형은 적당하게 지정한다. 단 성별은 도메인 'SEX'를 사용한다.
2. SQL문의 문법은 ISO/IEC 9075 표준을 따른다.
CREATE TABLE 학생
이름 VARCHAR(15) ( ① ),
학번 CHAR(8),
전공 CHAR(5),
성별 SEX,
생년월일 DATE,
( ② ) KEY(학번),
( ③ ) KEY(전공) ( ④ ) 학과(학과코드)
ON DELETE SET NULL
ON UPDATE CASCADE,
CONSTRAINT 생년월일제약
CHECK(생년월일 >= '1980-01-01'));
답안
① NOT NULL ② PRIMARY ③ FOREIGN ④ REFERENCES
해설
- 테이블 정의 및 속성
- 이름 VARCHAR(15) NOT NULL: 이름은 NULL을 허용하지 않는다.
- 학번 CHAR(8): 학번은 길이가 8인 문자형이다.
- 전공 CHAR(5): 전공은 길이가 5인 문자형이다.
- 성별 SEX: 성별은 도메인 'SEX'를 사용한다. 'M' (남성) 또는 'F' (여성)만 허용한다.
- 생년월일 DATE: 생년월일은 날짜형이다.
- 기본 키
- PRIMARY KEY (학번): 학번을 기본키로 설정한다.
- 외래 키
- FOREIGN KEY (전공) REFERENCES 학과(학과코드): 전공은 학과 테이블의 학과코드를 참조한다.
- ON DELETE SET NULL: 학과 테이블에서 삭제가 발생하면 전공 값을 NULL로 설정한다.
- ON UPDATE CASCADE: 학과 테이블의 학과코드가 변경되면 전공 값도 같은 값으로 변경한다.
- 제약 조건
- CONSTRAINT 생년월일제약 CHECK (생년월일 >= '1980-01-01'): 생년월일은 1980-01-01 이후의 데이터만 저장한다.
4. 다음 <처리 조건>에 유의하여 <학생> 테이블에 대한 알맞은 SQL문을 작성하시오. (2018년 1회)
<학생>
학생 | 이름 | 학년 | 수강과목 | 점수 | 연락처 |
180101 | 김기사 | 1 | 데이터베이스 | 90 | 123-4567 |
180102 | 박산업 | 2 | 전자계산기 | 80 | 234-5678 |
180103 | 최사무 | 3 | 정보통신 | 98 | 345-6789 |
180104 | 조합격 | 4 | 시스템분석 | 85 | 456-7890 |
<처리 조건>
1. 학생 테이블에서 3학년과 4학년 학생의 학번과 이름을 검색하는 SQL문을 작성하시오.
2. 원소 함수 IN 을 사용하시오. (원소 함수 IN(value1, value2, ...)
3. SQL문의 끝에는 세미콜론(;)으로 표시하시오.
답안
SELECT 학번, 이름 FROM 학생 WHERE 학년 IN (3, 4);
5. <학생> 테이블에 최대 3문자로 구성되는 학년 속성을 추가하는 SQL문의 괄호 (①), (②)를 채워 SQL문을 완성하시오. (2018년 2회)
<SQL문>
( ① ) TABLE 학생 ( ② ) 학생 VARCHAR(3); |
답안
① ALTER ② ADD
6. <학생> 테이블을 참고하여 다음의 각 질문에서 요구하는 답을 쓰시오. (2018년 3회)
<학생>
학번 | 이름 | 학년 |
16212060 | 이해준 | 1 |
15212066 | 조은별 | 3 |
15212022 | 박지영 | 2 |
13212031 | 양세옥 | 4 |
14212054 | 이범용 | 2 |
12212001 | 곽광진 | 1 |
13212052 | 김태균 | 3 |
(1) 다음 SQL문의 실행 결과로 표시되는 레코드의 개수를 쓰시오.
SELECT COUNT(*) FROM 학생 WHERE 학년 = 4;
(2) <학생> 테이블에서 이름이 '이'로 시작하는 학생들의 학번을 검색하되, 학년을 기준으로 내림차순으로 출력하는 SQL문을 쓰시오.
답안
(1) 1 (2) SELECT 학번 FROM 학생 WHERE 이름 LIKE '이%' ORDER BY 학년 DESC;
7. 다음 <SCORE> 테이블에 대해 <SQL>을 수행한 결과를 적으시오. (2019년 2회)
<SCORE>
DEPT | DB | TERM | ALGO |
001 | 100 | NULL | 100 |
002 | NULL | NULL | 0 |
003 | 100 | 100 | 200 |
SELECT SUM(DB) FROM SCORE;
SELECT SUM(TERM) FROM SCORE;
SELECT SUM(ALGO) FROM SCORE;
답안
200, 100, 300
*SQL문은 3개인데, 답란은 1개이다. 답안 작성에 대한 별도의 조건이 제시되지 않았으므로 각 SQL문의 결과를 구분할 수 있도록 작성하면 된다.
8. 데이터베이스와 관련한 다음 <처리 조건>에 부합하는 SQL문을 작성하시오. (2019년 2회)
*1번 문제와 유사한 문제 (2017년 1회)
<처리조건>
1. 테이블명은 학생으로 정의한다.
2. 학생 테이블의 구조는 다음과 같다.
속성명 | 데이터타입 | 비고 |
학번 | INT | PRIMARY KEY |
성명 | VARCHAR(20) | |
학년 | INT | |
과목 | VARCHAR(20) | |
연락처 | VARCHAR(20) |
3. 학생 테이블에 학번이 193739, 성명이 '홍길동', 학년이 3, 과목이 '경영학개론', 연락처가 '010-1234-5678'인 학생의 정보를 입력하시오.
4. 문자형은 싱글따옴표를 입력하고 문장의 끝에는 세미콜론(;)을 반드시 표기하시오.
답안
INSERT INTO 학생 VALUES(193739, '홍길동', 3, '경영학개론', '010-1234-5678');
'[실기] 정보처리기사 > 프로그래밍 언어 활용' 카테고리의 다른 글
2020-2021 프로그래밍 문제 모음 (1) | 2024.07.17 |
---|---|
[C] 2017-2019 프로그래밍 문제 모음 (0) | 2024.07.14 |
[JAVA] 2017-2019 프로그래밍 문제 모음 (0) | 2024.07.13 |