Notice
Recent Posts
Recent Comments
Link
«   2026/07   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

어리바리 신입 개발자의 얼렁뚱땅 개발 기록 ✨

23.05.15 / 데이터 타입 본문

Database/MYSQL

23.05.15 / 데이터 타입

낫쏘링 2023. 5. 15. 10:33
728x90

[ 데이터 타입 ]

데이터 타입의 종류가 많은 이유 : 실제 저장되는 데이터 타입이 다양 -> 데이터에 맞는 타입 지정하면 데이터를 효율적으로 저장할 수 있기 때문

RDBMS는 테이블 구조 : 데이터들이 DB서버의 공간을 계속 차지 -> 저장 공간을 효율적으로 사용하는 것이 중요

0~999 6자리

데이터베이스도 낭비를 줄이기 위해 용량을 생각하여 데이터 타입을 지정해야 한다.

크게 문자형, 숫자형, 날짜형으로 나뉘고 실제 저장되는 데이터 타입은 더 다양하다.

각 데이터에 맞는 타입을 지정해서 효율적으로 저장할 수 있다.

 

[ 숫자형 ]

- 자주 사용 : SMALLINT, INT, BIGINT, FLOAT

*UNSIGNED 예약어

예) 키 데이터를 삽입하는 컬럼
SMALLINT : 대략 범위 -3만 ~ 3만 / 사람 키 3만 절대 안 됨 - SMALLINT 사용하면 비효율적
TINYINT : 범위 -128 ~ 127 / 키가 127 넘으면 범위 부족함 - UNSIGNED 붙여서 범위 변경 가능
TINYINT UNSIGNED (TINYINT 뒤에 UNSIGNED를 붙이면 범위가 -128 ~ 127 에서 0 ~ 255로 바뀜)

 

[ 문자형 ]

- 자주 사용 : CHAR, VARCHAR, LONGTEXT, LONGBLOB

1.CHAR : CHARACTER의 줄임말, 고정되어 있는 고정 길이 문자형.
2. VARCHAR : variable CHAR - 가변 길이 문자형 (variable - 변수)

예) 입력 데이터 '바나나' 
CHAR(5)  : 바나나__
VARCHAR(5)  : 바나나
VARCHAR를 사용하면 공간을 더 효율적으로 사용할 수 있는 장점이 있지만, 불필요하게 많이 작성한 VARCHAR의 길이 값이 성능을 저하시킬 수 있음. - 글자의 개수가 정해져있으면 CHAR를 사용하는 것이 좋다.

*CHAR로 되어 있는 데이터가 조회할 때 내부적으로 더 좋은 성능을 가진다.
3. BLOB(Binary Large Object) : 사진 파일, 동영상 파일, 문서 파일과 같은 데이터를 저장하는데 사용
MySQL에서는 대량의 데이터를 저장하기 위해 LONGTEXT, LONGBLOB 타입을 지원. 약 4GB 크기의 파일을 하나의 데이터로 저장할 수 있다.

* 데이터가 숫자로서의 의미를 가지는 경우
   +, - 연산에 의미가 있어야 한다.
   크다, 작다와 같은 비교 가능

 

[ 날짜 데이터 형식 ]

- DATE, DATETIME

- 날짜와 시간을 입력할 때에는 문자와 동일하게 작은 따옴표로 묶어서 작성한다.

DATE : 날짜 저장 / TIME : 시간만 저장 / DATETIME : 날짜, 시간 저장

TIMESTAMP : 날짜, 시간 저장 - DATETIME과 다르게 시간대의 영향을 받는다. (DB서버에 저장되는 시간에 따라서 다르게 저장)

예) 구매 테이블에서 기록이 필요할 때 DATETIME 사용

 

[ 기타 ]

JSON : JSON 문서를 저장

GEOMETRY : 공간 데이터 형식 - GIS 프로젝트에서 사용.

예) 전주천 -> CHAR 작성
하천의 좌표갑 작성 -> GEOMETRY 타입으로 저장
공간 데이터 함수를 함께 사용한다.

 

[ 데이터의 형변환]

명시적 형변환 : 내가 직접 함수를 사용해서 변환
- CAST(갑 AS 데이터_형식[(길이)]) / CONVERT(값, 데이터_형식[(길이)]) : 형식만 다르고 같은 기능을 함
SELECT CAST('2023$05$15' AS DATE);
SELECT CAST('2023/05/15' AS DATE);
SELECT CAST('2023#05#15' AS DATE);

SELECT CONVERT('2023!05!15', DATE);
SELECT CONVERT('2023*05*15', DATE);
SELECT CONVERT('2023%05%15', DATE);

-- 전부 2023-05-15 반환​
암시적 형변환 : 별도의 작업 없이 자연스럽게 변환

 

728x90