Database란 무엇인가? (Feat. 데이터베이스 종류, SQL 등)

데이터베이스에 대한 간략한 소개 및 다양한 종류와 쿼리문 소개하도록 하겠습니다.

Database란?

데이터베이스(Database)란, 체계적으로 조직된 데이터의 집합으로, 쉽게 접근하고 관리하며 업데이트할 수 있도록 구성된 데이터의 저장소입니다.

데이터베이스는 데이터를 효율적으로 저장, 검색, 수정할 수 있게 해주며, 다양한 애플리케이션과 시스템에서 중요한 역할을 합니다.

Relational Database vs NoSQL Database
Relational Database vs NoSQL Database

데이터베이스 스키마(Database Scheme)


데이터베이스 스키마(Database Schema)는 데이터베이스의 구조, 형식, 관계 등을 정의하는 것입니다.

이는 데이터베이스에 저장되는 데이터의 조직적인 구조를 나타내며, 이를 통해 데이터베이스 관리 시스템(DBMS)이 데이터를 어떻게 저장하고 관리할지 결정합니다.

Scheme는 테이블, 뷰, 인덱스, 관계 등을 포함할 수 있으며, 이를 통해 데이터베이스의 물리적인 저장 구조와 논리적인 뷰를 제공합니다.

키(Key)

데이터베이스 내에서 행이나 레코드를 고유하게 식별하는 데 사용되는 하나 이상의 필드(컬럼)의 집합입니다.

주요한 키의 종류는 다음과 같습니다

  1. 기본 키(Primary Key):
    • 한 테이블 내의 각 행을 유일하게 식별하는 키입니다.
    • 기본 키로 지정된 필드에는 중복된 값이나 NULL 값이 올 수 없습니다.
  2. 외래 키(Foreign Key):
    • 다른 테이블의 기본 키를 참조하는 필드입니다.
    • 외래 키는 두 테이블 간의 관계를 설정하는 데 사용됩니다.
  3. 대체 키(Alternate Key):
    • 기본 키로 선택되지 않은, 그러나 테이블 내에서 고유한 값을 가진 필드입니다.
    • 대체 키는 기본 키로 사용될 수 있는 잠재력을 가지고 있습니다.
  4. 슈퍼 키(Super Key):
    • 테이블 내의 행을 고유하게 식별할 수 있는 하나 이상의 필드의 조합입니다.
    • 슈퍼 키는 필요 이상의 정보를 포함할 수 있습니다.
  5. 복합 키(Composite Key):
    • 두 개 이상의 필드를 결합하여 행을 유일하게 식별하는 키입니다.
    • 복합 키는 각 필드가 개별적으로는 행을 고유하게 식별하지 못할 때 사용됩니다.

데이터 타입 종류

데이터베이스 Scheme에서 사용되는 컬럼 타입(데이터 타입)은 저장할 데이터의 종류와 특성에 따라 결정됩니다.

주요 데이터 타입은 다음과 같습니다:

  1. 정수형(Integer Types)
    • INT: 일반적인 크기의 정수를 저장합니다.
    • SMALLINT, TINYINT, MEDIUMINT, BIGINT: 다양한 범위와 저장 공간을 가진 정수 타입입니다.
  2. 실수형(Floating Point Types)
    • FLOAT, DOUBLE: 부동 소수점을 가진 실수를 저장합니다. FLOAT는 보통 32비트, DOUBLE은 64비트 정밀도를 가집니다.
    • DECIMAL: 고정 소수점을 가진 실수로, 정확한 소수점 연산이 필요할 때 사용됩니다.
  3. 문자열(String Types)
    • CHAR, VARCHAR: 문자열을 저장합니다. CHAR는 고정 길이, VARCHAR는 가변 길이 문자열을 의미합니다.
    • TEXT, BLOB: 큰 데이터를 저장하는 데 사용되며, TEXT는 텍스트 데이터, BLOB은 이진 데이터를 저장합니다.
  4. 날짜 및 시간(Date and Time Types)
    • DATE: 날짜를 YYYY-MM-DD 형식으로 저장합니다.
    • TIME: 시간을 HH:MM:SS 형식으로 저장합니다.
    • DATETIME, TIMESTAMP: 날짜와 시간을 함께 저장합니다. TIMESTAMP는 시간대 변환과 관련된 기능도 제공합니다.
  5. 논리형(Boolean Type)
    • BOOLEAN: 참(True) 또는 거짓(False) 값을 저장합니다. 실제로는 정수형으로 구현되는 경우가 많습니다.
  6. 열거형 및 집합형(Enum and Set Types)
    • ENUM: 미리 정의된 값 중 하나를 저장합니다.
    • SET: 미리 정의된 값들의 집합 중 하나 이상을 저장할 수 있습니다.

관계형 데이터베이스(Relational Database) 란?

개요

관계형 데이터베이스는 테이블 형태로 데이터를 저장합니다.

각 테이블은 행(row)과 열(column)으로 구성되어 있으며, 서로의 데이터가 키(key)를 통해 연결됩니다.

예전에는 대부분의 제품들이 관계형 데이터베이스 였습니다.

