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: 각 고객을 고유하게 식별할 수 있는 열입니다.
  • NOT NULL: name은 반드시 값이 있어야 하며, 비워둘 수 없습니다.
  • UNIQUE: email 값은 중복될 수 없습니다.

3. 테이블 간의 관계

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

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 실습