SQL
1. SQL
SQL(Structured Query Language)은 관계형 데이터베이스에서 데이터를 관리하고 조작하기 위해 사용하는 언어입니다. SQL은 테이블에서 데이터를 조회, 삽입, 수정, 삭제하는 기능을 제공하며, 데이터베이스 스키마를 정의하고 관리할 수 있습니다. 관계형 데이터베이스에서 데이터를 다루기 위해 필수적으로 사용되는 도구입니다.
SQL은 크게 세 가지 주요 역할을 합니다.
-
데이터 정의(DDL - Data Definition Language): 데이터베이스의 구조를 정의하는 명령어입니다. 테이블을 생성하거나 삭제하고, 테이블의 속성을 정의합니다.
- 예:
CREATE,ALTER,DROP
- 예:
-
데이터 조작(DML - Data Manipulation Language): 데이터베이스 내의 데이터를 조회, 삽입, 수정, 삭제하는 명령어입니다.
- 예:
SELECT,INSERT,UPDATE,DELETE
- 예:
-
데이터 제어(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_id는 customer 테이블의 customer_id와 연결된 외래 키로 설정됩니다. 이를 통해 order 테이블과 customer 테이블 간의 관계를 정의합니다.
4. SQL의 7가지 원칙
아래와 같은 SQL의 7가지 원칙에 대해 알면 좀 더 효율적으로 데이터를 다룰 수 있습니다. 다만 이 원칙은 SQL을 처음 접하는 사람에게는 조금 어려울 수 있습니다. 베이스캠프에서는 원칙만 다뤄드리고 이 원칙에 기반한 수업은 베이스캠프 시리즈가 아니라 에센셜 시리즈에서 다루게 됩니다.
- 지시 사항 및 분석할 내용 파악
- 어떤 테이블로 분석해야하는가? (
from) - 어떤 컬럼이 필요한가? (
select) - 어떤 조건이 필요한가? (
where) - 집계가 필요한가? (
group by) - 집계된 자료에 추가 조건이 필요한가? (
having) - 보기 좋게 정렬이 필요한가? (
order by)
위의 원칙을 프로세스로 나누면 다음과 같습니다.
| 업무 과정 | SQL 과정 |
|---|---|
| 1. 업무 파악 | 1) 지시 사항 및 분석할 내용 파악 |
| 2. 데이터 준비 | 2) 어떤 테이블로 분석해야하는가? (from) |
| 3. 데이터 전처리 | 3) 어떤 컬럼이 필요한가? (select) |
4) 어떤 조건이 필요한가? (where) | |
| 4. 데이터 집계 | 5) 집계가 필요한가? (group by) |
| 5. 데이터 정리 및 보고자료 작성 | 6) 집계된 자료에 추가 조건이 필요한가? (having) |
7) 보기 좋게 정렬이 필요한가? (order by) |