반응형

알고리즘과 DB 일부 문제만 정리하였습니다.

 

최근 기출문제(2019년부터)는 하단 링크를 참고해 주세요.

 

정보처리산업기사 실기 출제 유형 및 최근 기출 문제 정리(19년 1회부터 21년 1회)

정보처리 산업기사 실기 시험은 2017년 한 번 개정되고 내년에 NCS로 다시 개정을 앞두고 있습니다. 이 글에서는 2019년 1회부터 가장 최근에 있었던 2021년 1회까지 어떤 문제가 출제되었는지 정리

developer-rooney.tistory.com

 

알고리즘 - Java

 

다음 Java 프로그램을 실행했을 때 나오는 출력을 쓰시오.(5점)

 

public class Exam {

    static void initFunc(int[][] a) {
        for(int i = 0; i < a.length; i++) {
            for(int j = 0; j < a[i].length; j++) {
                a[i][j] = 0;
            }
        }
    }

    static void fillFunc(int[][] a) {
        int n = 1;
        for(int i = 0; a.length; i++) {
            for(int j = i; j < a[i].length; j++) {
                a[i][j] = n;
                n = n + 1;
            }
        }
    }
    
    static void printFunc(int[][] a) {
        for(int i = 0; i < a.length; i++) {
            for(int j = 0; j < a[i].length; j++) {
                if(a[i][j] != 0) {
                    System.out.printf("%3d", a[i][j]);
                }else {
                    System.out.print("   ");
                }
            }
            System.out.println();
        }
    }
    
    public static void main(String[] args) {
        int[][] M = new int[5][5];
        
        initFunc(M);
        fillFunc(M);
        printFunc(M);
    }
}

 

정답 

 

1  2  3  4  5

   6  7  8  9

      10 11 12

          13 14

              15

 

해설

 

계단을 출력하는 문제입니다. main 메소드에서 실행된 메소드들을 먼저 살펴보고 위에서 어떻게 정의되었는지 살펴봅니다. 모든 메소드에는 매개변수로 2차원 배열을 받고 있고, 반환 값은 없으니 실행만 하면 됩니다.

 

initFunc는 2차원 배열 값을 모두 0으로 초기화합니다.

 

fillFunc는 2중 for문을 사용하여 정수 n을 1씩 증가시키며 넣어주는데 바깥 for문에서는 정수 i는 0부터 a.length 전까지, 즉 4까지 반복되고, 안쪽 for문에서는 정수 j가 i의 값부터 a[i].length까지 반복하기 때문에 i가 0일 때는 0부터, 1일 때는 1부터 .. 4까지 반복되며 1씩 증가하는 n값을 넣어줍니다.

 

마지막 메소드 printFunc는 매개변수로 들어온 2차원 배열을 출력해주는 역할을 하니 위의 정답처럼 적으시면 됩니다.

* 문제에서 "%3d"가 있는데 시험에서는 띄어쓰기를 확인 안 하기 때문에 굳이 세 칸을 정확하게 확보할 필요가 없습니다.

 

 

알고리즘 - C언어

 

다음 C언어 프로그램을 실행할 경우, 아래와 같이 출력된다. C언어 프로그램상의 빈 줄에 들어갈 적절한 코드를 입력하시오.

 

<출력결과>

 

5

11

23

47

95

 

<코드>

#include <stdio.h>

void main() {
    recursive(5);
}

int recursive(int n) {

    int i;
    if (n < 1) {
        return 2;
    }else {
        i = ( 2 * ________ ) + 1;
        printf("%d\n", i);
        return i;
    }

}

정답

 

recursive(n-1)

 

해설

 

재귀함수에 관한 문제입니다. 재귀함수 관련 풀이는 하단 링크의 2017년도 문제를 참고해 주세요.

 

정보처리산업기사 실기 2017년 제1회 기출문제 정리

알고리즘과 DB 일부 문제만 정리하였습니다. 최근 기출 문제(2019년부터)는 하단 링크를 참고해 주세요. 정보처리산업기사 실기 출제 유형 및 최근 기출 문제 정리(19년 1회부터 21년 1회) 정보처리

