none
关于最基础的数据类型问题 RRS feed

  • 问题

  • 声明下本身我是个新手。

    最近设计一个表,里面字段设计时遇到一些数据类型,为了一次到位,我查了些资料,包括书籍,网页,我发现没有一个把数据类型作为重点讲解的。

    所以虽然表设计好了,但是我本人还是雾水比较多,在此我想问下 有没有详细的确定什么样的数据(姓名、身高、整数位数不确定的2位小数等等)使用什么数据类型的定义原则,如什么情况下用int类型,什么情况下用varchar类型等,使用该类型有什么副作用等,这些类型有什么容易被误解的地方,有没有这方面详细的示例说明。

    我觉得数据类型是个非常基础的东西,基础打不好,越往上遇到的问题越多越难解决,同时也涉及到性能和大小的问题。希望,前辈们能给出份详细的知识指导。

    方便后人学习,能打下好的基础。


    绝不不懂装懂,不因为自己的问题低级而感到不好意思,踏踏实实的虚心学习。

    2012年10月6日 5:17

答案

  • Books online has 'data type (Transact-SQL)' section, gives definition, range and usage of each data type used in sql server.
    2012年10月6日 16:27
  • 看一下这个:char nchar varchar nvarchar的区别

                       SQLSERVER的表格存储组织结构

    SQLSERVER是按页来存储数据的一页是8KB的大小,如果你一行记录超过8KB,那么SQLSERVER就要用两页来存储一行记录,那么效率肯定有所下降

    所以选择数据类型的时候最后选择合适的,这个合适的程度只有自己去选择,每一个数据类型都可以计算所占用的字节数的

    比如nchar(n)存储大小为两倍 n 字节 ,如果是nchar(2)那么大小的是4个字节 ,这样每列的数据类型这样去计算,可以看出是否超过8KB大小

    还有最好不要用text  ,ntext ,image数据类型,可以用nvarchar(max)来代替的尽量用nvarchar来代替

    一般设计的时候,性别就用bit类型 ,有小数点的用decimal类型,涉及真假的用bit类型

    在网吧里面,排版不行啊


    给我写信: QQ我:点击这里给我发消息

    2012年10月7日 7:34

全部回复

  • 原则是够用且不浪费。

    比如说姓名,一般人是两三个字,少数是四个字的,那么nvarchar(4)应该够用了吧?某政府部门的数据库中,姓名字段是nvarchar(50),当时我觉得没啥必要,但是一查,发现最长的姓名居然有18个字!


    想不想时已是想,不如不想都不想。

    2012年10月6日 6:53
    版主
  • Books online has 'data type (Transact-SQL)' section, gives definition, range and usage of each data type used in sql server.
    2012年10月6日 16:27
  • 看一下这个:char nchar varchar nvarchar的区别

                       SQLSERVER的表格存储组织结构

    SQLSERVER是按页来存储数据的一页是8KB的大小,如果你一行记录超过8KB,那么SQLSERVER就要用两页来存储一行记录,那么效率肯定有所下降

    所以选择数据类型的时候最后选择合适的,这个合适的程度只有自己去选择,每一个数据类型都可以计算所占用的字节数的

    比如nchar(n)存储大小为两倍 n 字节 ,如果是nchar(2)那么大小的是4个字节 ,这样每列的数据类型这样去计算,可以看出是否超过8KB大小

    还有最好不要用text  ,ntext ,image数据类型,可以用nvarchar(max)来代替的尽量用nvarchar来代替

    一般设计的时候,性别就用bit类型 ,有小数点的用decimal类型,涉及真假的用bit类型

    在网吧里面,排版不行啊


    给我写信: QQ我:点击这里给我发消息

    2012年10月7日 7:34
  • 根据你要存储的内容来定义字段。

    例如工龄

    如果存储的是3,4,5,6 这样的可以用int

    如果存储的是3年,4年,5年 就需要用 varchar(10) 或是 nvarchar(10)

    如果存储的是3年零2个月,4年零10个月,就需要讲nvarchar(n)的n适当的扩大一些。

    2012年10月8日 5:23
    版主
  • 这里有篇文章你可以参考一下:

    Choosing SQL Server 2000 Data Types:http://www.databasejournal.com/features/mssql/article.php/2212141/Choosing-SQL-Server-2000-Data-Types.htm

    2012年10月9日 1:46