1. Data Type
1.1 Numeric
1.1.1 정수 타입 (Integer type)
MySQL은 SQL 표준정수 유형 및 SMALLINT, 표준 확장의 형태로서, 정수 유형을 지원함
아래는 각 정수 유형에 필요한 스토리지 및 범위임
Type | Storage (Bytes) | Minimum Value Signed | Minimum Value Unsigned | Maximum Value Sigend | Maximum Value Unsigned |
---|---|---|---|---|---|
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 | -2^63 | 0 | 2^63 -1 | 2^64 -1 |
1.1.2 고정 소수점 타입 (Fixed-Point-Types)
DECIMAL(M, D)
- M : 소수점을 포함한 전체 자리수
- D : 소수 부분자리수
1
2
ALTER TABLE user1
ADD COLUMN deci DECIMAL(5,2)
user1 테이블에 DECIMAL 데이터 타입인 deci 컬럼을 추가
DECIMAL(5, 2) : -999.99 ~ 999.99 까지 저장됨
1.1.3 실수(Floating-Point Types)
- 소수점을 나타내기 위한 데이터 타입으로 Flaot과 Double의 두가지 데이터 타입이 있음
- 두가지의 데이터 타입은 저장공간의 차이가 있음
- Float : 4byte
- Double : 8byte
1
2
FLOAT(M,D)
DOUBLE(M,D)
- 고정 소수점 타입으로 사용 가능
1.1.4 비트 값 타입 (Bit Value Type)
1
BIT(M)
- 0과 1로 구성되는 2진수(Binary) 데이터를 나타냄
1
BIT(5)
- 00000(2) ~ 11111(2) 까지 표현
1.2 Date & Time
Data Type | ‘Zero’ Value |
---|---|
Date | ‘0000-00-00’ |
Time | ‘00:00:00’ |
Datetime | ‘0000-00-00 00:00:00’ |
Timestamp | ‘0000-00-00 00:00:00’ |
Year | ‘0000’ |
1.2.1 Date
- 날짜를 저장하는 데이터 타입
- 기본포멧은 ‘년-월-일’
1.2.2 Time
- 시간을 저장하는 데이터 타입
- 기본포멧은 ‘시:분:초’
1.2.3 Datetime
- 날짜와 시간을 저장하는 데이터 타입
- 기본포멧은 ‘년-월-일 시:분:초’
1.2.4 Timestamp
- 날짜와 시간을 저장하는 데이터 타입
- Datetime과 다른점은 날짜를 입력하지 않으면 현재 날짜와 시간을 자동으로 저장할수 있는 특징이 있음
1.2.5 Year
- 연도를 저장할수 있는 데이터 타입
1
2
YEAR(2)
YEAR(4)
- Year(2) : 2자리의 연도를 저장
- Year(4) : 4자리의 연도를 저장
1.3 String
- Char : 고정 길이 문자열
- Varchar : 가변 길이 문자열
- Binary : Char이지만 바이너리 데이터를 가짐
- Varvinary : Varchar이지만 바이너리 데이터를 가짐
- Blob : 65535 byte를 Binary데이터에 유용, 기본값을 가질수 없음
- Text : Varchar와 비슷하지만 기본 값을 가질수 없으며, 크기가 큰 문자열을 저장할때 사용함
- Enum : 컬럼에 들어올수 있는 값을 지정해 줄수 있음, 데이터 용량을 적게 차지함
- Set : Enum처럼 컬럼에 들어올수 있는 값을 지정해 줄수 있으나 다른점은 Set은 여러개씩 선택이 가능함
1.3.1 Char & Varchar
- Char와 Varchar의 차이는 고정길이인가 가변길이인가의 차이다.
Value | CHAR(4) | Storage Required | Varchar(4) | Storage Required |
---|---|---|---|---|
’’ | ‘ ’ | 4bytes | ’’ | 1bytes |
‘ab’ | ‘ab ’ | 4bytes | ‘ab’ | 3bytes |
‘abcd’ | ‘abcd’ | 4bytes | ‘abcd’ | 5bytes |
‘abcdefgh’ | ‘abcd’ | 4bytes | ‘abcd’ | 5bytes |
- Char : 고정길이문자열로 입력되는 데이터의 크기가 작던 크던 선언한 크기 만큼 저장되며, 저장공간도 동일하게 사용, 선언한 크기보다 작은 데이터가 들어오면 남은 크기 만큼 공백으로 저장됨
- Varchar : 가변길이문자열로 입력되는 데이터의 크기에 따라 저장되는 공간 및 데이터가 다름
- 만일 모든 데이터의 크기가 비슷하다면 Char가 더 효율적이다 (byte 때문)
1.3.2 Text
- Char와 Varchar는 대체로 크기가 작은 문자열을 저장할때 사용되지만, 크기가 큰 문자열을 저장할때는 Text를 사용함
2. 제약조건(Constraint)
2.1 제약조건(Constraint)
- 데이터 베이스의 테이블을 생성할때 각 컬럼은 각각의 제약조건을 가질수 있음
- 컬럼의 규칙이라고 생각하면 됨
2.2 Not Null
- Not Null 제약 조건이 있는 컬럼에 Null(비어있는 값)을 저장할수 없음
2.3 Unique
- Unique 제약 조건이 있는 컬럼에 같은 값을 저장할수 없음, 중복 불가
2.4 Primary Key
- Not Null과 Unique의 제약조건을 동시에 만족함
- 하나의 테이블에 하나의 컬럼만 조건을 설정할수 있음
2.5 Foreign Key
- 외래키로, 다른 테이블과 연결되는 값이 저장됨
- 사원id 등
2.6 Default
- 데이터를 저정할때 해당 컬럼에 별도의 저장값이 없으면 Default로 설정된 값이 저장됨
2.7 Auto_Increment
- 자동으로 숫자를 1씩 증가시켜주는 기능
- 주로 테이블의 Primary key 데이터를 저장할때 사용함