본문 바로가기
정보처리기사

(정보처리기사)데이터 입출력 구현

by 흥부와놀자 2020. 7. 13.

1. 자료구조

(출처이미지https://lee-mandu.tistory.com/462)

- 선형리스트 : 배열 처럼 일정 순서로 나열된 자료구조로써 데이터를 삽입하기 위해선 남는 공간이 있어야 하고 삽입,삭제 시 데이터의 이동이 필요함. 데이터들이 몰려 있기 때문에 기억공간의 효율이 좋음

- 연결리스트 : 포인터를 통해 자료들을 불연속적으로 연결시킨 자료구조. 노드의 삽입과 삭제가 용이하지만 포인터를 찾는 시간때문에 접근속도가 느리다. 데이터들이 흩어져 있기때문에 기억공간의 효율이 나쁘다.

- 스택 : 마지막에 들어온게 처음으로 나가는 LIFO구조

- 큐 : 처음 들어온게 처음으로 나가는 FIFO 구조이며 시작과 끝을 표시하는 두개의 포인터가 있다.

- 트리 : 노드와 브런치를 이용해 사이클을 이루지 않도록 구성한 그래프의 특수한 형태.

 디그리(차수)-> 각 노드에서 뻗어나온 가지수로써 트리의 디그리는 노드들의 디그리 중 가장 많은 수를 나타낸다.

 레벨 -> 첫번째 RootNode가 레벨1이고 밑으로 갈수록 레벨이 높아진다.

 

2. 데이터저장소 / 데이터베이스 / DBMS

- 관계 대수 : 관계형 DB에서 원하는 정보와 그 정보를 검새갛기 위해 어떻게 유도하는가를 기술하는 절차적 언어

- 관계 해석 : 관계 데이터의 연산을 표현하는 방법으로 원하는 정보를 정의할 때 계산수식을 사용한다. 비절차적 특징을 가지며 튜플 관계해석과 도메인 관계해석이 있다. 

- SQL Mapping : 코드내에 SQL을 입력하여 DMBS에 접속하는 기술. JDBC, ODBC, MyBatis가 있다.

- ORM(Object-Relational Mapping) : 객체지향 프로그래밍의 객체와 관계형 DB데이터를 매핑하는 기술. JPA, Hibernate, Django가 있다.

 

3. 절차형 SQL -> 연속적 실행이나 분기가 가능한 SQL

- 프로시저

CREATE OR REPLACE PROCEDURE emp_change_s(i_사원번호 IN INT)

IS

BEGIN

 UPDATE 급여 SET 지급방식 = 'S' WHERE 사원번호 = i_사원번호;

 EXCEPTION

                 WHEN PROGRAM_ERROR THEN

                                  ROLLBACK;

 COMMIT;

END;

 

- 프로시저 실행

EXECUTE 프로시저명;

EXEC 프로시저명;

CALL 프로시저명;

 

- 트리거

CREATE TRIGGER 학년정보_tri BEFORE INSERT ON 학생

REFERENCING NEW AS new_table

FOR EACH ROW

WHEN(new_table.학년 IS NULL)

BEGIN

 new_table.학년 := '신입생'

END;

 

- 사용자 정의 함수 

프로시저와 유사하게 일련의 작업을 연속적으로 처리하며 종료시 처리결과를 단일값으로 반환하는 절차형 SQL이다.

사용자 정의함수는 예약어 RETURN을 통해 값을 반환하기 때문에 출력 파라미터가 없다.

SUM(), AVG()등의 내장 함수처럼 DML문에서 반환값을 활용하기 위한 용도로 사용된다.

구분 프로시저 사용자 정의 함수
반환값 없거나 1개 이상 가능 1개
파라미터 입,출력 가능 입력만 가능
사용가능 명령문 DML,DCL SELECT
호출 프로시저, 사용자 정의함수 사용자 정의함수
사용 방법 실행문 DML에 포함

CREATE OR REPLACE FUNCTION Get_S_성별(i_성별코드 IN INT)

RETURN VARCHAR2

IS

BEGIN

       IF (i_성별코드=1) THEN

               RETURN '남자';

        ELSE 

               RETURN '여자';

        END IF;

END;