developer-rooney.tistory.com

 

 

데이터베이스

 

1. SQL은 관계 데이터베이스에서 사용되는 대표적인 언어로 SQL에는 크게 DDL, DML, DCL로 나누어진다. 아래 보기에 나열되어 있는 명령어 중 DML과 DDL에 해당하는 명령어를 선택하시오.

 

<보기>

CREATE, SELECT, ALTER, INSERT, COMMIT, DELETE, GRANT, ROLLBACK, UPDATE, REVOKE, DROP

 

1) DML :

2) DDL :

 

정답

 

1) DML : SELECT, INSERT, DELETE, UPDATE 

2) DDL : CREATE, ALTER, DROP

 

해설

 

정의, 조작, 제어어를 구분하는 문제입니다.

 

 

2. 다음 데이터베이스와 관련된 설명과 부합하는 빈 칸 (1) ~ (5)에 알맞은 용어를 적으시오.(15점)

 

관계 데이터 모델은 자료의 저장 형태를 2차원 구조의 표(테이블)로 표현하는 방법을 말한다. 관계 데이터 모델에서 (1)(은)는 속성들로 구성된 표 구조로 표현된다. (1)(을)를 구성하는 각 열을 속성이라고 하고 (1)의 한 행을 구성하는 속성들의 집합을 튜플이라고 한다. 하나의 속성이 가질 수 있는 값의 범위를 (2)(이)라 하며, (2)(은)(는) (1)(을)를 만들 때 속성의 값으로 올 수 있는 범위를 제한함으로써 범위 외의 값은 올 수 없도록 해야 한다. 예를 들어, '학년' 속성의 경우 속성값의 범위를 1, 2, 3, 4로 제한하며, '학년' 속성에는 그 외의 값은 입력될 수 없다.

 

다음은 '학번', '이름', '학년', '수강과목', '점수' 속성으로 구성된 (1)(을)를 SQL문을 통해 <성적>테이블로 구현한 것이다.

 

<성적>

* 속성만으로 풀 수 있어 테이블은 생략하겠습니다.

 

위와 같이 생성된 <성적>테이블을 대상으로 <지시사항>을 실행하는 SQL문은 다음과 같다.

 

<지시사항 및 SQL문>

* <성적>테이블에서 '데이터베이스' 과목을 수강하는 학생 중 점수가 80점 이상인 학생의 이름을 출력하시오.

→ SELECT 이름 FROM 성적 WHERE 수강과목 = '데이터베이스' (3) 점수 >= 80;

 

* <성적>테이블에서 수강과목별 점수의 평균이 85점 이상인 수강과목을 출력하시오.

→ SELECT 이름 FROM 성적 GROUP BY 수강과목 = (4) AVG(점수) >= 85;

 

* <성적>테이블에서 '빅데이터개론'을 수강한 학생의 점수를 모두 0으로 바꾸시오.

→ UPDATE 성적 (5) 점수 = 0 WHERE 수강과목 = '빅데이터개론';

 

정답

 

(1) 릴레이션

(2) 도메인

(3) AND

(4) HAVING

(5) SET

 

해설

 

데이터베이스의 개념과 SQL문에 관한 문제입니다. (3)은 WHERE절의 조건을 여러 개 입력할 때 연결을 위한 AND가 들어가게 되고 (4)는 GROUP BY절에서 조건을 넣는 HAVING 키워드가 들어갑니다. (5)는 UPDATE문의 문법에 맞게 SET이 입력되어야 합니다.

반응형
반응형

알고리즘과 DB 일부 문제만 정리하였습니다.

 

최근 기출문제(2019년부터)는 하단 링크를 참고해 주세요.

 

정보처리산업기사 실기 출제 유형 및 최근 기출 문제 정리(19년 1회부터 21년 1회)

정보처리 산업기사 실기 시험은 2017년 한 번 개정되고 내년에 NCS로 다시 개정을 앞두고 있습니다. 이 글에서는 2019년 1회부터 가장 최근에 있었던 2021년 1회까지 어떤 문제가 출제되었는지 정리

