WeniVooks

검색

SQL 베이스캠프

SQL

1. SQL

SQL(Structured Query Language)은 관계형 데이터베이스에서 데이터를 관리하고 조작하기 위해 사용하는 표준 언어입니다. SQL을 통해 테이블의 데이터를 조회, 삽입, 수정, 삭제할 수 있으며, 데이터베이스 스키마를 정의하고 관리할 수 있습니다. 관계형 데이터베이스를 다루기 위해 반드시 알아야 하는 필수 도구입니다.

SQL은 크게 세 가지 주요 역할로 구분됩니다.

  1. 데이터 정의(DDL - Data Definition Language): 데이터베이스의 구조를 정의하는 명령어입니다. 테이블 생성, 수정, 삭제와 같은 작업을 수행합니다.

    • 주요 명령어: CREATE, ALTER, DROP
  2. 데이터 조작(DML - Data Manipulation Language): 데이터베이스 내의 데이터를 다루는 명령어입니다. 데이터 조회, 삽입, 수정, 삭제 작업을 수행합니다.

    • 주요 명령어: SELECT, INSERT, UPDATE, DELETE
  3. 데이터 제어(DCL - Data Control Language): 데이터베이스에 대한 접근 권한을 관리하는 명령어입니다.

    • 주요 명령어: GRANT, REVOKE

2. 테이블과 제약 조건

관계형 데이터베이스에서 데이터를 저장하는 기본 단위는 테이블입니다. 테이블은 열(속성)과 행(튜플)으로 구성되며, 데이터를 구조화하여 저장합니다. 테이블을 생성할 때 각 열에 데이터 타입제약 조건을 지정하여 데이터 무결성을 보장할 수 있습니다.

예를 들어, customer 테이블을 생성하면서 각 열에 제약 조건을 설정하는 예시입니다.

CREATE TABLE customer (
    customer_id INT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(100) UNIQUE
);
CREATE TABLE customer (
    customer_id INT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(100) UNIQUE
);

위 예시에 포함된 주요 제약 조건은 다음과 같습니다.

  • PRIMARY KEY: 각 고객을 고유하게 식별하는 열입니다. 중복되지 않으며 NULL 값을 가질 수 없습니다.
  • NOT NULL: name 열은 반드시 값이 있어야 하며, 빈 값을 허용하지 않습니다.
  • UNIQUE: email 열의 값은 테이블 내에서 중복될 수 없습니다.

3. 테이블 간의 관계

SQL에서는 외래 키(Foreign Key)를 사용하여 테이블 간의 관계를 정의할 수 있습니다. 예를 들어, order 테이블과 customer 테이블이 있을 때, 각 주문이 특정 고객과 연결되도록 외래 키를 설정할 수 있습니다.

CREATE TABLE order (
    order_id INT PRIMARY KEY,
    customer_id INT,
    order_date DATE,
    FOREIGN KEY (customer_id) REFERENCES customer(customer_id)
);
CREATE TABLE order (
    order_id INT PRIMARY KEY,
    customer_id INT,
    order_date DATE,
    FOREIGN KEY (customer_id) REFERENCES customer(customer_id)
);

위 예시에서 customer_idcustomer 테이블의 customer_id를 참조하는 외래 키로 설정됩니다. 이를 통해 order 테이블과 customer 테이블 간의 관계가 정의되며, 데이터 무결성이 유지됩니다.

4. SQL의 7가지 원칙

SQL을 효율적으로 사용하기 위한 7가지 원칙을 소개합니다. 이 원칙은 SQL을 처음 접하는 분들에게는 다소 어려울 수 있지만, 이해하고 나면 데이터 분석 업무를 체계적으로 수행할 수 있습니다. 베이스캠프에서는 기본 원칙을 다루며, 심화 내용은 에센셜 시리즈에서 다룹니다.

  1. 지시 사항 및 분석할 내용 파악
  2. 어떤 테이블로 분석해야 하는가? (FROM)
  3. 어떤 컬럼이 필요한가? (SELECT)
  4. 어떤 조건이 필요한가? (WHERE)
  5. 집계가 필요한가? (GROUP BY)
  6. 집계된 자료에 추가 조건이 필요한가? (HAVING)
  7. 보기 좋게 정렬이 필요한가? (ORDER BY)

이 원칙을 업무 프로세스와 매핑하면 다음과 같습니다.

업무 과정SQL 과정
1. 업무 파악1) 지시 사항 및 분석할 내용 파악
2. 데이터 준비2) 어떤 테이블로 분석해야 하는가? (FROM)
3. 데이터 전처리3) 어떤 컬럼이 필요한가? (SELECT)
4) 어떤 조건이 필요한가? (WHERE)
4. 데이터 집계5) 집계가 필요한가? (GROUP BY)
5. 데이터 정리 및 보고서 작성6) 집계된 자료에 추가 조건이 필요한가? (HAVING)
7) 보기 좋게 정렬이 필요한가? (ORDER BY)
1.2 데이터베이스2장 SQL 실습