( 참고 : “FastCampus, 데이터 엔지니어링 올인원” )

[ Data Engineering ]

MySQL


MySQL DB안에서 테이블 생성하기

(Step 1) Terminal에서, MySQL에 접속하기

  • mysql -h (endpoint) -P (port) -u (내 id=lee) - p & (비번 입력)
  • 한번에 db까지 정해서 접속하는 방법 :
    • mysql -h (endpoint) -P (port) -D (db명) -u (내 id) - p & (비번 입력)


(Step 2) 어떠한 DB들이 있는지 확인

  • SHOW DATABASES;


(Step 3) DB 생성하기 & 해당 DB 사용(지정) 하기

  • CREATE DATABASE production;
  • USE production;


(Step 4) Table 생성하기

  • CREATE TABLE people (first_name VARCHAR(20), last_name VARCHAR(20), age INT);


ERD of Spotify Model

figure2


Preparation

(1) Table 생성하기

  • artist 테이블

CREATE TABLE artists (id VARCHAR(255), name VARCHAR(255), followers INTEGER, popularity INTEGER, url VARCHAR(255), image_url VARCHAR(255), PRIMARY KEY(id)) ENGINE=InnoDB DEFAULT CHARSET='utf8'


  • artists genre 테이블

CREATE TABLE artists_genres (artist_id VARCHAR(255), genre VARCHAR(255)) ENGINE = InnoDB DEFAULT CHARSET='utf8'


  • 생성된 테이블 확인하기

SHOW CREATE TABLE artist_genres;


(2) data 넣기

INSERT INTO artist_genres (artist_id, genre) VALUES ('1234','pop');

INSERT INTO artist_genres (artist_id, genre) VALUES ('1234','pop');

  • 이걸 자동으로, 지속적으로 일정 주기로 data가 추가되도록 해야!


INSERT INTO의 문제?

  • 중복되는 id가 있으면, error!

  • UPDATE 사용

    UPDATE artist_genres SET genre='pop' WHERE artist_id = '1234'

  • INSERT IGNORE 사용

  • 없으면 추가, 있으면 무시

  • INSERT INTO ~ ON DUPLICATE KEY

    • INSERT INTO artist_genres (artist_id, genre,country) VALUES ('1234','rock','FR) ON DUPLICATE KEY UPDATE artist_id='1234', genre='rock', country='FR' ;


(3) column 추가

ALTER TABLE artist_genres ADD COLUMN country VARCHAR(255)

ALTER TABLE artist_genres ADD COLUMN updated_at TIMESTAMP DEFAULT CURRENT_TIMEESTAMP ON UPDATE CURRENT_TIMESTAMP

  • updated_ at : 이 테이블이 언제 update되었는지 알기 위해 (time stamp)