developer-rooney.tistory.com

 

알고리즘 - 자바

 

다음 Java 언어로 구현한 프로그램을 분석하여 그 실행 결과를 적으시오. (6점)

 

<코드>

public class Test {
    public static void main(String[] args) {
        int a[] = new int[8];
        int d = 11, n = 0;
        
        do {
            a[n++] = d % 2;
            d /= 2;
        } while ( d > 0 );
        
        for (n = 7; n >=0; n--) {
            System.out.printf("%d", a[n]);
        }
    }
}

 

정답

 

0 0 0 0 1 0 1 1

 

해설

 

이 문제는 8개의 값이 들어갈 수 있는 정수 배열 a에 do ~ while문을 통해 값을 넣어주고 for문으로 입력된 값을 역순으로 출력하는 문제입니다.

 

정수 d = 11, n = 0 으로 초기화되어 있는데 do ~ while문에서 a[n++]에 d를 2로 남았을 때 나머지 값을 입력해 주고, d가 0보다 클 때까지만 2씩 나누며 반복합니다.

 

우선, 몇 번 반복되는지 알기 위해 조건 d> 0 에 해당되는 조건을 확인합니다. d는 정수로 선언되어 있으므로 나눴을 때 소수점 뒷자리는 버리고 정수 부분만 저장하면 되는데 d의 첫 값 11과, 11을 2로 나눴을 때 나오는 값을 순차적으로 보면 11, 5, 2, 1이 나옵니다.

 

즉, 4번 반복이 이뤄지고 정수 배열 a의 a[0], a[1], a[2], a[3]에만 값이 들어갑니다.

 

이제 배열 a의 세 번째 인덱스까지 들어갈 값을 살펴봅시다.

 

a[n++]는, n의 초기값이 0이므로 첫 회전 시 a[0]이 되고 1씩 증가하며 반복합니다. 이 순서대로 a[3]까지 d % 2 값을 넣으면

 

a[0] = 11 % 2 → 1 저장;

 

a[1] = 5 % 2 → 1 저장;

 

a[2] = 2 % 2 → 0 저장;

 

a[3] = 1 %2 → 1 저장;

 

위처럼 저장됩니다.

 

배열은 총 8칸이므로 a[3] 이후의 나머지 인덱스에는 자바의 정수 배열 특성상 0이 이미 저장되어 있어 아래와 같습니다. 

 

a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7]
1 1 0 1 0 0 0 0

 

출력 부분에서는 n이 7에서 시작하여 0과 같거나 클 때까지 1씩 감소하며 반복하므로 a배열의 값을 역순으로 출력하면 됩니다.

 

알고리즘 - C언어

 

다음 C언어의 <코드>와 <출력>을 보고 프로그램을 분석하여 괄호 (1) ~ (3)에 가장 적절한 답을 적으시오. (9점)

 

<코드>

#include <stdio.h>
#define s 6

void bubble_sort(int list[]) {

    int j, k, p, tmp;
    
    for (j = 1; j < s; j++) {
        for (k = 0; k < s - j; k++) {
            if ( (  1  ) > list[k + 1]) {
                tmp = list[k];
                list[k] = list[k + 1];
                list[k + 1] = tmp;
            }
            for (p = 0; p < s; p++) {
                printf("%d", list[p]);
            }
            printf("\n");
        }
    
    }

}

main() {

    int list[s] = { 9, 4, 3, 6, 8, 1 };
    int i;
    
    for (i = 0; i < s; i++)
        printf("%d", (  2  ) );
    printf("\n");
    
    (  3  )(list);
}

<출력>

* 버블 정렬 과정에 대한 출력이므로 일부 생략하였습니다.

 

943681

493681

439681

436981

436891

 

 (생략)

 

134689

 

정답

 

(1) list[k]

(2) list[i]

(3) bubble_sort

 

해설

 

함수 이름이 bubble_sort이고 출력 부분에서 오름차순 정렬되어 가는 과정을 보면 버블 정렬인 것을 알 수 있습니다. 버블 정렬은 오름차순일 때, 첫 번째 인덱스를 첫 기준으로 삼아 기준이 되는 수와 바로 뒤에 있는 수를 비교하여 기준이 되는 수가 뒤에 있는 수보다 작을 경우 교환을 하며 마지막 인덱스까지 정렬을 진행합니다.

 

