금융퀀트/프로그램기초

SQL 기초: MySQL 중심으로

문송한투자자 2022. 9. 26. 06:45
반응형

SQL의 기본 정의

자동매매를 위해서는 데이터베이스를 조작할 수 있어야 한다. 쌓아 놓은 수많은 과거 데이터를 재료로 모델을 만들고, 가격을 예측하기 때문이다. 데이터베이스를 조작하는 프로그램은 MySQL, Oracle, SQLite 등이 있는데 전부 SQL 문 베이스로 근본은 똑같다. SQL 문은 사용자가 데이터베이스에 질문을 하는 것이다. 엑셀에서  "sheet1에 "A6" 셀에 있는 데이터를 보여줘"라는 식의 질문을 컴퓨터가 알아먹을 수 있도록 던지는 것이라고 생각하면 된다.

SQL 문의 분류

SQL 문은 기본적으로 CRUD로 구성된다. CRUD 는 위키피디아에 검색해보면 아래와 같은 표를 확인할 수 있다.

이름 조작 SQL
Create 생성 INSERT
Read 읽기 SELECT
Update 갱신 UPDATE
Delete 삭제 DELETE

표1: 위키피디아 CRUD 정의 (https://ko.wikipedia.org/wiki/CRUD)

SQL 문의 4 가지 구성요소 중에서 우리가 알아야 할 것은 Read(읽기)-SELECT이다. 일단 내가 원하는 데이터를 뽑아내기만 하면 그 데이터를 INSERT, UPDATE, DELETE 치는 일은 쉽다. MySQL에 한정해서 INSERT, UPDATE, DELETE 관련된 일은 MySQL Workbench 에서 지원해주는 경우도 많다.

SQL-SELECT 문법 기초( MySQL)

03 MYSQL 설치(Windows) 라는 글에서 아래와 같은 MySQL의 데이터 구조를 소개한 바 있다. 

그림1: MySQL DB구조

위 구조를 바탕으로 생각할 수 있는 SELECT 쿼리문의 기본구조는 아래와 같다. 

Select 
컬럼명
from 
테이블A
where 
Row조건

FROM 테이블명

SELECT 문을 짤 때는 어느 테이블에서 데이터를 뽑을지부터 알아야 한다. MySQL의 Workbench에서 아래 그림 2처럼 스키마 하위에 있는 테이블 명을 확인할 수 있다. 기본적으로는 DataBase 테이블 요건서를 보고 데이터 테이블을 확인한다. 이렇게 확인한 테이블 명을 "from" 뒤에 넣는다. 

그림2: MySQL Workbench 에서 테이블 명 확인

 

SELECT 컬럼명

"select" 뒤에는 컬럼명을 넣는다. 그래서 먼저 해당 테이블의 컬럼명을 알아야 한다. 보통 아래 그림3 왼쪽 그림처럼 먼저 * 을 이용한 쿼리문을 먼저 실행해서 파악하거나 테이블 요건서를 보고 파악을 한다. 컬럼명 파악이 끝나면 아래 그림3 오른쪽 그림처럼 컬럼명을 선택한다.

그림3: SQL SELECT 문 예시

WHERE 컬럼에 대한 ROW 조건

"where" 뒤에 조건을 줘서 특정 row를 선택할 수 있다. 위 그림 3에서 2022-03-18 일자 ( pDATE의 row 조건 ) 데이터를 보고 싶으면 pDate 컬럼에 해당 데이터가 있고 이 컬럼 데이터가 '2022-03-18' 일 때가 궁금한 것이므로 아래와 같이 SQL문을 작성한다.

그림4: SQL SELECT 문 최종 예시

쿼리문은 이렇게 만든 기본 SELECT 문 구조에 살을 붙여 나가는 것이다.

반응형