[MySQL] DB DataType > db

본문 바로가기

db

[MySQL] DB DataType

페이지 정보

작성자 서방님 댓글 0건 조회 31회 작성일 13-10-07 17:29

본문

DB 테이블을 생성할때 데이터타입을 정의해주는 것은 아주 중요하다. 
연산이 필요한 데이터가 있을수도 있고 BLOB같이 많은 공간을 사용하는 데이터 타입은 비효율적일 수도 있다. 결국 DB의 저장과 효율을 높이기 위해서는 알맞는 데이터 타입을 사용할 필요가 있으며 테이블의 사이즈를 줄이고 데이터의 처리 속도를 향상시킬 수 있다.

예)
 열 이름 설명  예   적합한 데이터 타입 
 가격(price)  물건의 판매가   5678.39   DEC(6,2) 
 우편번호(zip_code)  5~10개의 문자   90210-0010   VARCHAR(10) 
 원자량(atomic_weight)  원소의 원자량
(소수점 6자리까지) 
 4.002602   DEC(10,6) 
 주석(comments)  용량이 큰 텍스트,
 255이상의 문자열 
 조, 나 주주총회에 있어. 시연을 보였는데 화면에 장난감 오리가 막 날라다니..   BLOB 
 갯수(quantity)  남아 있는 물건의 개수   239   INT 
 세율(tax_rate)   퍼센트(%)   3.755   DEC(5, 3) 
 책 제목(book_title)  문자열   Head First SQL   VARCHAR(50) 
 성별(gender)  M이나 F 중 하나의 문자   M   CHAR(1) 
 전화번호(phone_number)  열 자리 숫자, 구두점없이   2105552367   CHAR(10) 
 state  주를 나타내는 두 개의
 문자 
 TX, CA   CHAR(2) 
 기념일(anniversary)  월, 일, 년   11/22/2006   DATE 
 이긴 경기(game_won)  이긴 경기 수를 나타내는
 정수 
 15   INT 
 미팅 시간
 (meeting_time) 
 시간과 날짜   10:30 a.m. 4/12/2020   DATETIME 

 * DEC(6, 2) : 소수점 앞의 숫자는 최대 6개, 소수점 뒤의 숫자는 최대 2개를 의미
 * VARCHAR과 CHAR의 차이
   - VARCHAR은 길이가 변할 수 있으므로(최대 길이는 유효) 길이가 변할 수 있는 데이터의 타입으로
     사용하면 유용하다(공간절약). 만약 길이가 변하지 않고 항상 정해진 길이라면 CHAR을 사용할 수도 있다.
01.jpg

*참고 : 작은 따옴표 사용하는 데이터 타입
             - char / varchar / date / datetime / time / timestamp / blob
           작은 따옴표를 사용하지 않는 데이터 타입
             - dec, int

 

=====================================================

 

 

MySQL Column Type

 

컬럼(Column)은 데이타 베이스를 이루는 가장 작은 단위이다. 컬럼들이 모여서 레코드(Record)를 이루고, 레코들들이 모여서 테이블(Table)이 된다. 테이블이 모여서 데이타 베이스를 이루게 된다. 즉, 데이타 베이스를 데이타들의 계층적 구조라고 말한다.

TINYINT

부호있는 수는 -128에서 127까지, 부호 없는 수는 0에서 255까지 표현할 수 있다. 1 바이트

※디폴트는 부호있는거(SIGNED),  UNSIGNED를 붙이면 부호없는것~


SMALLINT

부호있는 수는 -32768에서 32767까지, 부호 없는 수는 0에서 65535까지 표현할 수 있다. 2 바이트

※디폴트는 부호있는거(SIGNED),  UNSIGNED를 붙이면 부호없는것~


MEDIUMINT

부호있는 수는 -8388608부터 8388607까지, 부호없는 수는 0에서 16777215까지의 수를 표현할 수 있다. 3 바이트

※디폴트는 부호있는거(SIGNED),  UNSIGNED를 붙이면 부호없는것~


INT [unsigned]

부호있는 수는 -2147483648부터 2147483647까지, 부호없는 수는 0에서 4294967295까지의 수를 표현할 수 있다[unsigned]. 4 바이트

※디폴트는 부호있는거(SIGNED),  UNSIGNED를 붙이면 부호없는것~

 

※ zerofill를 이용하면 남는 공간 0으로 채우기가 가능하다.

※ int형 선언시 (숫자)를 안써주면 int(11)가 디폴트로 되며 int(숫자)는 자릿수 제한이

아닙니다.

int(5)와 int(11)는 데이타크기가 같으며 입력하는 가격 범위도 같습니다.다른점은

int데이타형 뒤에 zerofill 을 붙여주면 int형뒤에 숫자보다 자릿수가 작으면 0으로 자동으로

채워진다.같거나 크면 당연히 안채워진다. zerofill을 사용했을때 최대 자릿수는 10이다.

 

※ int 키워드 뒤에 괄호안 숫자는 제한이 없습니다. 테이블 생성시 zerofill 키워드를 사용하게

