DB, 테이블 생성(+조건), 테이블 구조 확인

ossap·2022년 5월 27일
0

DB 생성 및 접속

1.DB 생성 -> 접속

샘플 데이터 셋들을 넣어 언제든 연결해 사용할 수 있도록 db를 만들었다.
(이름...sample_data_sets로 할걸 ㅎ 맨 마지막에 수정하겠다)

1) 코드

CREATE DATABASE example_data_sets;

USE exaple_data_sets;

테이블 생성 및 확인

1. 테이블 생성

1) 데이터 확인

CSV 파일 확인해서 넣을 데이터와 모양이 맞도록 테이블을 만들어야 함.
CSV 데이터의 모양은 이렇다.

✅ 컬럼명과 특징


이 사진처럼 테이블 내의 열을 조건에 맞게 만들어 보자.

2) 코드


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글자 내에 끝난다면 자르는것도 방법이라고 하셨다. 맞다. 전체적인 그림을 보며 설계해야겠다!

    그리고 이렇게 하나하나 쿼리로 적지 않고 웹으로 관리할수 있는것도 있다고 찾아보라고 미션을 주심..! 다음 포스팅 내용이 될 듯 하다!

2. 테이블 확인

1) 코드


DECS 테이블명

이렇게 테이블이 만들어 진 것을 확인할 수 있다.





테이블 안에 csv 파일 넣기는 다음 포스팅에서..!


참고사이트
제타위키 - MySQL 테이블 구조 보기 DESCRIBE
Dev.log 블로그 - [MySQL] 003# MySQL 데이터 타입 (자료형) 정리
martin님 블로그 - MYSQL 데이터 타입

profile
오삽 : 오늘도 삽질

0개의 댓글