데이터 입,출력 / 절차형 SQL

2023. 2. 15. 19:02정처기 필기/2과목 - 소프트웨어 개발

데이터 입,출력

1. SQL

- 1974년 IBM 연구소에서 개발한 SEQUEL에서 유래함

- 관계대수와 관계해석을 기초로 한 혼합 데이터 언어

 

DDL

domain, schema, table, view, index (Create/Alter/Drop/Truncate)

 

DML

--> select, insert, update, delete

 

DCL
--> commit, rollback / 무결성, 보안, ㅎ회복, 병행 제어 등

 

2. 데이터 접속

- 소프트웨어의 기능 구현을 위해 프로그래밍 코드와 데이터베이스의 데이터를 연결

 

SQL Mapping

프로그래밍 코드 내 SQL을 직접 입력해서 DBMS의 데이터에 접속하는 기술

# JDBC, ODBC, MyBatis

 

ORM

객체와 관계형 데이터베이스의 데이터를 연결하는 기술

# JPA(Hibernate), Django

 

3.  트랜잭션

- 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위

- 한꺼번에 모두 수행되어야 할 일련의 연산들

 

COMMIT

트랜잭션 처리가 정상적으로 종료되어 DB에 정상적으로 저장

 

ROLLBACK

트랜잭션 처리가 비정상 종료되어 DB의 일관성이 깨졌을 때 작업 취소

 

SAVEPOINT(=checkpoint)

트랜잭션 내에서 롤백할 위치인 저장점을 지정하는 명령어

 

4. 트랜잭션의 특징

 

원자성

: 트랜잭션 연산을 모두 반영하거나 모두 반영하지 말아야 함

 

일관성

: 트랜잭션이 실행을 성공적으로 완료할 시 일관성 있는 데이터베이스 상태를 유지

 

독립성

: 둘 이상 트랜잭션 동시 실행 시 한 개의 트랜잭션만 접근이 가능해서 간섭이 불가하다.

 

영속성

: 성공적으로 완료된 트랜잭션 결과는 영구적으로 반영됨


절차형 SQL 

1. 개요

- C, JAVA 등의 프로그래밍 언어와 같이 연속적인 실행이나, 분기, 반복 등의 제어가 가능한 SQL

- 일반적인 프로그래밍 언어에 비해 효율이 떨어짐

- 연속적인 작업들을 처리하는데 적합

- BEGIN~END 형식으로 작성되는 블록 구조로 기능별 모듈화 가능

 

프로시저

: 미리 저장해 놓은 SQL 작업 수행

 

트리거

: 입력, 업데이트, 삭제 등 이벤트가 발생할 때마다 작업을 자동 수행

 

사용자 정의 함수

: 프로시저와 유사하게 SQL을 사용해 일련의 작업을 연속적으로 처리한다.

 종료 시 예약어 return을 사용해 처리 결과를 단일값으로 반환

 

2. 테스트 / 디버깅

- 테스트 전 구문 오류 및 참조 오류 존재 여부 확인

- 오류 및 경고 메시지가 상세하지 않으므로 SHOW 명령어를 통해 내용 확인

- 삽입 및 변경 관련 SQL문은 주석으로 처리하고 디버깅 수행 (실제로 변화하지 않게)

 

3. 쿼리 성능 최적화

- SQL 코드 최적화

- 성능 측정 도구 : APM

- APM을 통해 최적화할 쿼리를 정하고 그 쿼리에 대해 옵티마이저가 수립한 실행 계획을 검토하여 SQL 코드와 인덱스 재구성