익숙한 python이나 엑셀을 쓰지 않고 SQL이라는 프로그램으로 데이터베이스를 관리하는 이유가 무엇일까요.
- In-Memory
- 파이썬에서 데이터를 다룰 때는 프로그램이 실행 중일 때만 존재합니다.
- pandas로 아무리 table을 예쁘게 만들어도 python을 끄면 메모리에서 사라집니다. 데이터를 다시 꺼내오기 위해서는 python을 다시 켜고 변수를 실행해야 하는 번거로움이 있습니다.
- File I/O
- 엑셀 시트나 csv 같이 파일을 불러올 때 파일의 크기에 따라 읽어오는 데 많은 리소스가 듭니다. 큰 파일을 python에 임포트하는 것 자체가 하나의 관문이 됩니다.
- 만약 용량이 큰 여러 개의 파일을 동시에 다뤄야 하는 등의 복잡한 작업을 한다면 그 난이도는 더 상승합니다.
위와 같은 이유로 SQL 기반의 데이터베이스를 사용합니다. 그 말은 즉, SQL을 사용하면 위의 단점을 대부분 극복할 수 있다는 의미입니다.
SQL은 Structured Query Language의 약자로, 구조화된 쿼리 언어라는 의미입니다. '구조화'된 '쿼리' '언어'라는 단어를 하나씩 살펴보겠습니다.
- Data Definition Language
- DDL은 데이터를 정의할 때 사용하는 언어입니다.
- CREATE나 DROP 등이 대표적입니다.
- Data Manipulation Language
- DML은 데이터베이스에 데이터를 저장할 때 사용하는 언어입니다.
- DELETE, UPDATE 등이 대표적입니다.
- Data Control Language
- DCL은 데이터베이스 접근 권한과 관련된 언어입니다.
- GRANT, REVOKE 등이 대표적입니다.
- Data Query Language
- DQL은 정해진 스키마 안에서 쿼리를 하는 언어입니다.
- SELECT, WHERE 등이 대표적입니다.
- Transaction Control Language
- TCL은 DML을 거친 데이터 변경사항을 다루는 문법입니다.
- COMMIT으로 데이터베이스에 작업 내용을 커밋하거나 ROLLBACK으로 커밋했던 내용을 다시 롤백할 수 있습니다.
SELECT * #customer 테이블의 모든 열을 출력
FROM customer c
JOIN invoice i #invoice 테이블과 customerId로 INNER JOIN
ON c.customerId = i.cutomerId
WHERE i.Total > 100 #100달러 이상 주문한 invoice만 출력
ORDER BY i.Total #주문금액을 오름차순으로 정렬
LIMIT 10 #그 중 10개만 출력