샘플 데이터 셋들을 넣어 언제든 연결해 사용할 수 있도록 db를 만들었다.
(이름...sample_data_sets로 할걸 ㅎ 맨 마지막에 수정하겠다)
CREATE DATABASE example_data_sets;
USE exaple_data_sets;
CSV 파일 확인해서 넣을 데이터와 모양이 맞도록 테이블을 만들어야 함.
CSV 데이터의 모양은 이렇다.
이 사진처럼 테이블 내의 열을 조건에 맞게 만들어 보자.
CREATE TABLE furniture_sales_2021(
order_id INT PRIMARY KEY,
order_num VARCHAR(13) NOT NULL,
order_date DATE,
delivery_date DATE,
delivery_type VARCHAR(5),
customer_num VARCHAR(8),
customer_name VARCHAR(10),
customer_seg VARCHAR(6),
place_gu VARCHAR(8),
place_si VARCHAR(8),
place_country VARCHAR(4),
place_area VARCHAR(4),
product_code VARCHAR(15),
product_seg VARCHAR(8),
product_sub_seg VARCHAR(10),
product_name VARCHAR(255),
revenue DOUBLE,
quantity MEDIUMINT UNSIGNED DEFAULT 1 NOT NULL,
discount_rate DECIMAL(3,2),
profit DECIMAL(20,3)
);
order_id INT PRIMARY KEY : '고유 ID' 컬럼, 정수형, 중복되지않는 유일한 PRIMARY KEY
order_num VARCHAR(13) NOT NULL : '주문 번호' 컬럼, 13자리로 구성된 문자(ex : ID-2020-32523), null 불가
order_date DATE : '주문 일자' 컬럼, 날짜형
delivery_date DATE : '배송 일자' 컬럼, 날짜형
delivery_type VARCHAR(5) : '배송 방법' 컬럼, 최대 5글자 문자형(ex : 표준 배송)
customer_num VARCHAR(8) : '고객번호' 컬럼, 최대 8글자 문자형(ex : JC-15340)
customer_name VARCHAR(10) : '고객명' 컬럼, 최대 10글자 문자형
customer_seg VARCHAR(6) : '고객 세그먼트' 컬럼, 최대 6글자 문자형(ex : 기업 고객)
place_gu VARCHAR(8) : '시군구' 컬럼, 최대 8글자 문자형(ex : 제주시)
place_si VARCHAR(8) : '시도' 컬럼, 최대 8글자 문자형(ex : 제주특별자치도)
place_country VARCHAR(4) : '국가' 컬럼, 최대 4글자 문자형(모두 '대한민국'임)
place_area VARCHAR(4) : '지역' 컬럼, 최대 4글자 문자형(ex : 수도권)
product_code VARCHAR(15) : '제품 코드' 컬럼, 최대 15글자 문자형(ex : OFF-TF-1003920)
product_seg VARCHAR(8) : '제품 대분류' 컬럼, 최대 8글자 문자형(ex : 사무기기)
product_sub_seg VARCHAR(10) : '제품 중분류' 컬럼, 최대 10글자 문자형(ex : 일반 사무용품)
product_name VARCHAR(255) : '제품명' 컬럼, 최대 255글자 문자형(제품의 영어 full name)
revenue DOUBLE : '매출' 컬럼, DOUBLE형
quantity MEDIUMINT UNSIGNED DEFAULT 1 NOT NULL : '수량' 컬럼, Medium int형, 번호 없을시 기본값 1개, null 불가
discount_rate DECIMAL(3,2) : '할인율' 컬럼, Decimal형(정수부분 3자리,소수점 이하 2자리까지)
profit DECIMAL(20,3) : '수익' 컬럼, Decimal형(정수부분 20자리, 소수점 이하 3자리까지)
위에서 쓰인 자료형 중 Medium INT나 decimal 관련은 여기에 잘 정리되어 있다.
(포스팅 최하단에도 정리되어 있음.)
만들고보니... REVENUE도 DECIMAL로 수정해야겠다...
사실 쓰면서 느꼈지만, 중간에 엔터 치고난 후 위로 다시 돌아가는 법을 못찾겠다 ㅠㅠ (아시는 분 알려주세요)
- 피드백 받은 내용 :
만들고 상사분께 보여드렸는데, 컬럼별 너무 용량이 많은 것 같다 하시면서, 이게 한 레코드당 byte도 생각하고, 그게 총 얼마나 쌓일지, 어느 주기로 테이블을 리프레쉬할지도 생각해야 한다고 하셨다.
varchar가 그냥 가변이라 유동적인 저장이 될거라 생각했는데 ㅠㅠ... 그만큼 용량도 버릴 수 있는 점을 고려해야한다..
이름도 외국인까지 고려하면 20byte까지도 줄 수 있지만, 95%가 한국인이고 4글자 내에 끝난다면 자르는것도 방법이라고 하셨다. 맞다. 전체적인 그림을 보며 설계해야겠다!
그리고 이렇게 하나하나 쿼리로 적지 않고 웹으로 관리할수 있는것도 있다고 찾아보라고 미션을 주심..! 다음 포스팅 내용이 될 듯 하다!
DECS 테이블명
이렇게 테이블이 만들어 진 것을 확인할 수 있다.
테이블 안에 csv 파일 넣기는 다음 포스팅에서..!
참고사이트
제타위키 - MySQL 테이블 구조 보기 DESCRIBE
Dev.log 블로그 - [MySQL] 003# MySQL 데이터 타입 (자료형) 정리
martin님 블로그 - MYSQL 데이터 타입