특징

  • 구조화된 쿼리 언어(SQL)를 사용하여 데이터를 관리합니다.
  • 데이터의 무결성과 일관성을 유지하는 데 강점을 가집니다.
  • 복잡한 쿼리와 트랜잭션을 지원합니다.

대표 제품

  • Oracle Database: 대규모 엔터프라이즈 환경에 널리 사용되는 강력한 상업용 데이터베이스 시스템입니다.
  • Microsoft SQL Server: 마이크로소프트에서 개발한 데이터베이스로, 주로 .NET 환경과 잘 통합되며 다양한 비즈니스 애플리케이션에 사용됩니다.
  • MySQL: 오픈소스이며 다양한 플랫폼에서 사용 가능한 가장 인기 있는 관계형 데이터베이스 중 하나입니다.
  • PostgreSQL: 고급 기능을 제공하는 또 다른 오픈소스 관계형 데이터베이스로, 대규모 데이터베이스와 복잡한 쿼리에 적합합니다.

비관계형 데이터베이스(NoSQL Database) 란?

개요

NoSQL 데이터베이스는 스키마가 없거나 유연한 스키마(Shceme)를 가진 데이터를 저장합니다.

테이블 기반의 구조를 사용하지 않고, 다양한 데이터 저장 방식을 제공합니다.

특징

  • 대량의 분산 데이터를 처리하는 데 적합합니다.
  • 유연한 데이터 모델을 제공하여 다양한 형태의 데이터를 쉽게 저장하고 관리할 수 있습니다.
  • 확장성과 성능 면에서 뛰어납니다.

대표 제품

  • MongoDB: 문서 지향적(Document-Oriented) NoSQL 데이터베이스로, JSON 형태의 데이터를 저장하고 관리하는 데 적합합니다.
  • Cassandra: 고가용성과 확장성에 초점을 맞춘 분산형 NoSQL 데이터베이스입니다.
  • Redis: 키-값 저장소로, 빠른 성능을 필요로 하는 캐싱 및 메시징 시스템에 주로 사용됩니다.
  • Couchbase: 문서 지향적 데이터베이스로, 모바일 애플리케이션과 웹 애플리케이션에 적합합니다.

SQL

SQL(Structured Query Language)은 데이터베이스 관리 시스템에서 데이터를 관리하기 위해 사용되는 표준 프로그래밍 언어입니다. SQL을 사용하여 데이터베이스에서 데이터를 검색, 업데이트, 삽입 및 삭제할 수 있습니다. 주요 SQL 문법과 각각에 대한 예제는 다음과 같습니다:

SELECT

설명

데이터베이스에서 특정 데이터를 검색하는 데 사용됩니다.

문법

SELECT column1, column2 FROM table_name;

예제

users 테이블에서 nameage 열의 데이터를 검색합니다.

SELECT name, age FROM users;

INSERT INTO

설명

새로운 데이터를 테이블에 추가하는 데 사용됩니다.

예제

users 테이블에 이름이 ‘John’이고 나이가 30인 새로운 행을 추가합니다.

INSERT INTO users (name, age) VALUES ('John', 30);

UPDATE

설명

테이블의 기존 데이터를 수정하는 데 사용됩니다.

예제

users 테이블에서 이름이 ‘John’인 행의 나이를 31로 수정합니다.

UPDATE users SET age = 31 WHERE name = 'John';

DELETE

설명

테이블에서 특정 데이터를 삭제하는 데 사용됩니다.

예제

users 테이블에서 이름이 ‘John’인 행을 삭제합니다.

DELETE FROM users WHERE name = 'John';

JOIN

설명

JOIN은 두 개 이상의 테이블을 결합하여 데이터를 조회합니다.

여러 형태의 JOIN이 있으며, 가장 흔한 것은 INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN입니다.

예제

table1column1table2column2를 선택합니다.

table1table2 사이에 common_field라는 공통 필드를 기준으로 INNER JOIN을 수행합니다.

결과는 두 테이블에서 common_field의 값이 일치하는 행들입니다.

SELECT table1.column1, table2.column2
FROM table1
INNER JOIN table2 ON table1.common_field = table2.common_field;

GROUP BY

설명

GROUP BY는 선택된 열의 값이 같은 행들을 요약된 그룹으로 만듭니다.

주로 집계 함수(AVG, COUNT, MAX 등)와 함께 사용됩니다.

예제

table_name에서 column_name을 기준으로 그룹을 만들고, 각 그룹의 행 수를 계산합니다.

결과는 column_name별로 그룹화된 행의 수를 보여줍니다.

SELECT column_name, COUNT(*)
FROM table_name
GROUP BY column_name;

ORDER BY

설명

ORDER BY는 결과 집합의 행을 정렬하는 데 사용됩니다.

기본적으로 오름차순으로 정렬되며, DESC 키워드를 사용하여 내림차순으로 정렬할 수 있습니다.

예제

table_name에서 column1column2를 선택하고, column1은 오름차순(ASC), column2는 내림차순(DESC)으로 정렬합니다.

결과는 column1에 따라 정렬되고, column1이 같은 경우 column2에 따라 내림차순으로 정렬됩니다.

SELECT column1, column2
FROM table_name
ORDER BY column1 ASC, column2 DESC;

참고 링크

Oracle

Wiki

Leave a Comment