이는 bubble_sort 함수의 이중 for문 속 if문을 통해 알 수 있는데 변수 tmp를 통해 list[k]와 list[k + 1] 간의 교환이 이뤄지므로 (1)에 들어갈 답은 list[k]입니다.

 

(2)번 답은 제일 처음 실행되는 기존 배열에 들어간 값을 순서대로 출력하는 부분이므로 list[i]가 들어가야 되고, (3)에는 위에서 정의한 함수 bubble_sort를 이용한 정렬이 필요한 부분입니다.

 

 

데이터베이스

 

다음 <학생> 테이블과 <성적> 테이블을 참고하여 각 질문에 대한 SQL문을 완성하시오. (10점)

 

<학생>

학번 이름 나이
1655000 김민서 25
1855011 박종현 23
1900021 이진성 22

<성적>

학번 공통 교양 평균
1655000 94 90 92
1855011 88 95 91
1900021 65 80 77

 

(1) <학생> 테이블에서 학번이 "19"로 시작하고 나이가 22인 튜플을 검색하는 SQL을 작성하시오.

 

(2) <성적> 테이블에서 학번과 평균을 검색하되, 평균을 기준으로 오름차순 정렬하는 SQL문을 작성하시오.

 

(3) <학생> 테이블의 학생 중에서 성적 자료가 없는 튜플을 검색하는 SQL문을 작성하시오.

 

 

정답

 

(1) SELECT * FROM 학생 WHERE 학번 LIKE '19%' AND 나이 = 22;

 

(2) SELECT 학번, 평균 FROM 성적 ORDER BY 평균 ASC;

 

(3) SELECT * FROM 학생 WHERE 학번 NOT IN(SELECT 학번 FROM 성적);

반응형
반응형

알고리즘과 DB 일부 문제만 정리하였습니다.

 

최근 기출문제(2019년부터)는 하단 링크를 참고해 주세요.

 

정보처리산업기사 실기 출제 유형 및 최근 기출 문제 정리(19년 1회부터 21년 1회)

정보처리 산업기사 실기 시험은 2017년 한 번 개정되고 내년에 NCS로 다시 개정을 앞두고 있습니다. 해당 글은 2017년 개정된 이후 기출 문제 중에서 2019년 1회부터 가장 최근에 있었던 2021년 1회까

developer-rooney.tistory.com

 

알고리즘 - 자바

 

다음 Java 언어의 <코드>와 <입력>을 보고 프로그램을 분석하여 그 실행 결과를 적으시오.

 

<코드>

import java.util.Scanner;

public class Test {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n, i, sum = 0;
        n = scan.nextInt();
        
        for (i = 1; i <= n; i++) {
            sum += i;
        }
        
        System.out.printf("%d", sum);
        scan.close();
    }
    
}

 

<입력>

 

5

 

정답

 

15

 

해설

 

1에서 5까지의 합을 구하는 문제입니다. Scanner를 통해 정수 n을 입력받고, for문을 통해 i를 0에서 입력받은 n까지 반복시켜 1씩 증가하는 i의 값을 sum에 순서대로 더한 뒤 마지막에 sum을 출력합니다.

 

for문에서 i는 1, 2, 3, 4, 5 순으로 값을 가지고 sum에는 1, 3, 6, 10, 15가 순서대로 저장되어 최종 값은 15가 됩니다.

 

 

알고리즘 - C언어

 

다음 C 언어의 <코드>를 실행했을 때 6을 입력한 결과 <출력>으로 나타낸 것이다. 프로그램을 분석하여 괄호 (      )에 가장 적합한 코드를 적으시오.

 

<코드>

#include <stdio.h>

main() {
    
    int n, i = 1;
    scanf("%d", &n);
    while(i < 10) {
        printf("%d X %d = %d\n", n, i (      ));
        i++
    }

}

 

<출력>

 

6 X 1 = 6

