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: 각 고객을 고유하게 식별하는 열입니다. 중복되지 않으며 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_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) |