关闭

SQL Server数据类型,其中的日期有范围datetime:旧版本的日期时间类型,范围1753-01-01 to 9999-12-31,精确到3.33毫秒

标签: 数据库
719人阅读 评论(0) 收藏 举报
  1.  整数数据类型:
  • tinyint存储的是一个字节(8位),值范围是0-255
  • smallint存储的是两字节(16位),值范围是-32768-32767
  • int存储的是四字节(32位),值范围是-2147483648-2147483647
  • bigint存储的是八字节,值范围是-2^63 - 2^63-1,存储的是非常大的整数值
  1. 分数数据类型:
  • decimalANSI兼容,允许指定整数位和小数位
  • numeric:功能上和decimal是一样的
  • moneysmallmoney:以前遗留下来的数据类型,用来存储货币值,四个小数位精度,通常使用decimal代替这个数据类型
  1. bit数据类型:存储1位值,存储上有优化,如果一张表中少于8个的bit列,他们将被存储在一个字节中,通常用来存储boolean值;在SQL Serverbit值没有字符串形式,TrueFalse只是可以转化为bit值,就像整数值10可以转化为bit值一样,底层bit值存储的不是TrueFalse,也不是整数值10,而只是一位值而已;高级语言中False都使用0来存储,而True存储根据语言不同使用不同的值,因此在检测boolean值时,使用@inputvalue=0来检测false,使用@inputvalue<>0来检测true,不要使用@inputvalue=1来检测true值,在有的语言中得不到预期的结果;bit类型值还可以存储null值,也就是说bit类型值共有三种状态0,1,null
  2. IDENTITYint或者bitint列一起使用,通过SET IDENTITY_INSERT ON开关,允许在IDENTITY列显式插入值,具有IDENTITY属性的列不能够保证值都唯一,因为可以显式插入值;可以通过系统变量@@IDENTITY检索最近一次IDENTITY值,使用@@IDENTITY的问题是:当插入一条记录到Customer表中时,这个customer被赋予一个新的identity,但是如果这个表有一个触发器,这个触发器在插入时将这个条目写入到audit logging table中,@@IDENTITY返回的是logging table值,而不是Customer表的值;此时需要使用SCOPE_IDENTITY函数,它提供的是当前范围Scope内最新identity值;当一次插入多行记录时,通过OUTPUT语句检索IDENTITY值(通过检索inserted表来检索该值),插入一条记录时,使用这种方法也可以检索插入的值
  3. 近似数据类型通常用在科学计算应用程序中,而不是商业应用程序中,不要使用近似数据类型存储货币值这样的商业值
  • real:存储的是4字节(32位),精确到7位小数
  • float(n)n代表用来存储尾数的位数,n默认等于53,当n1-24范围时,n=24,即精度为7位小数,使用4字节存储,也就是real数据类型的值;当n25-53范围时,n=53,即精度15位小数,使用8字节存储
  1. SQL Server支持丰富的日期和时间数据类型,需要非常小心每个类型的字符串形式,大量函数可用来处理这些类型
  • date:符合ANSI标准,范围0001-01-01 to 9999-12-31,精确到天
  • time:符合ANSI SQL标准,范围00:00:00.0000000 to 23:59:59.9999999,精确到100纳秒,允许指定小数位数,即定义纳秒的位数
  • datetime2:是datetime类型的组合
  • datetime:旧版本的日期时间类型,范围1753-01-01 to 9999-12-31,精确到3.33毫秒,datetime类型根据语言设置将字符串转化为日期,"YYYYMMDD"总是可以转化为正确的日期时间类型,"YYYY-MM-DD"可能会被当做"YYYY-DD-MM"格式进行转化,取决于设置,date类型不会有这样的行为
  • datetimeoffset datetime2timezone offset的组合,日期时间部分代表本地时间,timezone offset范围-14:00 to +14:00,表示和UTC时间的偏移量,注意date类型是和时区无关的
  1. GUID就是一个数字分配器,保证一个程序生成的值和其他程序生成的值不冲突,是128位值;在SQL Server中对应的数据类型就是uniqueidentifier,该类型允许的操作只包括=<><><=>=以及是否为null的检测IS NULL IS NOT NULL;该数据类型定义的列上不允许使用IDENTITY;通过NEWID()函数生成新的GUID值,该函数生成的GUID值具有非常大的随机性,有性能问题,NEWSEQUENTIALID()函数试图解决NEWID()函数的随机性,不过它是以牺牲唯一性为代价的
  1. NULL是数据库列的状态,不是数据类型的值,使用IS NULL检测是否为null,而不是使用=NULL检测是否等于null;为数据库列指定不当的nullability是常见的设计错误
  1. Unicode常量要求在前面都加上N前缀,使用LEN()函数返回字符的数量,使用DATALENGTH()返回字节数量
  1. 字符数据类型:
  • charnchar:存储固定长度的字符,如果这两个类型值的字符长度不够的话,在尾部使用空格填充,使用时通常都需要去掉尾部的空格,char使用单字节存储,nchar采用双字节存储
  • varcharnvarchar:用来存储变长字符串,允许你指定一个字符串的最大长度,nvarchar用来存储unicode字符(即双字节字符),varcharnvarchar限制在80004000个字符上限,正好是数据库中一个数据页的大小
  • varchar(max)nvarchar(max):存储更长的字符,它们允许存储高达2GB的数据
  • textntext:旧数据类型,被启用,使用varchar(max)nvarchar(max)替换这两个数据类型
  • sysnameSQL Server中对象名称通常都是该类型,是nvarchar(128)的别名
  1. Collation用来控制在SQL Server中存储的非Unicode数据使用的代码页,以及SQL Server中排序和比较字符值时使用的规则
  • code pages代码页:在计算机中每个字符使用一个字节,共有256个字符,0-31作为控制字符,比如回车(8)、Tab9)、空格(32),一直到Delete127);127以上的值则根据标准不同表示不同的含义,这些标准在MSDOS操作系统中就被称为代码页,一个代码页就定义128-255之间的字符的用途,这些代码页0-127之间的字符定义都是相同的
  1. 共有两类CollationsSQL Server CollationsWindows CollationsSQL Server Collations用来保持向后兼容性,鼓励使用Windows CollationsSQL Server Collations名称采用如下形式:SQL_SortRules[_Pref]_CPCodePage_ComparisonStyle
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:46355次
    • 积分:1171
    • 等级:
    • 排名:千里之外
    • 原创:73篇
    • 转载:2篇
    • 译文:0篇
    • 评论:0条