SQL 기초: MySQL 중심으로
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의 데이터 구조를 소개한 바 있다.
위 구조를 바탕으로 생각할 수 있는 SELECT 쿼리문의 기본구조는 아래와 같다.
Select
컬럼명
from
테이블A
where
Row조건
FROM 테이블명
SELECT 문을 짤 때는 어느 테이블에서 데이터를 뽑을지부터 알아야 한다. MySQL의 Workbench에서 아래 그림 2처럼 스키마 하위에 있는 테이블 명을 확인할 수 있다. 기본적으로는 DataBase 테이블 요건서를 보고 데이터 테이블을 확인한다. 이렇게 확인한 테이블 명을 "from" 뒤에 넣는다.
SELECT 컬럼명
"select" 뒤에는 컬럼명을 넣는다. 그래서 먼저 해당 테이블의 컬럼명을 알아야 한다. 보통 아래 그림3 왼쪽 그림처럼 먼저 * 을 이용한 쿼리문을 먼저 실행해서 파악하거나 테이블 요건서를 보고 파악을 한다. 컬럼명 파악이 끝나면 아래 그림3 오른쪽 그림처럼 컬럼명을 선택한다.
WHERE 컬럼에 대한 ROW 조건
"where" 뒤에 조건을 줘서 특정 row를 선택할 수 있다. 위 그림 3에서 2022-03-18 일자 ( pDATE의 row 조건 ) 데이터를 보고 싶으면 pDate 컬럼에 해당 데이터가 있고 이 컬럼 데이터가 '2022-03-18' 일 때가 궁금한 것이므로 아래와 같이 SQL문을 작성한다.
쿼리문은 이렇게 만든 기본 SELECT 문 구조에 살을 붙여 나가는 것이다.