1. 서버 접속

표(Table): 실제 데이터가 저장되는 가장 기본적이고 핵심적인 공간, 엑셀 시트와 유사
데이터베이스(DB): 표들을 모아두는 폴더같은 개념, 행(row), 열(column)으로 구성된다.
데이터베이스 서버: 여러 개의 DB(폴더)들을 관리하고 운영하는 가장 거대한 최상위 시스템, 컴퓨터에 설치한 MySQL 프로그램 자체가 데이터베이스 서버를 의미
스키마(Schema): 데이터의 설계도(구조) - 테이블에 어떤 데이터가 어떤 조건으로 들어가야 하는지 정의해 놓은 뼈대나 규칙 자체 ex) Member 테이블의 id는 숫자여야하고, name은 문자열이어야 하며 NULL 비허용 등,
혹은 좁은 의미로 DB 그 자체(폴더), MySQL에서는 데이터베이스와 똑같은 의미로 사용된다. ex) CREATE DATABASE hello;나 CREATE SCHEMA hello;나 똑같은 의미로 사용된다.
즉, 정리하자면 mySQL에서는 DB = Schma이다. 데이터를 저장하려면 먼저 폴더(스키마)를 정렬해 주어야하므로 hello_spring이라는 스키마(데이터베이스)를 먼저 생성해 둔 것이다.

mySQL Command Line Client를 실행하여 서버를 킨 모습이다.
2. 스키마의 사용

먼저 CREATE 명령어를 통해 데이터베이스를 생성하였다.

DROP 명령어를 통해 데이터베이스를 삭제할 수도 있다.

SHOW DATABASES를 통해 앞서 생성한 DB를 확인할 수 있다.
opentutorials는 앞서 생성한 DB이고,
나머지 데이터베이스들은 mySQL 서버가 정상적으로 작동하기 위해
설치될 때부터 스스로 만들어둔 시스템 기본 데이터베이스이다.
mysql(핵심 설정 폴더): 가장 중요한 시스템 DB, mySQL에 접속하는 사용자 계정의 id나 비밀번호 정보와 그 사용자들이 어떤 DB에 접근할 수 있는지에 대한 권한 정보가 저장된다.
information_schema(안내 데스크): DB 안에 있는 모든 테이블 이름, 컬럼 이름, 데이터 타입 등의 메타데이터(데이터를 설명하는 데이터)를 보관하는 곳, 우리가 존재하는 테이블들을 확인해볼 때 mySQL은 이 DB에서 탐색한다.
performance_schema(CCTV 틈): 서버의 성능을 감시하는 DB, 어떤 쿼리가 실행되는 데 시간이 얼마나 걸렸는지, 메모리는 얼마나 사용됐는지 등 성능 관련 지표들을 기록한다.
sys(요약 보고서): performance_schema의 내용이 복잡하므로, 관리자가 읽기 쉽도록 핵심만 요약해서 보여주는 보조 DB이다.

opentuttorials DB에 테이블을 생성하기 위해 USE 명령어를 사용하여 opentutorials DB를 선택한다.
3. SQL과 테이블의 구조
SQL: Structured Query Language의 약자, 한국말로 구조화된 질의 언어이다. 데이터베이스 서버(MySQL)에게 명령을 내릴 때 사용하는 데이터베이스 언어이다.
특징 1: 문법이 직관적이고 매우 쉽다. 알고리즘적 언어가 아니기 때문에 우리가 일상에서 쓰는 영어 문법과 거의 유사하다.
특징 2: 관계형 데이터베이스(RDBMS)의 전 세계 표준 소통 언어다. 세계에는 수많은 데이터베이스 제품이 있는데 SQL이라는 공통 언어를 사용한다. 다른 제품을 사용해도 새로운 언어를 배울 필요 없이 바로 쿼리를 짤 수 있다는 장점이 있다.

이처럼 다양한 SQL 명령어가 존재한다.
4. 테이블의 생성

목표는 이 테이블을 SQL로 생성하는 것이다.

먼저 CREATE TABLE로 topic 테이블을 생성한다.
그리고 id열을 설정할건데,
INT(11): 데이터타입을 INT로 설정하고 길이를 최대 11로 설정한다.
NOT NULL: NULL 값을 허용하지 않는다.(id값이기 때문에 null이 존재하면 안된다)
AUTO_INCREMENT: 자동으로 1씩 증가시키게 해준다(id값이기 때문에)
title은 VARCHAR 타입으로 설정한다. VARCHAR 타입은 가변 문자열 타입이다.
description 열은 TEXT 타입으로 설정하는데, TEXT 타입은 VARCHAR보다 훨씬 더 긴 장문의 글을 저장할 때 쓴는 타입이다.
created 열은 시간을 표시해야 하므로, DATETIME 데이터타입으로 설정한다. DATETIME 타입은 날짜와 시간을 저장하는 전용 데이터 타입이다.
author 열과 profile 열 모두 VARCHAR 타입으로 설정한다. 둘 다 NULL 허용으로 설정하여 익명 글을 허용한다.
id열은 이때 PRIMARY KEY로 설정하는데,
중복 데이터를 구분하기 위해 고유 식별 번호를 id로 부여해주는 것이다.
id를 기준으로 데이터를 분류할 수 있게 된다.

SHOW TABLES를 통해 생성한 테이블들을 확인할 수 있다.

DESC 테이블명을 통해 테이블의 구조를 이렇게 확인해볼 수 있다.
DESC는 Describe의 약자로 테이블 구조를 표 형태로 요약해서 보여준다.
'백엔드' 카테고리의 다른 글
| Spring 입문 #8 - 스프링 DB 접근 기술 (0) | 2026.06.01 |
|---|---|
| Spring 입문 #7 - mySQL (2) (0) | 2026.05.09 |
| Spring 입문 #5 - 회원 관리 예제: 웹 MVC 개발 (0) | 2026.05.09 |
| Spring 입문 #4 - 스프링 빈과 의존관계 (0) | 2026.05.04 |
| Spring 입문 #3 - 회원 관리 예제: 회원 서비스 (2) | 2026.05.02 |
