일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 개발
- React
- Android
- 리액트
- MVVM
- 리액트네이티브
- reactnative
- OS
- cs
- 디자인 패턴
- github
- 액티비티
- 운영체제
- 앱개발
- Operating System
- 데이터베이스
- Database
- 안드로이드 디자인 패턴
- 프로세스
- 앱 개발
- 스레드
- 앱
- 안드로이드 개발
- db
- 메모리
- CS지식
- Kotlin
- 코틀린
- 안드로이드
- 디자인패턴
- Today
- Total
Tech Log
[DataBase] 필드 타입 본문
필드는 타입을 갖는다.
타입은 DBMS마다 다르다.
MySQL 타입으로 설명을 하면 다음과 같다.
숫자 타입
타입 | 용량(바이트) | 최솟값(부호 있음) | 최솟값(부호 없음) | 최댓값(부호 없음) | 최댓값(부호 있음) |
TINYINT | 1 | -128 | 0 | 127 | 255 |
SMALLINT | 2 | -32768 | 0 | 32767 | 65535 |
MEDIUMINT | 3 | -8388608 | 0 | 8388607 | 16777215 |
INT | 4 | -2147483648 | 0 | 2147483647 | 4294967295 |
BIGINT | 8 | -263 | 0 | 263-1 | 264-1 |
TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT 등이 있다.
숫자 타입은 용량에 따라 나뉜다.
날짜 타입
DATE
시간 없이 날짜만 나타낼 때 사용된다.
지원 범위는 1000-01-01~9999-12-31
3바이트의 용량을 가진다.
DATETIME
날짜 및 시간을 모두 포함하는 값에 사용된다.
범위는 1000-01-01 00:00:00 ~ 9999:12-31 23:59:59
8바이트의 용량을 가진다.
TIMESTAMP
날짜 및 시간을 모두 포함하는 값에 사용된다.
범위는 1970-01-01 00:00:01 ~ 2038-01-19 03:14:07
4바이트의 용량을 가진다.
TIME
시간을 나타낼 때 사용된다.
범위는 -838:59:59 ~ 838:59:59
범위를 초과할 시 -838:59:59 이나 838:59:59로 자동 변환되어 저장된다.
유효하지 않은 시간은 00:00:00 으로 저장된다.
문자 타입
CHAR
그 안에 수를 입력해서 몇 자까지 입력할지 정한다.
테이블을 생성할 때 선언한 길이로 고정된다.
길이는 0~255 사이의 값을 가진다.
레코드를 저장할 때 무조건 선언한 길이로 고정해서 저장된다.
VARCHAR
CHAR과 마찬가지로 몇 자 입력할지 정한다.
다만 VARCHAR는 가변 길이 문자열이다.
길이는 0~65,535 사이의 값을 가진다.
입력된 데이터에 따라 용량을 가변시켜 저장한다.
10글자의 이메일을 저장할 경우, VARCHAR(10000)이라고 선언을 해도
10글자에 해당하는 바이트 + 길이 기록용 1바이트로 저장하게 된다.
CHAR은 유동적이지 않은 길이를 가진 데이터에 효율적이고
VARCHAR은 유동적인 길이를 가진 데이터를 저장할 때 사용한다.
TEXT
큰 데이터의 문자열을 저장할 때 사용한다.
주로 게시판의 본문을 저장할 때 사용한다.
BLOB(Binary Large Object)
이미지, 동영상 등 큰 데이터 저장에 사용한다.
ENUM
문자열을 열거한 타입이다.
열거한 요소 중 하나만 선택할 수 있다.
ENUM 리스트에 없는 잘못된 값을 삽입하면 빈 문자열이 대신 삽입된다.
최대 65,535개의 요소를 넣을 수 있다.
SET
ENUM과 마찬가지로 문자열을 열거한 타입이다.
SET은 ENUM과 다르게 여러 개의 데이터를 선택할 수 있다.
비트 단위의 연산을 할 수 있으며
최대 64개의 요소를 집어넣을 수 있다.
ENUM과 SET을 사용하면 공간적으로 이점(메모리를 적게 사용)을 볼 수 있으나
애플리케이션의 수정에 따라 데이터베이스의 ENUM이나 SET에서 정의한 목록을 수정해야 한다.
참조
- 주홍철, 면접을 위한 CS 전공지식 노트, 길벗(2022)
'Computer Science > DataBase' 카테고리의 다른 글
[DataBase] 정규화(Normalization) (0) | 2023.02.18 |
---|---|
[DataBase] ERD(Entity Relationship Diagram) (0) | 2023.02.17 |
[DataBase] 키(Key) (0) | 2023.02.14 |
[DataBase] 데이터베이스 관계(Relationship) (0) | 2023.02.13 |
[DataBase] 데이터베이스의 구성 (0) | 2023.02.13 |