SQLSQL 기초 · 1입문

SQL이란? — 데이터베이스와 관계형 모델

SQL데이터베이스RDBMS관계형DBSELECT

SQL이 필요한 이유

앱의 데이터는 메모리에만 있으면 재시작 시 사라집니다. 데이터베이스는 데이터를 영구적으로 저장하고 효율적으로 조회합니다.

flowchart LR
    APP["앱 서버\n(Node.js, Python)"]
    DB[("데이터베이스\n(PostgreSQL, MySQL)")]
    
    APP -->|"SQL 쿼리"| DB
    DB -->|"결과 반환"| APP

주요 RDBMS

데이터베이스특징사용 사례
PostgreSQL오픈소스, 강력한 기능웹 앱, 엔터프라이즈
MySQL빠름, 광범위 지원웹 서비스
SQLite파일 기반, 경량모바일, 소규모 앱
SQL ServerMicrosoft기업 환경

핵심 개념

flowchart TB
    subgraph TABLE["users 테이블"]
        HEADER["id | name | email | age"]
        R1["1 | 철수 | kim@example.com | 25"]
        R2["2 | 영희 | lee@example.com | 30"]
        R3["3 | 민준 | park@example.com | 28"]
    end
  • 테이블 (Table): 데이터를 저장하는 2차원 구조
  • 행 (Row/Record): 한 건의 데이터
  • 열 (Column/Field): 데이터의 속성
  • 기본키 (Primary Key): 행을 유일하게 식별하는 열 (보통 id)
  • 외래키 (Foreign Key): 다른 테이블의 기본키를 참조

실습 환경 설정

옵션 1: SQLite (가장 간단)

# Python에 기본 포함
python3 -c "import sqlite3; print('SQLite OK')"

# 또는 SQLite 브라우저 다운로드
# https://sqlitebrowser.org

옵션 2: PostgreSQL (권장)

# Docker로 실행
docker run -d \
  --name postgres \
  -e POSTGRES_PASSWORD=password \
  -p 5432:5432 \
  postgres:16

# 접속
psql -h localhost -U postgres

첫 번째 SELECT

-- 모든 열, 모든 행 조회
SELECT * FROM users;

-- 특정 열만 조회
SELECT name, email FROM users;

-- 결과 예시
-- name  | email
-- ------|----------------
-- 철수   | kim@example.com
-- 영희   | lee@example.com

테이블 생성 미리보기

CREATE TABLE users (
    id      SERIAL PRIMARY KEY,   -- 자동 증가 정수
    name    VARCHAR(100) NOT NULL,
    email   VARCHAR(200) UNIQUE NOT NULL,
    age     INTEGER,
    created_at TIMESTAMP DEFAULT NOW()
);

SQL 명령어 분류

flowchart LR
    subgraph DDL["DDL (구조)"]
        D1["CREATE"]
        D2["ALTER"]
        D3["DROP"]
    end
    subgraph DML["DML (데이터)"]
        M1["SELECT"]
        M2["INSERT"]
        M3["UPDATE"]
        M4["DELETE"]
    end
    subgraph DCL["DCL (권한)"]
        C1["GRANT"]
        C2["REVOKE"]
    end

정리

개념설명
SQL데이터베이스 조작 언어
테이블행과 열로 구성된 데이터 저장 구조
기본키각 행의 고유 식별자
외래키테이블 간 관계 정의
SELECT데이터 조회

다음 편에서는 SELECT 기초 — 원하는 데이터를 정확히 꺼내는 다양한 조회 방법을 배웁니다.

궁금한 점이 있으신가요?

협업·의뢰는 아래로, 가벼운 소통은 인스타그램 @bluefox._.hi도 환영이에요.