SQL이란 무엇인가
SQL이란?
SQL(Structured Query Language)은 관계형 데이터베이스에서 데이터를 조회, 삽입, 수정, 삭제하기 위한 표준 언어입니다. 1970년대 IBM에서 개발되었고, 지금도 전 세계 개발자가 매일 사용합니다.
SQL은 "어떻게 찾아라"가 아니라 "무엇을 원하는지" 선언하는 언어입니다. 예를 들어 "주문 금액이 5만원 이상인 고객 목록"을 달라고 선언하면, 데이터베이스 엔진이 가장 효율적인 방법을 스스로 찾아냅니다.
왜 SQL을 배워야 할까?
거의 모든 애플리케이션은 데이터를 저장합니다. 사용자 정보, 주문 내역, 게시물 — 이 모든 것이 데이터베이스에 들어갑니다. SQL을 모르면 이 데이터를 제대로 다룰 수 없어요.
백엔드 개발자뿐만 아니라 데이터 분석가, 프론트엔드 개발자, 기획자도 SQL을 알면 데이터를 직접 조회하고 검증할 수 있어서 업무 효율이 크게 달라집니다.
PostgreSQL이란?
PostgreSQL은 오픈소스 관계형 데이터베이스 중 가장 강력한 것 중 하나입니다. 단순 데이터 저장을 넘어 JSON, 배열, 지리 데이터까지 처리할 수 있어요. 2023년 기준 개발자 선호도 1위를 달성했고, 대형 스타트업부터 금융권까지 폭넓게 쓰입니다.
-- 가장 간단한 SQL: 테이블의 모든 데이터 조회
SELECT * FROM users;
PostgreSQL vs MySQL vs SQLite: SQLite는 파일 기반으로 모바일/임베디드 앱에 적합하고, MySQL은 단순한 웹 서비스에 많이 쓰입니다. PostgreSQL은 복잡한 쿼리, JSONB, 고급 인덱싱 등 기능이 가장 풍부해서 복잡한 비즈니스 로직을 처리하는 서비스에 유리합니다.
관계형 데이터베이스 핵심 개념
| 개념 | 설명 |
|---|---|
| 테이블 | 데이터를 행(row)과 열(column)로 구성한 구조 |
| 행 (Row) | 테이블의 한 레코드. 예: 사용자 한 명의 정보 |
| 열 (Column) | 데이터의 속성. 예: name, email, created_at |
| 기본 키 (Primary Key) | 각 행을 유일하게 식별하는 값 |
| 외래 키 (Foreign Key) | 다른 테이블의 행을 참조하는 값. 테이블 간 관계를 정의 |
| 스키마 (Schema) | 테이블 구조와 제약 조건의 설계도 |
관계형 DB의 핵심 아이디어는 중복을 최소화하고 참조로 연결하는 것입니다. 주문 테이블에 고객 이름을 매번 저장하지 않고, 고객 ID만 저장하고 고객 테이블을 JOIN해서 가져옵니다. 이렇게 하면 고객 이름이 바뀌어도 한 곳만 수정하면 됩니다.
SQL vs NoSQL
SQL이 항상 정답은 아닙니다. 상황에 따라 NoSQL도 고려해야 합니다.
| 특성 | 관계형 DB (SQL) | NoSQL |
|---|---|---|
| 데이터 구조 | 엄격한 스키마 | 유연한 구조 |
| 장점 | 일관성, 복잡한 조회, 트랜잭션 | 수평 확장, 빠른 개발, 대용량 |
| 적합한 경우 | 금융, 주문, 사용자 관리 | 로그, 캐시, 문서 저장 |
| 대표 제품 | PostgreSQL, MySQL | MongoDB, Redis, Cassandra |
팁: 실무에서는 SQL과 NoSQL을 함께 씁니다. 예를 들어 주문 데이터는 PostgreSQL에, 세션 정보는 Redis에, 검색 인덱스는 Elasticsearch에 저장하는 식입니다.
SQL의 4가지 주요 명령
- SELECT — 데이터 조회
- INSERT — 데이터 삽입
- UPDATE — 데이터 수정
- DELETE — 데이터 삭제
이 네 가지를 CRUD(Create, Read, Update, Delete)라고 부릅니다. 여기에 테이블을 만들고 구조를 바꾸는 DDL(CREATE, ALTER, DROP), 권한을 관리하는 DCL(GRANT, REVOKE)도 있습니다.
다음 챕터에서 SELECT부터 자세히 배워봅니다.