기록과 정리의 공간

[MySQL] (20200820) TIL 본문

DATABASE/MySQL

[MySQL] (20200820) TIL

딸기맛도나쓰 2020. 8. 20. 23:59

TIL - 인프런 강의를 듣고 공부한 내용을 정리(강의 링크)

  • 공부한 내용
    1. SQL파일로 SQL명령 실행하기
    2. 파일로 데이터 한 번에 입력하기

1. SQL파일로 SQL명령 실행하기

  • 방법1 : Workbench실행 - File - Open SQL Script - 원하는 sql파일(.sql파일)
  • 방법2 : Mysql 터미널에서 SOURCE명령 사용
    • .sql파일 위치가 터미널 명령을 실행하는 동일 디렉토리에 있다면 SOURCE 파일명.sql명령 입력
    • 위의 경우가 아니라면, .sql 파일이 위치하는 경로를 전부 명시해줘야함.
(예시)
SOURCE /Users/hong/파일명.sql
  • .sql 샘플 파일
    • DB 및 테이블 생성 시에 반드시 DEFAULT CHARSET=utf8로 인코딩해주도록 하자.
    • ENUM타입 : ()안에 지정된 값만 저장 가능하다. 아래 코드에서는 'man'과 'woman' 두 가지 중 하나의 값만 gender컬럼에 저장할 수 있다.
    • ENGINE=InnoDB : 스토리지 엔진을 InnoDB로 지정하기 위한 명령. 최근 Mysql버젼은 InnoDB가 디폴트 엔진으로 지정되어 있기 때문에 굳이 명시해주지 않아도 된다고 한다.
DROP DATABASE IF EXISTS student_mgmt;
CREATE DATABASE student_mgmt DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

USE student_mgmt;
DROP TABLE IF EXISTS students;
CREATE TABLE students (
  id TINYINT NOT NULL AUTO_INCREMENT,
  name VARCHAR(10) NOT NULL,
  gender ENUM('man','woman') NOT NULL,
  birth DATE NOT NULL,
  english TINYINT NOT NULL,
  math TINYINT NOT NULL,
  korean TINYINT NOT NULL,
  PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO students (name, gender, birth, english, math, korean) VALUES ('dave', 'man', '1983-07-16', 90, 80, 71);
INSERT INTO students (name, gender, birth, english, math, korean) VALUES ('minsun', 'woman', '1982-10-16', 30, 88, 60);
INSERT INTO students (name, gender, birth, english, math, korean) VALUES ('david', 'man', '1982-12-10', 78, 77, 30);
INSERT INTO students (name, gender, birth, english, math, korean) VALUES ('jade', 'man', '1979-11-1', 45, 66, 20);
INSERT INTO students (name, gender, birth, english, math, korean) VALUES ('jane', 'man', '1990-11-12', 65, 32, 90);
INSERT INTO students (name, gender, birth, english, math, korean) VALUES ('wage', 'woman', '1982-1-13', 76, 30, 80);
INSERT INTO students (name, gender, birth, english, math, korean) VALUES ('tina', 'woman', '1982-12-3', 87, 62, 71);

2. 파일로 테이블에 데이터 한 번에 입력하기

  • 파일을 이용하면 INSERT구문을 사용하지 않고 데이터를 한 번에 테이블에 입력할 수 있다.

  • .csv파일 형식으로 데이터를 작성한다. (csv파일이란?)

    • 파일 저장 시에 반드시 유니코드로 저장해야하고, 파일명 뒤에 .csv를 붙여서 저장하도록 하자.
    (.csv파일 예시 - id컬럼은 auto_increment이므로 제외함)
    name, gender, birth, english, math, korean
    'andy', 'man', '1920-12-01', 100, 60, 95
    'olivia', 'woman', '1930-08-20', 70, 80, 90
    'jane', 'woman', '1928-07-10', 100, 100, 100
    'malcom', 'man', '1932-02-25', 20, 30, 85
    'peter', 'man', '1935-01-08', 65, 90, 95
    'sujin', 'woman', '1922-10-10', 90, 80, 70
    'mandy', 'woman', '1919-03-28', 70, 100, 90
  • 방법1 : Workbench 이용

    • 아래 이미지들 이후의 과정은 계속 next 누르다가 최종적으로 finish버튼 누르면 됨.


  • 방법2 : MySQL 터미널에서 아래 명령 사용 (현업에서는 이 방법을 많이 사용)

LOAD DATA INFILE '풀경로/파일명.csv' INTO TABLE db명.테이블명 (컬럼명1, 컬럼명2, ....);

(예시)
LOAD DATA INFILE '/Users/hong/파일명.csv' INTO TABLE student_mgmt.students (name, gender, birth, english, math, korean);

'DATABASE > MySQL' 카테고리의 다른 글

[MySQL] (20200829) TIL  (0) 2020.08.30
[MySQL] (20200827) TIL  (0) 2020.08.27
[MySQL] (20200808) TIL  (0) 2020.08.08
[MySQL] (20200807) TIL - 2  (0) 2020.08.07
[MySQL] (20200807) TIL - 1  (0) 2020.08.07
Comments