Table 만들기
Last updated
Last updated
이번 시간은 테이블 만드는 법 & 데이터 타입을 알아봅시다.
여러분이 마트에서 일하는 개발자라 생각하고
마트 상품데이터를 db에 저장해봅시다.
하나의 databse 가 폴더 table은 파일이라고 인식하면 편할듯.
database는 서비스당 하나 (항상 그런건 아님)를 만들고 그안에 테이블을 여러개 두는식으로 하면된다.
우리는 scott 라는 데이터 베이스를 만들었고
테이블 우클릭 후 Create New Table 클릭
우측 상단에서 접속한 Connection 과 스키마 확인!
테이블이 만들어 졌으면 이름을 product로 지정하고
컬럼탭에서 우클릭 후 Create New Column 클릭 하면 컬럼 만들 수 있음
마트에 파는 상품이 이런 데이터를 가졌다고 가정하면 총 4개의 컬럼을 만들어주면 될듯?
아래처럼 4개의 컬럼을 만들고 타입을 지정하고 저장하면
이러한 창이 뜨고 persist 클릭하면 테이블이 생성된다.
column을 만들 때 data type을 명시하게 되어있는데
data type은 데이터의 종류라는 뜻입니다.
문자, 숫자, 소수, 시간, 참거짓여부 등 여러 종류가 있습니다.
data type
저장가능한양
특징
CHAR
0~255자
CHAR(숫자)로 최대용량 지정가능
VARCHAR
0~65535자
VARCHAR(숫자)로 최대용량 지정가능
TEXT
0~65535자
TINYTEXT
0~255자
MEDIUMTEXT
0~1600만자
LONGTEXT
0~42억자
문자를 저장하고 싶으면 이것 중에 고르면 됩니다.
VARCHAR를 가장 많이 쓰니까 문자 저장하고 싶으면 대충 그거 선택해서 쓰면 됩니다.
가끔 블로그 글이라든지 긴 글을 저장하고 싶으면 MEDIUMTEXT 이런거 쓰는 경우가 있습니다. (BLOB 형태로 저장됩니다)
(참고1)
VARCHAR(300) 이렇게 해놓고 나중에 10자만 저장한다고 해도 300자만큼 하드용량을 차지하는게 아닙니다.
실제 넣은 10자 + 1byte 만큼 용량을 차지합니다.
(글자가 256자 이상이면 + 1byte 말고 + 2byte 입니다)
(참고2)
CHAR(10) 이렇게 해놓으면 나중에 10자만 저장하면 딱 10자만큼 용량을 차지합니다.
다만 5자만 저장해도 10자만큼 용량을 차지합니다.
항상 고정된 크기의 글자가 필요한 경우 CHAR쓰는게 성능상 이점이 있을 수 있습니다.
근데 그런 경우는 매우 드물고 체감도 별로 되진 않습니다.
data type
저장가능한양
특징
SMALLINT
-32768 ~ 32767
MEDIUMINT
-838만 ~ 838만
INT
-21억 ~ 21억
BIGINT
-900경 ~ 900경
FLOAT
-10^38 ~ 10^38
소수점 7자리까지 저장가능 (약간의 오차발생함)
DOUBLE
-10^308 ~ 10^308
소수점 14자리까지 저장가능 (약간의 오차발생함)
DECIMAL
소수점 30자리 포함 최대 65자리
오차없이 소수점 저장가능
숫자를 저장하고 싶으면 이것 중에 고르면 됩니다.
언제나 예상하는 숫자보다 더 큰 숫자가 들어올 수 있으니 잘 생각해서 고릅시다.
FLOAT, DOUBLE, DECIMAL은 소수점이 들어있는 숫자를 저장가능합니다.
다만 FLOAT, DOUBLE은 성능은 괜찮으나 정확도가 낮을 수 있습니다.
(참고1) ORACLE에서는 INTEGER 저장 시 자동으로 NUMBER 형식으로 변환해준다.
NUMBER(p, s)
p : precision, 여기서는 최대 유효숫자 자릿수를 의미한다.
s : scale, 소수점 기준 자릿수를 의미한다.
기본값이 NUMBER(38,0) => 38자릿수의 정수
(참고2) 넣는 숫자가 커진다고 DB용량을 더 차지하고 그런거 아닙니다.
INT로 만들어놨으면 데이터 1개 당 무조건 4byte를 차지합니다.
SMALLINT는 2byte, BIGINT는 8byte임
data type
저장가능한양
특징
DATE
1000년 ~ 9999년
YYYY-MM-DD 형식으로 날짜저장가능
TIME
-839 ~ +838시간
HH:MM:SS 형식으로 시간의 양 저장가능
TIMESTAMP
1970년 ~ 2038년
YYYY-MM-DD HH:MM:SS.FF4
(소숫점 4자리까지 표현)
이거 말고도 영상, 사진같은 바이너리 데이터는 BLOB,
JSON 형식은 JSON,
참거짓 여부는 BOOLEAN 이런거 사용합니다.
자주 안쓰니 이런 것들이 있다고만 알아둡시다.
Oracle, MySQL, Postgresql 등 DBMS 종류마다 저장할 수 있는 타입이 다릅니다.
예를 들면 Postgresql은 확장기능 설치하면 유저 GPS 좌표정보도 저장가능합니다.
그래서 당근마켓 이런데서 이용하고 있습니다.
물론 다른 DB에서도 대충 숫자나 문자로 바꾸면 저장가능