3. 데이터베이스의 구조 및 SQL

박은서's avatar
Feb 09, 2026
3. 데이터베이스의 구조 및 SQL

1. 데이터베이스의 구조

서버 └─ 데이터베이스(DB) └─ 스키마(Schema) └─ 테이블(Table) └─ 행(Row, Record) └─ 열(Column, Field)

1️⃣ 서버 (Database Server)

  • DB가 올라가 있는 물리적/논리적 장비
  • 하나의 서버에 여러 DB가 실행될 수 있음
    • (예: MySQL 서버 안에 DB 여러 개)

2️⃣ 데이터베이스 (Database)

  • 데이터가 모여 있는 논리적 저장소
  • 회사별 서비스 모듈별로 DB를 나누기도 함
    • (예: user_db, order_db)

3️⃣ 스키마 (Schema)

1) 개념

DB 내부에서 데이터를 조직화하는 구조 정의

2) 스키마의 역할

  • 어떤 테이블이 있는지
  • 테이블의 필드가 무엇인지
  • 제약 조건 (PK, FK, UNIQUE, NOT NULL)
  • 인덱스 등 구조 전반을 정의
💡 MySQL에서는 스키마=데이터베이스 라는 개념이 거의 동일하게 쓰이기도 함

4️⃣ 테이블 (Table)

1) 개념

데이터를 저장하는 기본 단위(엑셀 표라고 생각하면 됨)

2) 테이블의 구성

  • 행(Row): 한 사람/한 주문 같은 레코드
  • 열(Column): 이름, 나이, 전화번호 같은 속성

3) 예시

Users 테이블
id
name
age
1
Kim
20
2
Lee
30

5️⃣ 행 (Row, Record, Tuple)

  • 테이블에 저장된 한 개의 데이터 묶음
  • 한 사람, 한 주문, 한 제품 등 실체 데이터

6️⃣ 열 (Column, Field, Attribute)

  • 행이 갖는 속성
  • 데이터 타입 존재 (INT, VARCHAR, DATE 등)

7️⃣ 제약 조건 (Constraints)

데이터 무결성을 보장하기 위해 테이블에 적용하는 규칙
  • PRIMARY KEY: 고유 식별자
  • FOREIGN KEY: 다른 테이블과 관계 연결
  • UNIQUE: 중복 금지
  • NOT NULL: 꼭 값 필요
  • DEFAULT: 값 없을 때 기본값

8️⃣ 인덱스 (Index)

테이블 검색을 빠르게 하기 위한 보조 구조
(책의 목차처럼 특정 컬럼으로 빠르게 점프)
  • 조회는 빠르지만
  • 삽입/수정/삭제는 약간 느려질 수도 있음

2. SQL (Structured Query Language)

1️⃣ SQL 이란?

관계형 데이터베이스(RDBMS)를 조작하기 위한 표준 언어

2️⃣ SQL의 역할

  • 데이터를 조회
  • 데이터를 삽입/수정/삭제
  • 테이블 구조 생성/변경
  • 트랜잭션 수행

3️⃣ SQL의 대표 명령

분류
풀네임
역할(설명)
대표 명령어
DQL
Data Query Language
데이터 조회
SELECT
DML
Data Manipulation Language
데이터 조작(삽입·수정·삭제)
INSERT, UPDATE, DELETE, MERGE
DDL
Data Definition Language
테이블/DB 구조 정의 및 변경
CREATE, ALTER, DROP, TRUNCATE
TCL
Transaction Control Language
트랜잭션 제어
COMMIT, ROLLBACK, SAVEPOINT
DCL
Data Control Language
권한/보안 제어
GRANT, REVOKE

1) 데이터 조회

SELECT * FROM users WHERE age > 20;

2) 데이터 삽입

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

3) 데이터 수정

UPDATE users SET age = 31 WHERE id = 1;

4) 데이터 삭제

DELETE FROM users WHERE id = 1;
SQL은 Oracle, MySQL, PostgreSQL, SQL Server 등 대부분의 RDBMS에서 사용됨
 

※ DSL(Domain-Specific Language, 도메인 특화 언어)

1️⃣ DSL 이란?

특정 목적(도메인)을 위해 만들어진 언어

2️⃣ DSL의 특징

  • 범용 언어가 아니라 한 분야에 최적화
  • 사용 목적이 제한적
  • 복잡한 동작을 간단한 문법으로 표현 가능

3️⃣ 예시

분야
DSL 예
데이터베이스 질의
SQL
웹 페이지 스타일
CSS
정규식
Regex
빌드/자동화
Gradle DSL, Ant DSL
하드웨어 설계
Verilog
인프라 관리
Terraform, CloudFormation
 
Share article