6 X 2 = 12

6 X 3 = 18

6 X 4 = 24

6 X 5 = 30

6 X 6 = 36

6 X 7 = 42

6 X 8 = 48

6 X 9 = 54

 

정답

 

n * i

 

해설

 

이 문제는 구구단 중 6단을 출력하는 코드에 관한 문제입니다. main 함수에서 첫 줄에 int n, i = 1 로 선언되어 있는데 n에는 문제에서 6이 입력되었다고 지정되어 있습니다. 따라서 while(i < 10)과 while문 마지막 줄 i++에 따라 i는 1 ~ 9까지 증가하게 되는데 <출력> 부분처럼 6단이 출력되려면 n과 i를 곱한 값이 n * i 가 들어가야 합니다.

 

 

데이터베이스

 

SQL과 관련한 다음 설명에서 괄호 (1) ~ (4)에 들어갈 가장 적합한 답을 적으시오.(16점)

 

<지문>

 

정규화는 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해하는 과정으로, 정규화의 목적은 가능한 한 중복을 제거하여 삽입, 삭제, 갱신 이상의 발생 가능성을 줄이는 것이다. 다음의 테이블은 기존의 테이블에서 부분 함수적 종속을 제거하여 완전 함수적 종속을 만족하는 (1)(이)다.

 

<학부생> 테이블

학부 학과번호 입학생수 담당관
정치대학 100 200 김지성
공과대학 200 250 이지연
인문대학 300 300 김해인
공과대학 400 170 박지민

 

아래는 정규화 과정을 거친 <학부생> 테이블에서 담당관의 이름이 "이"로 시작하는 튜플의 학과번호를 999로 갱신하는 SQL문이다.

 

UPDATE 학부생 (   2   ) (   3   ) = 999 WHERE 담당관 (   4   ) '이%';

 

UPDATE문은 테이블에 있는 튜플의 내용을 갱신할 때 사용하는 명령문으로, DML에 해당한다. 다른 DML로는 INSERT, DELETE가 있으며, 각각 새로운 튜플을 삽입하거나 삭제할 때 사용한다.

 

정답

 

(1) 제2정규화

(2) SET

(3) 학과번호

(4) LIKE

 

해설

 

(1)

 

정규화의 순서는 다음과 같습니다.

 

비정규 릴레이션

→ 도메인 원자값 (제1정규화)

→ 부분 함수 종속 제거 (제2정규화)

→ 이행 함수 종속 제거 (제3정규화)

→ 결정자이면서 후보키가 아닌 것 제거(BCNF)

→ 다치 종속 제거 (제4정규화)

→ 조인 속성 이용 (제5정규화)

 

(2) (3) (4)

 

UPDATE문은 다음과 같이 작성합니다.

 

UPDATE 테이블명 SET 속성 = 값 WHERE 조건;

 

문제처럼 학부생 테이블의 학과번호를 999로 갱신하려면 UPDATE 학부생 SET 학과번호 = 999 WHERE ~생략; 이런 식으로 작성하면 되는데, 이 문제에서는 담당관 이름이 '이'로 시작하는 튜플만 변경하라는 조건이 있으니 WHERE절에 LIKE를 사용하여 UPDATE 학부생 SET 학과번호 = 999 WHERE 담당관 LIKE '이%';로 작성하면 됩니다.

 

LIKE 사용법

 

이름이 '이'로 시작하는 경우 LIKE '이%';

이름이 '이'로 끝나는 경우 LIKE '%이';

이름에 '이'가 포함된 경우 LIKE '%이%';

반응형
반응형

알고리즘과 DB 일부 문제만 정리하였습니다.

최근 기출문제(2019년부터)는 하단 링크를 참고해 주세요.

정보처리산업기사 실기 출제 유형 및 최근 기출 문제 정리(19년 1회부터 21년 1회)

정보처리 산업기사 실기 시험은 2017년 한 번 개정되고 내년에 NCS로 다시 개정을 앞두고 있습니다. 해당 글은 2017년 개정된 이후 기출 문제 중에서 2019년 1회부터 가장 최근에 있었던 2021년 1회까

