( 참고 : “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
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)