평소 데이터베이스와 SQL에 대해 막연히 생각하시는 분들이 계시거나
얘네가 뭘 하는 녀석들인지 쉽게 알아보면 좋을거 같아 가볍게 글로 정리했습니다.
먼저 데이터베이스와 SQL을 다뤄보기 전, 운영체제에서 어떻게 데이터가 저장되는지 보겠습니다.
컴퓨터 시스템에서 데이터를 저장하고 다루는 방식은 하드웨어의 특성과 밀접한 관련이 있습니다.
데이터가 초기화되는 이유는 주로 하드웨어적인 이유에 있습니다.
하드디스크(HDD/SSD)와 메모리(RAM)의 차이를 생각해볼까요?
코드를 작성하면 코드는 보통 SSD에 저장됩니다.
프로그램이 실행되면 SSD에 있는 데이터가 RAM으로 올라갑니다.
이 과정에서 중요한 점은, RAM에 올라간 데이터는 프로그램이 재시작되면 리셋된다는 점입니다.
즉, 실행 도중에 생성되거나 변경된 변수들은 프로그램이 종료되면 사라지게 됩니다.
이러한 이유 때문에 영구적으로 데이터를 저장하기 위해서는 데이터를 HDD나 SSD 같은
영구 저장 장치에 저장해야 하며, 이를 가능하게 하는 시스템이 데이터베이스입니다.
RAM은 SSD보다 속도가 훨씬 빠르기 때문입니다.
데이터를 읽고 쓰는 속도가 수십 배에서 수백 배 빠른 RAM 덕분에 프로그램의 성능이 크게 향상됩니다.
SSD에 데이터를 영구적으로 저장해 두고, 실행할 때는 RAM에 올려서 빠르게 처리하는 구조가 일반적입니다.
이렇게 프로그램이 종료되더라도 데이터를 유지하기 위해 SQL(Structured Query Language)과 같은
시스템이 필요합니다. SQL은 영구적인 데이터 저장과 관리를 위한 가장 전통적이고 흔히 사용되는 방법입니다.
SQL은 데이터를 저장하고 조작하기 위한 언어로, 데이터베이스와 소통하기 위해 사용됩니다.
SQL의 기본 구조는 데이터를 테이블로 관리하며, 각 테이블은 행(Row)과 열(Column)로 구성되어 있습니다.
SQL에서 흔히 사용하는 네 가지 주요 명령어: SELECT, INSERT, UPDATE, DELETE.
테이블은 데이터를 담는 기본적인 구조입니다. 각 테이블은 행과 열로 구분됩니다.
아주 간단히 엑셀 시트를 떠올리면 이해하기 쉽습니다.
각 행은 데이터의 한 항목을 나타내고, 각 열은 데이터의 속성을 나타냅니다.
SELECT는 테이블에서 데이터를 조회할 때 사용됩니다. 특정 열을 선택해 데이터를 가져올 수 있습니다.
SELECT { column } FROM { table }
// 예시
SELECT id, author, title, content FROM Post
위 예시는 "Post" 테이블에서 "id", "author", "title", "content" 열의 데이터를 모두 조회합니다. 결과는 JSON 형식과 유사하게 받아볼 수 있어 웹 개발에서도 자주 사용됩니다.
INSERT는 새로운 데이터를 테이블에 추가할 때 사용됩니다.
INSERT INTO { table } { column 1, column 2 }
VALUES { value 1, value 2....}
// 예시
INSERT INTO posts (id, author, title, content, likeCount, commentCount)
VALUES (7, '조경문', 'SQL 기본기 정리글', '정리하는 글 작성 중', 5, 3)
이 예시는 "Post" 테이블에 새로운 데이터를 추가하는 과정입니다. 데이터베이스에 값을 저장할 때는 테이블 구조에 맞춰 데이터를 입력해야 합니다.
UPDATE는 기존 데이터를 수정할 때 사용됩니다.
UPDATE { table } SET { column } WHERE { condition }
// 예시
UPDATE Post SET likeCount = 0 WHERE id = 3
이 예시는 "id"가 3인 게시글의 "likeCount"를 0으로 업데이트합니다. 특정 조건에 맞는 데이터를 찾고, 그 데이터를 업데이트할 수 있습니다.
DELETE는 테이블에서 데이터를 삭제할 때 사용됩니다.
DELETE FROM { table } WHERE { condition }
// 예시
DELETE FROM Post WHERE author = '조경문'
이 예시는 "author"가 "조경문"인 모든 게시글을 삭제합니다. 데이터를 삭제할 때는 조건을 정확하게 설정하지 않으면 모든 데이터가 삭제될 위험이 있으므로 주의해야 합니다.
SQL의 주요 명령어는 CRUD 연산으로 불리기도 합니다.
CRUD는 Create, Read, Update, Delete의 약자입니다.
이를 HTTP 메서드와 연결해서 생각해 보면 이해가 더 쉽습니다.
이렇게 매핑함으로써 SQL 쿼리와 REST API의 관계를 쉽게 이해할 수 있고,
궁극적으로 프론트엔드로 백엔드와 협업할 때 그들이 어떤 이야기를 하는지 알 수 있게 됩니다.
SQL은 영구적인 데이터 저장과 관리를 위한 매우 중요한 도구입니다.
기본적인 SQL 명령어인 SELECT, INSERT, UPDATE, DELETE만 잘 이해해도
데이터베이스와 상호작용하는 대부분의 상황을 해결할 수 있습니다.
특히 테이블 구조와 명령어를 이해하면 더 복잡한 데이터 조작도 쉽게 다룰 수 있게 되며,
나아가 프론트개발에서의 REST API와의 연결도 자연스럽게 이해할 수 있게 됩니다.
SQL을 공부하면서 실제로 데이터베이스에 쿼리를 실행해 보고,
결과를 확인하는 과정에서 많은 것을 배울 수 있습니다.
기초부터 차근차근 다지면서 더 나아가 SQL의 고급 기능들을 익혀보는 것도 추천드립니다.
(1 to many, 제1정규화, 데이터베이스 아키텍처 등 재밌는게 참 많습니다😁)
읽어주셔서 감사합니다.