developer-rooney.tistory.com

알고리즘 - C언어


1. 다음 C언어로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오.(5점)

#include <stdio.h> func(int *p) { printf("%d\n", *p); printf("%d\n", p[2]); } main() { int a[7] = {1,2,3,4,5}; func(a); func(a + 2); }


정답

1
3
3
5

해설

C언어 포인터 문제입니다. func 함수에 매개 변수로 들어오는 p의 값을 이용하여 두 개의 printf에 각각 *p, p[2]를 출력합니다.

main에서 func는 func(a)와 func(a + 2) 이렇게 두 번 실행됩니다.

func(a) 실행 시 : 배열 a의 0번째 값인 1을 출력하고 2번째 값인 3을 출력

func(a + 2) 실행 시 : 배열 a의 2번째 값이 3을 출력하고 4번째 값 더한 값인 5를 출력

C언어 포인터에 대한 설명은 하단 링크를 참고해 주세요.

[C언어] 포인터 변수

C언어 포인터 포인터는 변수의 주소를 담는다. #include main () { int a = 20; // *b는 포인트 변수 int *b; // b는 a의 주소를 가리킴 b = &a; // b가 가리키는 곳에 b가 가리키는 곳의 값 + 10을 넣어준다. *b..

developer-rooney.tistory.com



2. 다음은 12와 6을 입력받아 <출력>과 같은 결과를 나타내는 프로그램을 C언어로 구현한 것이다. 프로그램을 분석하여 괄호 (1) ~ (4)에 가장 적절한 답을 적으시오.(10점)

<코드>

#include <stdio.h> int sub(int i, int j) { return i - j; } int add(int i, int j) { return i + j; } main() { int i, j, result; int (*pf)(int, int); scanf("%d, $d", &i, &j); pf = ( 1 ); ( 2 ) = pf(i, j); printf("%d, ", result); ( 3 ) = sub; result = ( 4 ); printf("%d", result); }


<출력>

18, 6

정답

(1) add
(2) result
(3) pf
(4) pf(i, j)

해설

이 문제는 포인터 함수를 이용하는 문제입니다. 우선 출력 값을 확인해보니 입력된 12와 6을 더한 값 18과 뺀 값 6이 출력된 것을 볼 수 있고 이 역할을 담당하는 함수는 각각 add와 sub입니다. main에서 *pf는 함수를 가리키는 포인터 함수로 지정되었고 처음 실행된 결과가 18이므로 두 값을 더하는 함수인 add가 (1)에 들어간 후 printf를 통해 출력되는데 pf = ( 1 ); 과 printf("%d, ", result); 사이에 result가 없으므로 ( 2 )는 result가 들어갑니다. 그 후에 pf는 add에서 sub로 바꿔야 하기 때문에 ( 3 )에는 pf가 들어가고 ( 4 )에는 result에 6을 담기 위해 12에서 6을 빼주는 함수를 이용한 sub(i, j)가 들어갑니다.

데이터베이스


1. 다음 데이터베이스와 관련한 다음 설명에서 괄호 (1) ~ (4)에 가장 적절한 답을 적으시오.(10점)

<설명>

데이터베이스를 관리하기 위한 필수 기능에는 정의 기능, (1) 기능, 제어 기능이 있다. 정의 기능은 데이터의 타입과 구조, 데이터가 데이터베이스에 저장될 때의 제약 조건 등을 명시하는 기능이고, (1) 기능은 체계적 데이터 처리를 위해 데이터 접근 기능(검색, 삽입, 삭제, 갱신 등)을 명시하는 기능이며, 제어 기능은 데이터의 정확성과 안전성을 유지하기 위해 무결성, 보안 및 권한 검사, 병행 제어 등을 명시하는 기능이다.

위와 같은 기능을 이용하여 데이터베이스를 정의하고 제어하는 사람 또는 그룹을 (2)(이)라고 한다. (2)(은)는 데이터베이스 관리 시스템과 컴퓨터 시스템, 조직 내의 전산 업무에 상당한 지식을 보유해야 하고, 데이터베이스를 설계, 관리, 운용 및 통제하며, 효율성과 경제적인 효용성을 높이기 위해 시스템을 감시하고 성능을 분석한다.

