파일로 실행하는 SQL: mysql CLI 명령어

이해하기 쉽고, 장황하지 않은 자료를 기반으로 강의를 진행합니다.
잔재미코딩 소식 공유
좀더 제약없이, IT 컨텐츠를 공유하고자, 자체 온라인 사이트와, 다음 두 채널도 오픈하였습니다
응원해주시면, 곧 좋은 컨텐츠를 만들어서 공유하겠습니다
●  잔재미코딩 뉴스레터 오픈 [구독해보기]
●  잔재미코딩 유투브 오픈 [구독해보기]

2. 파일로 실행하는 SQL: mysql CLI 명령어

  • mysql 데몬 띄우기
    • 데몬(daemon)은 사용자가 직접적으로 제어하지 않고, 백그라운드에서 돌면서 여러 작업을 하는 프로그램을 말함
    • 백그라운드, 포그라운드 이해하기
      • 포그라운드: 사용자가 입력한 명령이 실행되어 결과가 출력될때 까지 기다리는 프로그램
      • 백그라운드:
        • 포그라운드 작업은 명령을 한 번에 하나씩 실행하므로 동시에 여러 개의 프로세스를 실행할 수 없음
        • 작업 제어가 제공하는 백그라운드 기능을 사용하면 앞에서 프로세스가 실행되는 동안 뒤에서 다른 프로세스가 실행될 수 있으므로 한 터미널에서 여러 개의 프로세스를 동시에 실행 가능
        • 프로그램을 뒤에서 실행되도록 하는 방식
    • mysql 데몬도 띄워놓아야 mysql 접속이 가능함
      • sudo service mysql start

shell> cd /root/DataScience

shell> mysql -u root -p

shell> SOURCE students.sql

shell> show tables;

shell> select * from students;

2.1. 파일로 실행하는 SQL : (Workbench) 03_data\student\student_schema.sql

  • DATABASE 생성시도 아예 인코딩을 설정해주세요

2.1.1 데이터베이스/테이블 만들기 ( 03_data\student\student_schema.sql 코드 이해하기)

  • DATABASE 만들때도 인코딩을 셋팅해주세요
    • DEFAULT CHARSET=utf8 COLLATE=utf8_bin
  • 문자셋(Character set)은 각 문자가 컴퓨터에 저장될 때 어떠한 '코드'로 저장될지에 대한 규칙의 집합을 의미
  • 콜레이션(Collation)은 특정 문자 셋에 의해 데이터베이스에 저장된 값들을 비교 검색하거나 정렬 등의 작업을 위해 문자들을 서로 '비교' 할때 사용하는 규칙들의 집합을 의미
In [ ]:
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;
본 자료와 같이 IT 기술을 잘 정리하여, 온라인 강의로 제공하고 있습니다
체계적으로 전문가 레벨까지 익힐 수 있도록 온라인 강의 로드맵을 제공합니다
  • ENGINE=InnoDB : 스토리지 엔진이 여러 가지 있습니다. 이 중에서 InnoDB로 스토리지 엔진을 정해주는 명령입니다. 이 명령을 안해줘도 최근 Mysql 버전은 디폴트로 엔진을 InnoDB를 쓴다고 합니다.
  • 테이블을 만들때도 DEFAULT CHARSET=utf8 인코딩을 해주세요

2.1.2 데이터 입력 : 03_data\student\student_schema.sql 코드 이해하기

In [ ]:
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.1.3 students.sql 파일로 SQL 실행하기

  • Mysql Workbench

    • File -> Open SQL Script -> 03_data/sakila/students.sql
  • Mysql CLI 명령으로는 students.sql 복사 후, mysql 실행해서 SOURCE 명령으로 sql 실행