이거참 매번 헷갈린다.
numeric과 int 는 숫자를 저장할때 사용합니다.
- int의 경우는 정수형 데이터를 저장할때 사용합니다. 일반적으로 IDENTITY의 데이터형으로 많이 사용되며, 아주 크지 않은 정수형 숫자를 처리할때도 사용됩니다.
- numeric의 경우는 데이터 형식 지정을 할때 숫자의 크기와 소수점 자리수를 지정할 수 있습니다. 소수점 지정이 가능하므로 실수형 데이터를 저장할때 사용하고 있으며 decimal 자료형과 혼용해서 사용하기도 합니다.
varchar와 nvarchar는 가변형 문자열을 저장할때 사용합니다.
- varchar는 영문 데이터형과 테이블에 설정된 기본 언어 타입을 저장할때 사용합니다.
- nvarchar는 유니코드 지원을 위한 데이터형입니다. nvarchar는 varchar보다 동일 데이터 저장시 공간을 2배 사용하며, 다국어 지원이 필요한 DB 작업일 경우에 적당한 데이터형입니다.
- DB 설계 단계에서 향후 다국어를 지원할 일이 조금이라도 있을 것 같다면 처음부터 nvarchar, nchar, ntext 를 사용하여 구조를 만들어두시는 것이 좋습니다.
---------------------------------------
즉슨, 굳이 유니코드를 사용하지 않을거라면(향후에도) 그냥 n 이 접두어로 붙지않은 데이터형을 사용하는것이 좋지 않을까?
nchar 이나 nvarchar 을 정의해서 쓰지 않았기 때문에 좀더 정확한 차이점은 모르겠지만, 이전에 모르고 했을때, 뭔가 이상한 차이점이 있긴 있었던것 같다.
위의 설명에 따르면, 저장시 공간을 2배 사용한다고 하니, 공간을 더 많이 잡아먹는다고 봐야겠군.
char 의 경우, 0000 으로 네개의 숫자를 받을수 있는 데이터형으로 저장해 놓았다면, SQL 검색시 실제 들어있는 데이터가 000 세자리일지라도 세자리만 들어있는 값이 검색이 되지 않았던 것으로 생각된다.
아니... 검색이 안되는게 아니라, 데이터를 불러온후 비교구문에서 정확한 비교가 이루어 지지 않았던가.. 하여간, char 의 경우에는 사용에 주의해야 한다.