Spring 입문 #6 - mySQL (1)

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의 약자로 테이블 구조를 표 형태로 요약해서 보여준다.