되면 해당 괄호안에 숫자만큼의 선행제로 처리가 되어 출력됩니다.

 

INTEGER

INT와 같다.

 

BIGINT

부호있는 수는 -9223372036854775808부터 9223372036854775807까지의 수를 표현할 수 있고, 부호없는 수는 0부터 18446744073709551615까지 표현할 수 있다. 8바이트


FLOAT

단일 정밀도를 가진 부동 소수점을 나타낸다. 언제나 부호 있는 수이고, -3.402823466E+38부터 3.402823466E+38까지의 수를 표현할 수 있다.

 

※ mysql,에서의 float는 실수를 저장하는 데이타형입니다.

하지만 1.11이나 1.23은 잘들어가지는데 1.00이나 1.10 같은 마지막 0은 들어가지지 않습니다.

왜냐하면 자동으로 0은 절삭됩니다. 하지만 table생성시 float가 아닌 float(5,2)로 주면 소수점2자리까지만 입력이 되며 빈공간은 0으로 채워집니다.

앞에것은 잘 모르겠지만 뒤에꺼는 필수 소수점자리입니다. 빈공간은 0으로 자동으로 채워집니다.

 

DOUBLE

2배 정밀도를 가진 부동 소수점 수이다. 언제나 부호있는 수이고, -1.79769313486231517E+308부터 1.7976931348623157E+308까지의
수를 표현할 수 있다.


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:00'부터 2037년까지 나타낼 수 있다. 4 바이트


TIME

시간을 나타낸다. '-839:59:59'부터 '838:59:59'까지 나타낼 수 있다.


YEAR

년도를 나타낸다. 1901년부터 2155년, 0000년을 나타낼 수 있다.


CHAR(M)

고정 길이를 갖는 문자열을 저장할 수 있다. M은 1부터255까지이다.M이 20이면 20개의

문자를 저장할 수 있다.

※ binary옵션을 붙일시 대소문자를 구분합니다.

 

VARCHAR(M)

CHAR는 고정길이인 반면 VARCHAR는 가변 길이이다. 예를 들어 VARCHAR(20)인 컬럼에

10자만 저장을 하면, 실제로도 10자 만큼을 기억장소를 차지한다. 하지만, CHAR는 나머지

10자를 공백으로 매꾼다.최대 255자까지 저장가능

※ binary옵션을 붙일시 대소문자를 구분합니다.

 

TINYTEXT

255개의 문자를 저장할 수 있다.

 

ENUM('value1','value2')

 

65535개의 문자를 선택하여 대입할수있다. value에서 지정하지 않은 값은 에러는 안나나 공백

으로 들어가진다.

※ binary옵션을 붙일시 대소문자를 구분합니다.

※ 데이타 크기 : 2 바이트

 

TEXT (텍스트 파일)

65535개의 문자를 저장할 수 있다.

※ binary 옵션을 기재하면 검색시 소문자를 구분합니다.

※ TEXT데이타형은 default 예약어 사용 못함

 

BLOB(이진 파일)

65535개의 문자를 저장할 수 있다. BLOB은 BINARY LARGE OBJECT의 약자이다.

일반문자열이 아닌 멀티미디어파일(이미지,영상등)을 넣을때 사용하는 컬럼입니다.

ex : 많이 사용하지 않는다.

 

(TEXT : blob의 차이) blob : binary large object

0.text나 blob는 둘다 default를 사용못한다.

1.TEXT는 대소문자 안가린다. BLOB는 대소문자 가린다.

2.제한크기보다 작은 크기를 입력해도 둘다 공백이 제거되지 않고 공백도 다같이 저장된다. varchar개념이 아닌 char개념이다.

3.테이블이아닌 다른 영역에 저장된다. 적당히 사용하자

4.INDEX생성이 불가능하다.괜히 모르고 했다가는 용량만 커지고 index는 절대 안탄다. FULLTEXT를 이용한다.

 

MEDIUMBLOB

16777215개의 문자를 저장할 수 있다.

일반text가 아닌 멀티미디어파일을 넣을때 사용하는 컬럼입니다.

ex : 많이 사용하지 않는다.

 

MEDIUMTEXT

TEXT형에 저장되지 않는 큰문자열은 MEDIUMTEXT형을 사용한다.

16,777,215개의 문자를 저장할 수 있다.

ex : alter table zet_blog_data modify content MEDIUMTEXT;

 

LONGBLOB

4294967295(4기가)개의 문자를 저장할 수 있다.

일반text가 아닌 멀티미디어파일을 넣을때 사용하는 컬럼입니다.

ex : 많이 사용하지 않는다.

 

LONGTEXT

4,294,967,295(4기가)개의 문자를 저장할 수 있다.

 

 

 


댓글목록

등록된 댓글이 없습니다.

Total 447건 1 페이지
게시물 검색

회원로그인

접속자집계

오늘
364
어제
457
최대
592
전체
39,973

그누보드5
Copyright © seobangnim.com All rights reserved.
자바스크립트를 활성화 하세요![ 브라우저에서 자바스크립트를 활성화하는 방법 ]