Notice
Recent Posts
Recent Comments
관리 메뉴

즐겁게, 코드

MySQL - 02. MySQL의 구조, DDL 기초 본문

💾 DB & ORM/MySQL

MySQL - 02. MySQL의 구조, DDL 기초

Chamming2 2021. 4. 24. 14:49

1. MySQL의 구조

MySQL의 구조는 크게 테이블, 데이터베이스(스키마), 데이터베이스 서버로 구분됩니다.

이미지 출처 : 생활코딩 (https://opentutorials.org/course/3161/19534)

테이블은 흔히 생각하는 관계형 데이터베이스로, MySQL의 가장 작은 데이터베이스 단위입니다.

(Ex. 학교 정보 데이터베이스 예시 : 2학년 1반의 데이터베이스)

 

또 이런 테이블들을 한데 모은 것을 데이터베이스(또는 스키마) 라고 부릅니다.

(Ex. 학교 정보 데이터베이스 예시 : 2학년 전체의 데이터베이스)

 

그리고 가장 큰 개념인 여러 데이터베이스를 하나로 묶은 것을 데이터베이스 서버 라고 부릅니다.

(Ex. 학교 정보 데이터베이스 예시 : 수곡초등학교 학생들의 데이터베이스)

 

MySQL에서는 테이블과 데이터베이스에 접근하는 명령어가 모두 다르기 때문에, 테이블 ⊂ 데이터베이스 ⊂ 데이터베이스 서버 로 관계가 형성된다는 정도만 알아두시면 될 듯 합니다.

2. MySQL - DDL (Data Definition Language)

DDL이란 관계형 데이터베이스와 테이블을 생성, 변경, 삭제해 데이터를 저장할 구조를 정의하는 명령어입니다.

오늘은 CREATE, ALTER, DROP, USE 등의 기본적인 DDL을 다뤄보도록 하겠습니다! 

들어가기 전에!

  • 통념적으로 활용되는 "데이터베이스" 라는 표현은 "DB" 라고 표현하였으며, 이외에는 테이블데이터베이스를 구분합니다.
  • MySQL은 키워드와 구문에서 대소문자를 구분하지 않습니다. (단, 둘 중 하나로 통일하는 것을 권장합니다.)
  • MySQL 구문 뒤에는 세미콜론(;) 을 붙입니다.
# 단, DB 이름은 대소문자를 구분합니다.

1. SELECT * FROM School;

2. select * from School;

3. SeLeCt * FrOm School;

2. 1. 데이터베이스 생성 & 삭제하기 - CREATE DATABASE, DROP

CREATE 구문을 사용해 새로운 데이터베이스를 생성할 수 있습니다.

CREATE DATABASE Class; # Class 데이터베이스 생성

+ 생성한 DB 목록은 SHOW 구문을 통해 확인할 수 있습니다.

[좌 - SHOW DATABASES / 우 - SHOW TABLES]

만약 DB를 삭제해야 한다면 DROP 구문을 사용할 수 있습니다.

# DROP DATABASE or TABLE (DB명)
DROP DATABASE Class; # Class 데이터베이스를 삭제합니다.
DROP TABLE Student; # Student 테이블을 삭제합니다.

2. 2. 데이터베이스 선택하기 - USE

생성한 데이터베이스를 사용하기 위해서는 먼저 USE 구문으로 선택해야 합니다.

# USE (데이터베이스 이름)
USE Class; # Class 라는 이름의 데이터베이스 선택

# Database changed

2. 3. 테이블 생성하기 - CREATE TABLE

데이터베이스를 생성할 때는 CREATE DATABASE (데이터베이스 이름) 처럼 사용했지만, 테이블을 생성할 때는 내부 데이터(필드)의 이름과 형식을 지정해줘야 합니다. (※ 타입에 대해서는 다음에 자세하게 다룰 예정이니, 우선은 테이블 생성 구문에만 집중해주셔도 됩니다!)

# name, age, birth 필드를 갖는 테이블을 생성합니다.
CREATE TABLE Student (name varchar(20), age varchar(2), birth date);

테이블을 생성한 모습

생성한 테이블의 필드 목록은 DESCRIBE 구문으로 조회할 수 있습니다.

테이블의 필드 조회 결과

2. 4. DB 수정하기 - ALTER

ALTER 구문을 통해 데이터베이스의 인코딩 설정, 콜레이션(검색, 정렬 등에 사용되는 비교 규칙)과 테이블의 필드를 수정할 수 있습니다.

데이터베이스 수정

# Class 데이터베이스의 문자 인코딩을 utf-8로 설정합니다.
ALTER DATABASE Class CHARACTER SET=utf8; 

# Class 데이터베이스의 콜레이션을 utf8_bin으로 설정합니다.
ALTER DATABASE Class COLLATE utf8_bin;
  • 자주 사용하는 인코딩 설정 : utf8(utf-8 유니코드 지원 / 1 ~ 3바이트), euckr(한글을 지원 / 1 ~ 2바이트)
  • 자주 사용하는 콜레이션 설정 : utf8_bin, euckr_bin, utf8_general_ci, euckr_korean_ci

테이블 수정

ALTER 구문으로 테이블을 수정할 때는 필드의 추가 / 삭제 / 타입 수정이 가능합니다.

# Student 테이블에 varchar형 score 필드를 추가합니다.
ALTER TABLE Student ADD score varchar(20);

ALTER ADD를 통해 새로운 필드를 추가한 모습입니다.

# Student 테이블의 score 필드를 삭제합니다.
ALTER TABLE Student DROP score;

# Student 테이블의 score 필드를 INT형으로 변경합니다.
ALTER TABLE Student MODIFY COLUMN score INT;

[좌 -> 우] score 필드의 타입을 varchar(20) 에서 int로 변경한 모습입니다.

2. 5. 테이블 삭제하기 - DROP, TRUNCATE

DROP 구문을 통해 테이블과 데이터베이스를 삭제할 수 있습니다.

또, TRUNCATE 구문을 사용하면 테이블은 유지한 채 테이블의 데이터만을 모두 삭제할 수도 있습니다.

DROP TABLE Student; # Student 테이블을 삭제합니다.
TRUNCATE TABLE Student; # Student 테이블의 데이터만을 삭제합니다.

이것으로 DB를 생성, 삭제할 수 있게 되었는데요, 다음 번에는 DB의 데이터를 직접 조작해보도록 하겠습니다. 😁

 

반응형

'💾 DB & ORM > MySQL' 카테고리의 다른 글

MySQL - 01. MySQL 설치하기 (Mac 환경)  (0) 2021.04.14
Comments
소소한 팁 : 광고를 눌러주시면, 제가 뮤지컬을 마음껏 보러다닐 수 있어요!
와!! 바로 눌러야겠네요! 😆