출처 : http://cafe.naver.com/itea11
-------------------------------
1. 자료형의 종류
[mssql2000]
bigint 8바이트 64비트 부호 있음
int 4바이트 32비트 "
smallint 2바이트 16비트 "
tinyint 1바이트 8비트 "
decimal(p,s) 실수표현 p: 전체자리수 , s는 소수점 부분의 길이
numeric(p,s) "
money 8바이트 64비트 통화 단위 1/10000의 정확성을 가짐
smallmoney 4바이트 32비트 "
[oracle]
number 10바이트 80비트 부호있음 , 기본이 10바이트
number(n) 바이트 지정, n은 바이트 숫자
number(p, s) 실수표현 p: 전체자리수, s는 소수점 부분의 길이
[mysql] : 가장 많음 .ㅠ.ㅠ
tinyint 1바이트 정수
smallint 2바이트 정수
mediumint 3바이트 정수
int, integer 4바이트 정수
bigint 8바이트 정수
float 4바이트 부동소수점 표현
double 8바이트 부동소수점 표현
real double과 같음
decimal(p,s) 실수표현 p: 전체자리수, s는 소수점 부분의 길이
numeric(p,s) decimal과 같음
bit(n) n비트 정수 표현
2. 자료형의 선언
테이블을 만들 때 이 자료형에 대해서 선언 하는 방법을 알아보자. 대부분 다 비슷하다.
다만 몇가지 () 안에 옵션에 있는 것만 알아보면 될 것이다.
[mssql2000]
create table test (
aaa bigint,
bbb decimal(10, 2) not null
)
[oracle]
create table test (
aaa number(8),
bbb number,
ccc number(10, 2)
)
[mysql]
create table test (
aaa bigint,
bbb double,
ccc decimal(10, 2)
)
위와 같은 형태로 테이블을 생성 할 때 우리는 자료형을 지정할 수 있다.
3. 숫자형에 대한 몇가지 옵션
[mssql2000]
mssql에서는 정수형에 대해서 identity 라는 옵션을 걸어 줄 수 있다.
이것은 그 필드에 숫자를 자동으로 채우줌으로써.. 유일안 키값을 생성 할 수 있다.
[oracle]
오라클에서는 따로 옵션은 없다.
[mysql]
mysql에서는 auto_increment 라는 옵션으로 identity와 같은 역할을 하게끔 할 수 있다.
mysql은 unsigned와 zerofill을 가지고 있다. unsigned는 부호없는 숫자를 만들어서 좀 더 넓은 범위의 숫자를 사용
할 수 있게 하고 zerofill은 현재 필드의 값을 0으로 모두 채우는 옵션이다.
다만 주의 해야 할 것은 mysql 에서는 auto_increment가 되면 그 필드는 기본키가 되어야 하지만 mssql에서는 identity가 되어도
기본키가 되지 않아도 된다. 다만 대부분 기본적으로 그 필드를 기본키로 걸 뿐이다.
4. 이기종 디비간의 호환성
대부분의 디비는 정수형에 대해서 가지고 있다. 하지만 몇가지 충족되지 않는 자료형을 가지고 있기 때문에
숫자형에 대해서는
mssql : int, decimal(p,s)
oracle : number, number(p,s)
mysql : int, decimal(p,s)
출처 :
1. 문자열 형의 종류
[mssql]
char(n) 최대 8000자, 유니코드 아님, 고정길이
varchar(n) 최대 8000자, 유니코드 아님, 가변길이
text 최대 2^31-1 자, 유니코드 아님, 가변길이 (32비트)
nchar(n) 최대 4000자, 유니코드 아님, 고정길이
nvarchar(n) 최대 4000자, 유니코드 아님, 가변길이
ntext 최대 2^30-1 자, 유니코드 아님, 가변길이 (32비트)
binary 최대 8000바이트, 고정길이, 이진문자열(비트 스트링)
varbinary 최대 8000바이트, 고정길이, 이진문자열(비트 스트링)
image 최대 2^31-1 바이트, 고정길이, 이진문자열(비트 스트링)
[oracle]
char(n) 최대 2000 바이트
varchar2(n) 최대 4000 바이트
nchar(n) 최대 2000 바이트
nvarchar2(n) 최대 4000 바이트
CLOB 1바이트 문자열, 최대 4GB
BLOB 이진 문자열, 최대 4GB
BFILE 바이너리 데이타 외부화일로 저장, 최대 4GB
LONG 가변길이 문자열, 최대 2GB
LONG RAW 가변길이 이진 데이타, 최대 2GB
RAW 가변길이 이진 데이타, 최대 2000 바이트
[mysql]
char(n) 최대 255 바이트 까지
varchar(n) 최대 255 바이트 까지
binary(n) 이진데이타, 바이트 지정한만큼, 고정길이
varbinary(n) 이진데이타, 바이트 지정한만큼, 가변길이
tinyblob 이진데이타, 최대 255 바이트 (2^8)
blob 이진데이타, 최대 65535 바이트 (2^16)
mediumblob 이진데이타, 최대 2^24 바이트
longblob 이진데이타, 최대 2^32 바이트,
tinytext 1바이트 문자열, 최대 255 자 (2^8)
text 1바이트 문자열, 최대 65535 자(2^16)
mediumtext 1바이트 문자열, 최대 2^24 자
longtext 1바이트 문자열, 최대 2^32 자
손수 다 적을려니 너무 빡시네. .ㅋㅋ 암튼 대충 이런 문자열 타입들이 있네요...
전체적으로 크게 보면
일반 문자열 데이타, 유니코드 문자열 데이타, 대용량 이진 데이타, 대용량 문자열 데이타 등 으로 나눌 수 있는데요.
실제로 코딩 할 때 쓰는건 몇 개 없네요..ㅋㅋ 암튼 이것으로 다들 잘 해봅시다.
2. 자료형의 선언
[mssql]
create table test (
aaaa varchar(200)
)
[oracle]
create table test (
aaaa varchar2(300)
)
[mysql]
create table test (
aaaa varchar(400)
)
기본적으로 바이트 선언하는 형태는 너무나도 간단합니다. 특정 자료형과 길이만 적어 주기 때문에.. ^^
3. 이기종간의 디비 호환성
일반적으로 문자열은 varchar 를 많이 씁니다.
물론 속도 줄인다고 char 쓰시는 분들도 계시는데 이건 디비에 따라서 일정길이 이상이 되면 내부적으로 varchar로 돌아가기 때문에
그냥 varchar 쓰시는게 더 좋을 듯 합니다.. 그리고 속도 차이도 거의 없구여..
대부분의 디비에 들어가는 형태는 가변길이 문자열입니다. 그래서
varchar, nvarchar, 오라클은 varchar2 등을 쓰게 됩니다.
다만 조금씩 차이 나는 부분이 대용량의 글을 적을 때가 문제인데요...
mssql : text
oracle : clob
mysql : text 관련 타입
등으로 보편화 될 수가 있겠습니다..
그래서 varchar(varchar2) 나 text(clob) 등으로 문자열에 대한 데이타를 정의해주시면 되겠구여..
가끔씩 이미지를 통째로 필드에 넣는 경우가 있습니다. 그럴경우는 이진데이타 자료형으로 해서 넣어줄 수 있는데요..
mssql : varbinary
oracle : blob, bfile
mysql : blob 관련 타입
등을 많이 사용하게 됩니다.
하지만 아직까지는 그런 대용량 이미지 데이타 들은 디비에 넣지 않고 그냥 파일로 복사하고 링크만 저장하는 방식이 선호가
되고 있습니다. 나중에 디비 성능이 좀더 좋아지고 하드웨어, 네트워크 성능이 더 좋아지면 그때는 데이타베이스에서 모든 것을
처리하는 때가 오겠죠? ^^ 그 때를 기대해봅니다.
출처 : http://cafe.naver.com/itea11