数据库原理和应用(8)—— 数据类型

  • SQL使用数据定义语言(Data Definition Language,DDL)实现数据定义功能。
  • 关系表中每一列(即每个字段)都来自同一个域,属于同一种数据类型。
  • 常见数据表之前,需要为表中的每一个属性设置一种数据类型。
1. 整数型

按照取值范围从大到小,包括bigint、int、smallint、tiniint、bit。在实际应用中,可以根据属性的具体取值范围选择合适的整数型。

2. 数值型
  • 包括精确数值型numeric、decimal和近似数值型float、real。
  • numeric和decimal在功能上等效,用于精确存储数值。
  • 以numerical为例,格式为numeric(p,s),其中p表示数据长度,s表示小数位数
  • float和real用来存储数据的近似值,当数值的位数太多时,可用它们存取数值的近似值。
3. 字符型
  • 包括char、varchar、nchar、nvarchar、text、ntext。
  • 其中char、varchar存放非Unicode字符(即ASCII字符),一个字符占1个字节,char是定长的,varchar是非定长的。
  • nchar、nvarchar存放Unicode字符,一个字符占2个字节,nchar是定长的,nvarchar是非定长的。
  • 当某个字符型属性需要描述的字符数比较多时,可以将其设置为text,ntext。其中,text存放非Unicode字符,定长,最大可存储2GB;ntext存放Unicode字符,非定长,最大可存储2GB。
4. 二进制数据型
  • 包括binary、varbinary、image。
  • binary是定长的二进制数据型,varbinary是非定长的二进制数据型,二者最多可以表示8000个字节。任何类型的数据都可存储在这种类型的字段中,不需数据转换。
5. 特殊类型
  • 包括timestamp、uniqueidentifier、sql_variant、table
  • timestamp数据类型提供数据库范围内的唯一值,此类型相当于binary(8)或varbinary(8),但当它所定义的列更新或添加数据行时,此列的值会被自动更新,一个计数值将自动的添加到此timestamp数据列中。每个数据库表中只能有一个timestamp数据列。
  • uniqueidentifier数据类型称为全球唯一标识符(Globally Unique Identifier,GUID),可用NEWID()函数产生。
  • sql_variant数据类型可以存储除文本、图形数据和timestamp类型数据外的其他任何合法的SQL Server数据,此数据类型大大方便了SQL Server的开发工作。
  • table数据类型用于存储对表或视图处理后的结果集,这一类型使得变量可以存储一个表,从而使函数或过程返回查询结果更加方便、快捷。