이 메시지는 외부 자료를 칸아카데미에 로딩하는 데 문제가 있는 경우에 표시됩니다.

If you're behind a web filter, please make sure that the domains *.kastatic.org and *.kasandbox.org are unblocked.

주요 내용

데이터베이스를 업데이트할 때 SQL 사용하기

이번 과정에서 언급했던 것처럼, SQL 또는 SQL과 유사한 쿼리 언어를 데이터베이스에서 사용할 일이 자주 있을 것입니다. 몇 가지 쿼리는 "읽기 전용 작업"으로 사용되고, 다른 것들은 "읽기/쓰기 작업"으로 사용됩니다.
"읽기 전용 작업"의 예로는 몇몇 응용 프로그램이나 연구에서 덤프 한 데이터를 분석하는 것이 있습니다. 예를 들면, 식품회사에서 일하는 데이터 분석 과학자는 달리기를 하는 날과 같은 날에 아이스크림을 먹은 사람들의 퍼센티지를 쿼리로 구해서 운동이 사람들이 스스로에게 보상을 주도록 만드는지 알아낼 수 있을 것입니다.
SELECT * FROM diary_logs WHERE
       food LIKE "%ice cream%" AND activity LIKE "%running%";
위와 같은 데이터 분석을 한다면, 여기서 모든 쿼리는 읽기 전용인 SELECT가 될 것입니다. 새로운 데이터를 생성하는 것은 없고, 기존 데이터로 쿼리를 할 뿐입니다. SELECT 쿼리를 잘 할 필요는 있지만, 어떻게 테이블을 생성하고, 열을 업데이트하는 등의 쿼리는 알 필요가 없습니다.
"읽기/쓰기 작업"의 예로는 웹 애플리케이션의 백엔드를 만드는 소프트웨어 엔지니어가 있습니다. 예를 들어, 건강 관리 회사에서 일하는 소프트웨어 엔지니어는 매일 사용자가 양식을 전송할 때마다 데이터베이스에 기록을 해주는 프로그램을 작성할 것입니다.
INSERT INTO diary_logs (id, food, activity)
            VALUES (123, "ice cream", "running");
저라면 아마도 위의 SQL 명령어를 서버 쪽 언어에서, 아마도 명령어를 쉽게 구성하기 위하여 라이브러리를 사용하여 구성할 것입니다. 만약 파이썬에서 SQLAlchemy 라이브러리를 사용한다면 위의 쿼리는 다음과 같이 표현할 수 있을 것입니다.
diary_logs.insert().values(id=123, food="ice cream", activity='running')
만약 사용자가 자신의 일일 기록을 수정, 삭제하려고 하거나, 혹은 심지어 계정을 지웠다면 데이터베이스를 수정하기 위한 SQL이 필요할 것입니다. 만약 팀에서 사용자의 일일 기록에 이모티콘 칸을 추가하여 그들이 아이스크림을 먹고 달리기를 하는 동안 얼마나 행복한지 (아마도 매우 행복하겠죠) 기록할 수 있는 기능을 추가한다고 하면, 테이블의 구조 자체를 수정하는 SQL 문을 작성해야 할 것입니다.
이러한 것들은 모두 "쓰기 작업이고", 이러한 작업은 응용 프로그램의 데이터를 저장하거나 갱신하려고 한다면 반드시 필요합니다. INSERT 는 데이터를 삽입만 하기 때문에 상대적으로 안전하지만, UPDATE, DELETE, DROP, 혹은 ALTER 같은 명령들은 더 기존의 데이터를 갱신하기 때문에 훨씬 더 위험할 수 있습니다. 이러한 이유로 쿼리들을 잘 이해하고 신중하게 사용하는 것는 것은 매우 중요합니다. 쿼리를 사용하는 방법을 꾸준히 학습하세요!