관계 데이터베이스에서 관계 내의 특정 튜플을 식별할 수 있는 키 필드인 (3)이(가) 있어야 한다. 데이터베이스 설계 시 설계자는 이 중 하나를 기본키(Primary Key)로 설정해야 하며, 기본키로 설정되지 않은 (3)(은)는 대체키(Alternate Key)라고 부른다.

관계형 데이터 모델에서 식별자의 역할을 하는 기본키와 달리 외래키(Foreign Key)는 다른 릴레이션의 기본키를 (4)하는 속성 또는 속성들의 집합을 의미한다. 릴레이션 간의 관계를 표현할 때 사용하며, (4) 릴레이션의 기본키와 동일한 키 속성을 갖는다.

정답

(1) 조작
(2) DBA
(3) 후보키
(4) 참조

해설

데이터베이스에 대한 설명 중 빈칸을 채우는 문제입니다. 데이터베이스의 기능에는 정의, 조작, 제어 기능이 있고 각각 DDL, DML, DCL을 이용합니다. 데이터베이스를 정의하고 제어하는 사람 또는 그룹을 'DBA(DataBase Administer)' 라고 부르며, 튜플을 식별할 수 있는 유일한 키 필드를 '후보키' 라고 부릅니다. 후보키 중 선택된 특정 키를 '기본키(Primary Key)' 라고 하는데 기본키가 아닌 나머지 후보키는 '대체키(Alternate Key)' 가 됩니다. 관계형 데이터베이스에서 하나의 릴레이션이 다른 릴레이션을 '참조' 할 수 있고 이 때 식별을 위해 사용하는 키가 '외래키(Foreign Key)' 입니다.

2. <직원>과 <동호회> 테이블을 참고하여 다음의 각 질문에 대한 SQL문을 완성하시오.(15점)

<직원>

직원코드 이름 부서
12345 루니 인사
12346 램파드 영업
12347 비야 인사


<동호회>

신청코드 이름 분야 활동점수
A-1000 루니 등산 2500
B-1000 램파드 수영 4700
C-1000 비야 배드민터 1800

* 시험 문제에서는 더 많은 데이터가 들어가지만 테이블의 속성만으로도 문제를 풀 수 있어 모두 넣지 않았습니다.


(1) <직원> 테이블에서 이름을 조회하는 SQL문을 완성하시오.
SELECT ( ) FROM 직원;

(2) <직원> 테이블에서 부서가 '인사'인 튜플을 검색하는 SQL을 완성하시오.
SELECT * FROM 직원 ( ) 부서 = '인사';

(3) <동호회> 테이블에서 분야가 '등산'이고 활동점수가 3000 이상인 튜플을 검색하는 SQL을 완성하시오.
SELECT * FROM 동호회 WHERE 분야 = '등산' ( ) 활동점수 >= 3000;

(4) <동호회> 테이블에서 분야만 검색하되, 같은 분야는 한 번만 검색하는 SQL문을 완성하시오.
SELECT ( ) FROM 동호회;

(5) <동호회> 테이블에서 이름과 분야를 검색하되, 활동점수를 기준으로 오름차순 정렬하는 SQL문을 작성하시오.
SELECT 이름, 분야 FROM 동호회 ( ) 활동점수;

정답

(1) 이름
(2) WHERE
(3) AND
(4) DISTINCT 분야
(5) ORDER BY

해설

SQL 문법에 대한 문제입니다. (1)에서는 이름을 조회하라고 했으므로 이름 을 입력하면 되고 (2)에서는 부서가 '인사'인 특정 튜플을 검색하라고 했으니 WHERE가 들어갑니다. (3)에서는 WHERE절에 조건을 두 개 걸어주기 위해 AND를 이용하고 (4)에서는 특정 속성 검색 중 결과에서 중복을 제거하기 위해 DISTINCT를 사용하며, (5)에는 오름차순 정렬을 위해 ORDER BY를 입력합니다.

반응형

+ Recent posts