어리바리 신입 개발자의 얼렁뚱땅 개발 기록 ✨
23.05.15 / 데이터 타입 본문
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
'Database > MYSQL' 카테고리의 다른 글
| 23.05.15 / 내장 함수, MySQL 변수 (0) | 2023.05.15 |
|---|---|
| 23.05.15 / DBeaver(디비버) (0) | 2023.05.15 |
| 23.05.09 / SELECT, WHERE AND/OR , BTEWEEN, LIKE, CASE (0) | 2023.05.09 |
| 23.05.08 / DBMS (0) | 2023.05.09 |
| 23.04.04 / [select 쿼리 실행 - 리스트 출력] jsp - mysql 연결하기(JDBC) (0) | 2023.04.04 |