SQL - 개요

안녕하세요, 미래의 프로그래머 여러분! SQL의 세계로 흥미로운 여정을 안내해 드리게 되어 기쁩니다. 10년 이상 컴퓨터 과학을 가르쳐온 사람으로서 SQL은 데이터 세계의 스위스 아ーノ이와 같은 존재입니다. 매우 다재다능하며 필수적입니다. 그럼 SQL을 함께 이해해 보겠습니다!

SQL - Overview

SQL이란?

SQL은 구조화된 질의어(Structured Query Language)로, 관계형 데이터베이스를 관리하고 조작하기 위해 설계된 특수 목적 프로그래밍 언어입니다. 이게 무서울 것 같지만, 데이터를 큰 도서관이라고 생각해보세요. SQL은 그 도서관의 도서관리자인 것처럼, 모든 책의 위치를 알고 필요한 정보를 빠르게 찾아줄 수 있습니다.

SQL의 주요 특성

  1. 선언적 언어: SQL에는 무엇을 원하는지 말하지, 어떻게 얻는지는 말하지 않습니다.
  2. 집합 기반: 개별 레코드가 아니라 데이터 집합을 다룹니다.
  3. 비 절차적: 데이터를 검색하기 위한 정확한 단계를 지정할 필요가 없습니다.

다음은 SQL의 간단한 예입니다:

SELECT first_name, last_name
FROM employees
WHERE department = 'Sales';

이 질의는 데이터베이스에 Sales 부서에 속한 모든 직원의 이름과 성을 요청하는 것입니다. 간단하지 않나요?

왜 SQL을 배우죠?

이제 "왜 SQL을 배워야 하나요?"라는 의문이 드실 수도 있습니다. 저는 이 작은 이야기를 들려드리겠습니다. 몇 년 전, 제 학생 중 한 명이 SQL을 알고 있었기 때문에 대학 졸업 후 바로 좋은 직장을 구말했습니다. 그 회사는 방대한 데이터를 가지고 있었지만, 이를 이해하는 데 어려움을 겪고 있었습니다. 그녀의 SQL 기술은 그녀를 순식간에 영웅으로 만들었습니다!

SQL을 배우는 데 몇 가지 설득력 있는 이유가 있습니다:

  1. universel 언어: 거의 모든 관계형 데이터베이스가 SQL을 이해합니다.
  2. 데이터는 어디에나 있습니다: 소기업에서 기술 거대 기업까지, 모두 데이터베이스를 사용합니다.
  3. 직업 기회: SQL 기술은 다양한 산업에서 높은 수요가 있습니다.
  4. 강력한 데이터 조작: SQL은 대규모 데이터 셋을 쉽게 처리할 수 있습니다.

SQL의 간략한 역사

SQL은 우리 중 많은 사람들보다 오래된 존재입니다! 1970년대에 탄생했으며, 기술 연도로는 거의 고대와도 같습니다. IBM 연구원 Donald Chamberlin과 Raymond Boyce는 Edgar Codd의 관계 모델을 기반으로 SQL을 개발했습니다. 그들은 데이터의 Dr. Frankenstein과도 같은 존재로, 데이터베이스와 소통할 수 있는 언어를 소생시켰습니다!

주요 이정표

연도 사건
1970 Edgar Codd가 관계 모델을 제안
1974 SQL이 IBM에서 탄생
1986 SQL이 ANSI 표준이 됨
1987 SQL이 ISO 표준이 됨
1990년대 많은 데이터베이스 시스템이 SQL을 채택

SQL은 어떻게 작동하나요?

이제 SQL이 어떻게 마법을 부릴 수 있는지 조금 더 깊이 탐구해보겠습니다. SQL은 클라이언트-서버 모델로 작동합니다. 레스토랑을 생각해보세요: 당신(클라이언트)은 주문을 하고, 주방(서버)은 요리를 준비하여 제공합니다.

SQL 프로세스

  1. 연결: 애플리케이션이 데이터베이스 서버에 연결합니다.
  2. 질의: SQL 질의를 서버에 보냅니다.
  3. 처리: 서버는 질의를 처리합니다.
  4. 결과: 서버는 결과를 애플리케이션으로 돌려보냅니다.

이 과정을 더 복잡한 예제로 설명해보겠습니다:

SELECT c.customer_name, SUM(o.total_amount) as total_spent
FROM customers c
JOIN orders o ON c.customer_id = o.customer_id
GROUP BY c.customer_name
HAVING SUM(o.total_amount) > 1000
ORDER BY total_spent DESC;

이 질의는 다음과 같은 작업을 수행합니다:

  1. customersorders 테이블을 조인합니다.
  2. 각 고객의 총 지출 금액을 계산합니다.
  3. $1000 이상을 지출한 고객만 필터링합니다.
  4. 마지막으로, 지출 금액이 높은 순서로 결과를 정렬합니다.

이 질의를 실행할 때 SQL은 다음과 같은 단계를 거칩니다:

  1. 먼저 customersorders 테이블을 조인합니다.
  2. 그런 다음 결과를 고객 이름으로 그룹화합니다.
  3. 각 고객의 total_amount 합계를 계산합니다.
  4. HAVING 절을 통해 $1000 이상을 지출한 고객을 필터링합니다.
  5. 마지막으로, 결과를 지출 금액이 높은 순서로 정렬합니다.

이 모든 작업은 배경에서 이루어지며, 당신은 깨끗하고 정리된 테이블 형식의 결과를 얻습니다!

SQL을 활용해보자

SQL이 어떻게 작동하는지 이해하기 위해 간단한 데이터베이스를 생성하고 질의를 실행해보겠습니다. 우리는 작은 서점을 관리하고 있다고 상상해보겠습니다:

-- 책 테이블 생성
CREATE TABLE books (
book_id INT PRIMARY KEY,
title VARCHAR(100),
author VARCHAR(50),
price DECIMAL(5,2)
);

-- 데이터 추가
INSERT INTO books VALUES
(1, 'To Kill a Mockingbird', 'Harper Lee', 12.99),
(2, '1984', 'George Orwell', 10.99),
(3, 'Pride and Prejudice', 'Jane Austen', 9.99);

-- $10 이상인 책을 찾는 질의
SELECT title, price
FROM books
WHERE price > 10
ORDER BY price DESC;

이 질의를 실행할 때 SQL은 다음과 같은 작업을 수행합니다:

  1. books 테이블의 모든 레코드를 검토합니다.
  2. 각 책의 가격을 조건 (> 10)과 비교합니다.
  3. 조건을 만족하는 책의 제목과 가격을 선택합니다.
  4. 마지막으로, 선택된 결과를 가격이 높은 순서로 정렬합니다.

결과는 다음과 같을 수 있습니다:

title price
To Kill a Mockingbird 12.99
1984 10.99

이제 SQL이 작동하는 것을 목격했습니다! 테이블을 생성하고 데이터를 추가하고 질의를 실행하는 과정을 통해입니다.

기억하세요, SQL을 배우는 것은 자전거 타는 것과 같습니다.처음에는 흔들릴 수 있지만, 연습을 하면 데이터베이스를 쉽게 탐색할 수 있게 됩니다. 실험을 하고, 호기심을 유지하며, 실수를 두려워하지 마세요 - 그것이 우리가 가장 잘 배우는 방법입니다!

Credits: Image by storyset