데이터베이스 & SQL 기초: 첫날 배운 것
Source: Dev.to
데이터베이스란 무엇인가?
데이터베이스는 전자적으로 저장된 관련 데이터의 구조화된 컬렉션으로, 쉽게 접근·관리·업데이트할 수 있도록 조직된 것입니다. 데이터베이스는 개인, 기업, 정부 등 어디서든 사용됩니다. 국가 시민 데이터베이스처럼 크고 복잡할 수도 있고, 친구 목록, 청구서 테이블, 판매 기록처럼 단순할 수도 있습니다.
디지털 방식으로 데이터베이스를 관리하려면 데이터베이스 관리 시스템(DBMS) 을 사용합니다.
DBMS란 무엇인가?
DBMS는 사용자가 데이터베이스를 효율적이고 안전하게 저장·관리·유지보수할 수 있게 해 주는 소프트웨어입니다. 예시:
- PostgreSQL
- MySQL
- MariaDB
- Oracle Database
- MongoDB
DBMS가 제공하는 기능:
- 데이터 저장 및 조직
- 접근 제어를 통한 보안
- 백업 및 복구
- 데이터의 손쉬운 가져오기·내보내기
- CRUD 작업 지원: 생성(Create), 읽기(Read/조회), 업데이트(Update), 삭제(Delete)
데이터베이스 유형
관계형 데이터베이스(SQL)
관계형 데이터베이스는 행과 열로 구성된 테이블에 데이터를 저장합니다. 데이터가 구조화되어 있으며, 테이블 간 관계가 명확히 정의됩니다. CRUD 작업을 수행하기 위해 SQL(Structured Query Language)을 사용합니다.
예시
- PostgreSQL
- MySQL
- MariaDB
- Oracle Database
비관계형 데이터베이스(NoSQL)
비관계형 데이터베이스는 전통적인 테이블이 아닌 형태로 데이터를 저장합니다. 예:
- 키‑값 쌍
- 문서(JSON, XML)
- 그래프
- Blob
SQL 대신 데이터베이스 고유의 쿼리 언어나 API를 사용합니다.
예시
- MongoDB
- Firebase Firestore
- Cassandra
- Redis
데이터베이스 키 이해하기
가장 중요한 개념 중 하나는 키이며, 이는 레코드를 고유하게 식별하고 테이블 간 관계를 정의합니다.
- Primary Key(기본 키) – 테이블 내 각 레코드를 고유하게 식별하는 키.
- Natural Keys(자연 키) – 실제 세계의 식별자(예: 학생 번호, 주민등록번호, SSN)와 매핑되는 기본 키.
- Surrogate Keys(대리 키) – 자연 키가 실용적이지 않을 때 사용되는 인위적으로 생성된 키(예: 자동 증가 ID).
- Foreign Keys(외래 키) – 다른 테이블의 기본 키를 참조하여 테이블 간 관계를 만드는 키.
오늘 배운 SQL 기본
데이터 선택
SELECT * FROM table;
SELECT column1, column2 FROM table;
WHERE 로 필터링
SELECT * FROM table WHERE field > 9;
AND, OR 같은 논리 연산자를 조합해 더 복잡한 필터를 만들 수 있습니다.
고유값 가져오기
SELECT DISTINCT field FROM table;
행 개수 세기
SELECT COUNT(*) FROM table;
별칭 사용
SELECT field AS Total FROM table;
문자열 다루기
SQL에서는 문자열 리터럴에 작은 따옴표를 사용합니다.
SELECT * FROM table WHERE name = 'John';
LIKE 로 패턴 매칭
SELECT * FROM table WHERE name LIKE 'T%';
문자열 길이와 파싱
SELECT * FROM table WHERE LENGTH(name) > 3;
SELECT * FROM table WHERE LEFT(name, 1) = 'T';
숫자 다루기
값 반올림
SELECT ROUND(value, 2) FROM table;
모듈로 연산으로 짝수 찾기
SELECT * FROM table WHERE MOD(id, 2) = 0;
마무리 생각
오늘 가장 인상 깊었던 점은 기본적인 SQL 쿼리만으로도 얼마나 강력한지를 깨달은 것입니다. 간단한 SELECT 문만으로도 데이터에 대한 의미 있는 질문을 할 수 있습니다. 첫 날을 통해 탄탄한 기초를 다졌으며, 앞으로 테이블을 만들고, 데이터를 삽입하며, 실제 데이터베이스 구조를 설계하는 것이 기대됩니다.