시작하며
SQL은 데이터베이스에서 데이터를 관리하기 위해 사용되는 표준 프로그래밍 언어이다.
이 언어는 데이터베이스 스키마 생성과 수정, 행 추가 및 수정, 데이터 조회 등을 위해 사용된다.
SQL은 관계형 데이터베이스 관리 시스템 (RDBMS)에서 데이터를 조작하고 관리하는 데 필수적인 도구이다.
이런 관계형 데이터베이스의 대표적인 종류는 아래와 같다.
- MySQL
- Postgre SQL
- Oracle Database
- Microsoft SQL Server
- SQLite
이중 MySQL은 오픈 소스이며, 2010년 Oracle Corlporation의 소유가 되며 제품 포트폴리오의 일부가 되었다.
이런 MySQL을 2000년대 초반부터 웹 개발을 하며 사용하기 시작했었다.
APM (Apche + PHP + MySQL)의 조합은 웹 서비스를 위한 인기 있는 오픈 소프트웨어로 각광받게 된다.
2000년대 개인 홈페이지 제작 열풍이 불며 제로 보드 등에서 사용되기도 하고 나 또한 크고 작은 웹서비스를 APM 기반으로 제작했었다.
당시만 해도 PHP3/4, MySQL 4/5버전으로 사용했었는데, 개발에서 손을 놓은지 십여 년이 지난 지금 PHP와 MySQL 모두 8.X 버전으로 업데이트되었다.
오랜 기간 개발에서 손을 놓으며 그 공백만큼 한자리를 차지고 하고 있던 기억마저 소멸되었기에 잊혔던 그 감을 찾기 위해 SQL 관련 학습을 시작하게 되었다.
이 글은 이지퍼블리싱에서 출간한 도서 ‘MySQL로 배우는 SQL입문’에 대한 리뷰이자 MySQL을 이해하는 과정을 담고 있다.
관계형 데이터베이스와 비관계형 데이터 베이스
MySQ과 같은 관계형 데이터베이스의 특징은 테이블 형식을 사용하여 데이터를 저장한다. 각 테이블은 열과 행으로 구성되어 있으며, 열은 데이터의 속성을 정의하고 행은 실제 데이터코드를 나타낸다. 데이터는 고정된 스키마를 따르며, 데이터 유형 및 크기가 엄격하게 정의된다.
이와 반대로 NoSQL(비관계형 데이터베이스)는 키-값 쌍, 문서(JSON, XLM 등), 그래프, 칼럼 패밀리 등 다양한 데이터 구조를 사용한다. 이들은 스키마가 자유로워 데이터 구조가 유동적이며, 다양한 유형의 데이터를 저장할 수 있다.
이런 특징을 비교해 보면 NoSQL이 솔깃해 보인다.
나 또한 PC용 프로그램을 만들면서 SQL보다는 JSON과 같은 데이터를 활용하였고, 근래 MongoDB와 같은 NoSQL도 사용해 보려 준비 중이다.
하지만, 데이터베이스를 선택할 때, 프로젝트의 요구 사항과 특성에 따라 최적의 데이터 베이스를 선택하려면 관계형과 비관계형의 차이점을 명확히 파악하고 인지해야 올바른 선택을 할 수 있다.
즉, 직접 사용해보지 않고는 장단점을 파악할 수 없기에 개인적으로는 다양한 DB에 대해 지식을 쌓아가고 있다.
내가 다시 MySQL에 관심을 가지게 된 건 운영 중인 서버에 WordPress를 설치하며 DB로 MySQL을 설치해야 했다.
이런 워드프레스나 조마와 같은 홈페이지 제작도구인 CMS들도 대부분 RDBMS를 사용하고 있다. 이는 여러 장점들로 인해 채택되어 사용되지만 데이터의 일괄성과 안정성이 확보되었기에 많은 CMS들이 RDBM를 채택하여 사용하고 있다.
SQL을 배워야 하는 이유
워드프레스와 같은 CMS 솔루션을 설치하면 RDBMS를 필요로 한다고 했다.
이런 홈페이지 제작툴은 데이터베이스를 필요로 하지만 사용자가 인지하지 못하게 깊숙이 숨어 있다. 즉 데이터를 입출력 인터페이스를 제공하여 SQL 구조를 모르더라도 알아서 DB에 저장하고 활용할 수 있기에 SQL을 모르더라도 서비스에는 문제가 되지 않는다.
그럼 왜 SQL을 배워야 할까?
데이터 분석과 관리는 현대 비즈니스에서 필수적인 요소가 되었다.
빅 데이터 시대에 접어들면서, 데이터를 효과적으로 관리하고 분석하는 능력은 기업의 경쟁력을 좌우하는 중요한 요소가 되었다. SQL은 데이터를 조작하고 분석하기 위한 강력한 도구로, 대규모 데이터베이스에서 정보를 추출하고, 이를 기반으로 전략적 결정을 내릴 수 있는 능력을 제공한다.
SQL 학습은 데이터베이스 보안 측면에서도 중요하다. SQL 인젝션과 같은 보안 위협을 이해하고 예방하기 위해서는 SQL 구문에 대한 깊은 이해가 필요하다. 개발자가 SQL을 통해 데이터베이스 쿼리를 안전하게 작성하는 방법을 배우면, 이러한 위협으로부터 시스템을 보호할 수 있다.
이처럼 SQL은 데이터 중심의 환경에서 능력을 발휘할 수 있도록 지원하는 필수적인 도구이며, 데이터베이스 기술을 다루는 데 있어 중심적인 역할을 한다.
이로 인해 데이터베이스에 대한 이해를 높인다면, 웹 서비스 개발, 데이터 분석, 시스템 관리 등 다양한 분야에서 효율적으로 활용할 수 있다.
MySQL로 배우는 SQL 입문
특징과 구성
책은 아래와 같은 목차로 구성되어 있다.
- 1장, 데이터베이스란?
- 2장, 나만의 SQL 실습 환경 만들기
- 3장, SQL 시작 전 준비 운동하기
- 4장, SQL 기본 문법 익히기
- 5장, 조인으로 두 테이블 묶기
- 6장, 다양한 SQL 함수 사용하기
- 7장, SQL 제대로 활용하기
- 8장, 파이썬과 DB로 주식 분석 시스템 만들기
주요 특징으로 하루 1시간식 3주간 진행되는 학습계획표를 참고로 학습진도를 나갈 수 있게 구성되었고, 가장 큰 특징으로는 저자의 강의가 무료로 제공된다.
기본에 충실한 구성
1장과 2장에서 위에도 잠깐 언급한 SQL에 대해 자세히 설명하고 있다. 특히 1장의 데이터베이스 설명은 과할 정도로 상세한 설명을 제공하는 느낌마저 들었다.
개인적으로 가장 큰 관심사는 데이터베이스 관리 시스템이였다. 터미널에서 일일이 명령어를 치며 테이블 확인하는 방법도 있겠지만 효율적인 데이터 관리를 위해 해당 RDBM의 관리 솔루션을 사용하는 것이 효율적인 관리 및 생산성을 높일 수 있다.
내가 웹 서비스를 개발할 때만 해도 phpMyAdmin이라는 웹 기반의 관리 소프트웨어를 사용했지만, 책에서는 오라클에서 직접 개발하고 배포하는 ‘MySQL Workbench’를 기준으로 설명하고 있다.
pyhpMyAdmin은 웹기반으로 PHP와 MySQL로 구동되어 쉽게 접근할 수 있다는 장점이 있지만 웹, PHP+MySQL이라는 플랫폼의 한정성으로 MySQL Workbench에 큰 관심을 두게 되었다.
책에서는 이에 대한 소개와 설치 그리고 실습 예제를 MySQL Workbench 통해 진행하기 때문에 ‘MySQL Workbench’를 제대로 익힐 수 있다는 큰 장점이 있다.
효율적인 실습 예제
기본과 심화 과정을 거쳐 8장에서는 ‘파이썬과 DB로 주식 분석 시스템 만들기’라는 실습 예제를 소개하고 있다.
개인적으로 주 사용 언어가 Python이다보니 매우 관심 높은 챕터가 되었다. 근래 크롤링 프로그램을 만들때 주로 JSON을 사용하던 나로서는 MySQL과의 연동을 배우며 다양한 구상을 할 수 있게 되었다.
PHP를 통한 예제를 제공할 법도 했는데, Python을 사용한 접근은 매우 효율적인 실습 예제 아닐까 생각이 든다.
마치며,
이 책은 현역 국내 DB 전문가가 집필한 책으로 번역서가 아니다. 그로 인해 구성과 내용은 한국인의 입맛에 딱 맞는 느낌을 받을 수 있었다.
오랜 기간 동안 손 놓고 잊고 지내던 나로선 데이터베이스에 대한 감을 잡고 나아가 심화 학습을 통해 전반적인 방향을 설계할 수 있었다.
단 한 권으로 모든 걸 해결할 수는 없다. 하지만 이 책을 통해 다양한 접근과 시도를 할 수 있게 기반을 마련할 수 있었기에 SQL을 배워보려는 입문자에게 추천해 본다.
본 도서는 이지퍼블리싱 서평단으로 선정되어 제공받은 책이다.
현역 마케터를 대상으로 서평단을 모집했었고, 근래 PostgreSQL로 SQL 학습을 다시 시작하게 되었고 마침 MySQL과 비교할 수 있는 좋은 기회였기에 서평단에 신청 했었다.
역시, 기대 이상의 내용들로 구성되어 있어 옆에 두고 펼쳐보는 참고서가 되지 않을까 생각된다.
운영중인 리눅스 서버에 Workbench를 실행한 화면, https://www.vtoon.net