훌륭한 요리사 SQL
해당 브런치에 남김 글은 초고입니다. 완성된 작품은 해당 "오늘부터 IT를 시작합니다."로 출간하였습니다!!
구매하여서 완성된 글을 종이책의 정감과 편안함으로 읽어보시길 바랍니다^^
감사합니다.!!
http://www.yes24.com/Product/Goods/111417594
커리(Curry)는 인도를 대표하는 맛있는 음식입니다. 우리나라에서는 일본의 카레라이스가 일제강점기 때 전파되었습니다. 한국의 카레는 유난히 노란빛이 돕니다. 강황 가루의 양은 늘렸고, 한국인의 입맛에 어울릴 수 있게 매운맛을 더했습니다. 그리고 큼직하게 썰어낸 각종 채소와 고기들도 일품입니다. 저도 어릴 적 반찬 투정하는 저에게 어머니는 3분 카레를 데혀주었던 기억이 납니다. 인도 요리 카레는 남녀노소 즐겨먹는 달콤한 수프입니다.
이번 시간에는 이 맛있는 커리(Curry)를 만들어 보는 방법을 알아보겠습니다. 우선 '감자', '양파', '당근', '돼지고기', '카레가루', '식용유', '우유', '강황가루를'를 준비합니다. 개인에 기호에 따라 입맛에 따라 재료는 충분히 변할 수 있습니다. '브로콜리', '파프리카', '연근', '닭고기', '돼지고기' 어떤 재료든 상관없습니다. 준비된 재료들을 손질합니다. 흐르는 물에 씻은 다음 네모나게 깍둑썰기를 합니다. 고기들은 한입에 들어갈 수 있게 적당한 크기로 잘라줍니다. 이제 기름을 두른 팬에 양파를 볶습니다. 양파 기름이 새어 나오면, 이때 돼지고기를 넣고 함께 볶습니다. 후추를 살짝 뿌려주면 비린내를 잡을 수 있습니다. 그다음 이제 물을 넣고 끓여줍니다. 이제 마법의 가루 강황 가루를 넣습니다. 이제 잘 저어주면 맛있는 '커리'가 완성됩니다.
다른 맛의 커리를 만드는 방법은 동일합니다. 재료만 달라지면 그 맛도 이름도 변합니다. 버터와 토마토를 넣으면 마크니(makhani) 커리, 매운 고추와 칠리 페이스트를 넣으면 반달루(vindaloo) 커리, 감자와 완두콩을 넣어서 만들면 알루(aloo) 커리가 개인적으로 좋아하는 재료는 시금치와 치즈를 만들어 넣어서 채식주의자도 즐길 수 있는 담백하고 풍미 가득한 팔락 파니르 (palak paneer)를 즐겨먹습니다. 강황 가루에 무엇을 넣고 만드냐에 따라 다양한 음식이 탄생합니다. 그런데 이렇게 맛있는 커리를 만드는 방법은 사실 데이터베이스가 데이터를 쿼리(Query) 문을 이용해서 결과를 만드는 많이 유사합니다. 개발자도 요리하듯 쿼리를 이용해 다양하고 사용자에 입맛에 딱 맞는 데이터라는 요리를 만들어 줍니다.
한 사용자가 쇼핑몰에 접속합니다. 아이쇼핑을 하던 중 청바지를 사고 싶어 졌습니다. 그래서 검색어를 입력합니다. '청바지' 그러면 해당 홈페이지가 가지고 있는 청바지 정보가 노출됩니다. 그런데 여기서 그치지 않습니다. 검색 옵션에서 색은 검은색, 스키니 스타일로 다시 정보를 요청합니다. 그러면 이전보다. 더 간략한 데이터들이 나타납니다. 마지막으로 가격대를 설정하고, 선호하는 브랜드까지 선택합니다. 이제 수 백개로 나왔던 정보들이 이제는 몇 가지 정보로 추려졌습니다. 그렇게 오늘도 쇼핑몰은 손님에 맞는 정보를 쿼리로 요리하였습니다. 그것이 바로 SQL 요리사가 하는 일입니다.
SQL(Structured Query Language)은 관계형 데이터베이스 시스템에서 자료를 처리하고, 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어입니다. 이때 데이터베이스의 정보를 요청 방식이 바로 쿼리(Query)입니다. 클라이언트는 주문을 합니다. 지금 어떤 정보를 보고 싶은지, 그러면 요리사가 요리를 만들듯 시스템은 사용자가 원하는 정보의 집합을 보여줘야 합니다. 그때 바로 쿼리는 사용자에게 필요한 정보를 가져오는 역할을 합니다. 이렇게 데이터베이스를 다루고 명령을 내려서 원하는 업무를 하기 위해서 만들어진 언어가 바로 SQL입니다.
앞서 간단한 커리 요리를 만드는 방법을 배웠습니다. 그렇다면 이번 시간에는 SQL에서도 데이터를 요리하는 방법을 배워보겠습니다. 사용자 입맛에 맞는 데이터를 요리하는 방식을 우린 쿼리(Query)라고 합니다. 이 단어를 직역하면 '질의'라는 뜻입니다. 질문을 답해 달라고 하는 서버에게 요청하는 방삭입니다. 데이터베이스는 데이터를 차곡차곡 쌓아둡니다. 마치 음식 재료들처럼 필요할 때 언제든지 요리가 되는 것처럼 데이터들도 그렇게 준비가 되어 있습니다. 하지만 사용하지 못하고 계속 쌓아만 둔다면 어떤 일이 일어날까요?
만약 데이터베이스가 개발되지 않았다면 우린 여전히 창고에 가득한 서류더미 속에서 필요한 정보를 찾아야 합니다. 작년에 샀던 운동화를 구매한 이력을 확인하고 싶다면, 수많은 인원이 A4용지를 뒤적거리면서 일일이 정보를 찾아 헤매야 했을 것입니다. 하지만 다행히 데이터베이스는 개발되었고, 그리고 그 쌓여만 가는 데이터 속에서 원하는 정보를 찾아오는 방법까지 개발되었습니다. 그렇게 필요한 정보를 가져오는 방식이 바로 쿼리입니다.
쿼리로 만들 수 있는 대표적인 요리 방법을 알아봅니다. 첫 번째는 바로 데이터 정의어(Data Definition Language, DDL), 데이터베이스를 정의하는 데이터 전체의 골격을 결정하는 역할을 하는 정의입니다. 이를 통해 모양을 갖추게 됩니다. 데이터 베이스를 정의한다는 것은 곧 데이터베이스 설계를 한다는 의미와 같습니다. 그렇기 때문에 이 과정은 어떤 요리를 할지 재료를 준비하고 결정하는 단계입니다.
- CREATE
이 명령어는 테이블을 생성합니다. 생성된 테이블은 관련 데이터들을 수집합니다.
- ALTER
생성된 테이블이 잘못 만들어지거나 수정이 필요로 하면 이 명령어를 통해 변경을 합니다.
- DROP
테이블을 삭제하는 이 명령어는 말 그대로 테이블을 다시는 쓰지 않도록 하는 행위입니다.
- TRUNCATE
테이블을 초기화시키는 역할을 합니다.
두 번째 요리방법은 바로 데이터 조작어(Data Manipulation Language, DML)입니다. 이는 직접적인 레시피가 됩니다. 데이터를 조회하고, 입력하고, 수정하고, 삭제합니다. 이 방법을 통해 시스템에 맞는 데이터들만 모아서 사용할 수 있게 되고, 사용자에게 알맞은 데이터를 보여줄 수 있는 쿼리가 하는 요리 방법입니다.
- SELECT
데이터를 조회하는 기능을 합니다.
- INSERT
데이터를 삽입하는 기능을 합니다.
- UPDATE
데이터를 수정하는 기능을 합니다.
- DELETE
데이터를 삭제하는 기능을 합니다.
수 천만 줄의 데이터들이 있습니다. 그리고 냄비를 준비합니다. 필요한 데이터 한 줌을 넣습니다. 불필요한 데이터는 비워줍니다. 그리고 저어줍니다. 요리가 완성되면 이제 사용자는 준비된 데이터를 음미하면 됩니다. 음식을 가장 잘 만들고 가장 많은 레시피를 개발한 최고의 요리사는 아마도 구글일 것입니다.
그렇게 개발자는 오늘도 당신을 위한 수프를 만듭니다.