Transact-SQL的数据类型--我的第一篇总结_transact-sql语句中数据类型-程序员宅基地

技术标签: image  存储  microsoft  数据库  float  sql server  

 

       Transact-SQL 语言是微软公司在关系型数据库管理系统Microsoft SQL Server中的ISO SQL的实现,通过使用Transact-SQL语言,我们几乎可以完成Microsoft SQL Server数据库中的所有操作。
        这篇笔记,我主要总结下Transact-SQL语言的数据类型,版本是Microsoft SQL Server 2005。
  在Microsoft SQL Server 2005 系统中,需要使用数据类型的对象包括表中的列、视图中的列、定义的局部变量、存储过程中的参数、Transact-SQL函数及存储过程的返回值等。
  Microsoft SQL Server 2005系统提供了28种数据类型。这些数据类型可以分为数字数据类型、字符数据类型、日期和时间数据类型、二进制数据类型以及其他数据类型。
一、 数字数据类型
  这些数据类型的数字就是可以参加各种数值运算,我们对从这些数字是否有小数,分为整数类型和小数类型;对这些数字的精度和位数是否可以明确地确定,分为精确数字类型和近似数字类型。对是否可以表示金额,分为货币数字类型和非货币数字类型。
  该类型包括:BIGINT、INT、SMALLINT、TINYINT、BIT DECIMAL、NUMERIC、MONEY、SMALLMONEY、FLOAT、REAL、BIT等11种数据类型。
1.      前四种数据类型是整数数据类型。BIGINT长度为8字节,可存储正负数,
取值范围-263至263-1;INT长度为4字节,可存储正负数,取值范围-231至231-1;SMALLINT长度2字节,可存储正负数,取值范围-215至215-1;当存储整数大小有限,且都是正数,则可以考虑TINYINT,该类型长度为1字节,取值范围0至255。
  选择哪个类型就要根据数据具体分析,对于某种整数数据类型,如果提供的数据超出其允许取值范围,则发生数据溢出错误。
2.      DECIMAL 和NUMERIC都是带固定精度和位数的数据类型。二者在功能上是 等价的,Microsoft SQL Server 2005系统中,把二者当同一种数据类型对待。所以只说一下DECIMAL数据类型。
  DECIMAL数据类型语法如下:
  DECIMAL(p,s)
  其中,p表示数字的精度,s表示数字的小数位数。P取值范围是1至38,默认值是18。S的取值范围必须是[0,p],所以DECIMAL的取值范围是-1038+1至1038-1。
  由于DECMAL数据类型的精度是变化的,因此该数据类型的长度是不定的,它会随着精度的变化而变化。
3.      MONEY 和SMALLMONEY是一种确定性数值数据类型,用来存储代表货币数 值的数据。MONEY需要耗费8字节,取值范围同BIGINT;SMALLMONEY只需要4个字节,取值范围同INT。那有人就会问了,既然有BIGINT和INT,为什么还定义MONEY和SMALLMONEY。这是因为:1.他们表示货币,可在数字前面加$作为货币符号,2.他们的小树位数最多是4位,表示货币单位的万分之一,3.当小数位数超过4时,自动按四舍五入进行处理。
4.      如果希望进行科学计算,并且希望存储更大的数值,但对数据的精度要 求并不严格时,可 以考虑FLOAT或REAL,二者都是近似数字类型。
  REAL取值范围是-3.40E+38至-1.18E-38、0、1.18E-38至3.40E+38,FLOAT取值范围是-1.79E+308至-2.21E-308、0、2.23E-308至1.79E+308。REAL长度为4字节。FLOAT类型是FLOAT(n)时,n最大值为53,默认也是53,则其长度为8字节。
5.      BIT 可以存储1、0或NULL数据的数据类型。这些数据只要用于一些条件 逻辑判断,将按字符格式存储。
二、 字符数据类型
字符数据类型用于存储固定长度或可变长度的字符数据。该类型包括:CHAR、VARCHAR、TEXT、NCHAR、NVARCHAR和NTEXT等6种数据类型。前3种数据类型是非Unicode字符数据,后3种是Unicode字符数据。
CHAR(n) 存储固定长度的字符数据,长度为n,n的取值范围是1至8000。默认值为1。VARCHAR(n)存储可变长度的字符数据,n取值范围是1至8000。注意:VARCHAR(MAX)可以存储最大字节数位231-1的数据。其实VARCHAR(MAX)被称为大数值类型,可以代替TEXT数据类型,微软公司建议,用户应避免使用TEXT,而用VARCHAR(MAX)存储大文本数据。
字符数据通常使用单引号引起来。对于CHAR(n)类型,如果输入的字符小于指定的长度,则在该字符尾部用空格补齐。VARCHAR(n)则存储实际的字符长度。
当数据库存储的数据由可能涉及到多种语言时,应该使用Unicode数据类型。像CHAR、VARCHAR、TEXT一样,NCHAR、NVARCHAR分别用于存储固定长度和可变长度的Unicode字符数据。NTEXT是将要被取消的数据类型,可用NVARCHAR(MAX)代替。需要注意的是,Unicode字符常量常用下面方式表示:
N ‘联想公司’
所以,如果某些列需要存储中文字符,最好使用NCHAR、NVARCHAR数据类型。同样IMAGE数据类型也应该由VARBINARY(MAX)代替。
三、 日期和时间数据类型
日期和时间数据类型就是存储日期和时间数据的,该类型包括:DATETIME和SMALLDATETIME两种数据类型。二者的差别是日期和时间范围不同、时间精确度不同。前者范围是1753年1月1日至9999年12月31日,时间精度3.33毫秒。后者范围是1990年1月1日至2079年12月31日,时间精度1分钟。建议不要使用SMALLDATETIME,因为毕竟2079年不是一个特别遥远的日期。当心“千年虫”问题哦~
四、 二进制数据类型
  该类型包括:BINARY、VARBINARY、IMAGE等3种数据类型。用于存储二进制数据。二者长度由n值确定,取值范围是1至8000。IMAGE用于存储图像信息。BINARY和VARBINARY默认值均为1。当二进制数据存储到表中时,可用SELECT语句检索,不过,结果是以16进制数据格式显示的。
五、 其他数据类型
除此之外,还包括CURSOR、SQL_VARIANT、TABLE、TIMESTAMP、UNIQUEIDENTIFIER和XML等6种数据类型。
CURSOR 是变量或存储过程的输出参数使用的一种数据类型,称其为游标。它提供一种逐行处理查询数据的功能。它只能用于与定义游标和使用游标的有关语句中,不能呢个在诸如CREATE TABLE语句中使用。
SQL_VARIANT 是一种特殊的数据类型,可以存储大部分Microsoft SQL Server 2005中的数据类型(不包括TEXT、NTEXT、IMAGE、TIMESTAMP、SQL_VARIANT)的值。该数据类型可以用在列、变量、用户定义函数等返回值中。它不仅包括数据,也包含该数据的类型值信息,所以其最大存储长度为8016字节。一般只是在不能确定将要存储的数据类型时,才使用该数据类型。
TABLE 用于存储结果集以便今后继续处理,这些结果集往往通过表值函数返回。如果变量或函数声明为TABLE类型,在其作用范围内可当表一样使用。但如果其包含的数据量很大时,会对系统的性能造成影响。
TIMESTAMP 是一个特殊的用于表示先后顺序的时间戳数据类型,它可为表中数据行加上一个版本戳,当对包含TIMESTAMP列的表执行插入或更新操作时,数据库自带的计数器就会增加。注意,一个表最多只能有一个TIMESTAMP列。大家可以用@@DBTS函数返回数据库的时戳值。
UNIQUEIDENTIFIER 是一个具有16字节的全局唯一性标志符,用来确保对象的唯一性。其主要目的是在合并复制和事务复制中确保数据行的唯一性。对其初始化有两种方式:1.使用NEWID函数,2.使用如下格式的字符串常量,每一个X都是0-9或a-f范围内的16进制数据:
XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
XML 是Microsoft SQL Server 2005系统新增的数据类型,用于存储XML数据。存储XML数据类型的数据实例最大值为2GB。
好了,由于刚入门,就先总结到这里,毕竟路途还很漫长,但只要坚持下去就一定能掌握好。下次就总结一下Microsoft SQL Server 2005系统中的内置函数吧!
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/super_hou/article/details/6508183

智能推荐

FTP命令字和返回码_ftp 登录返回230-程序员宅基地

文章浏览阅读3.5k次,点赞2次,收藏13次。为了从FTP服务器下载文件,需要要实现一个简单的FTP客户端。FTP(文件传输协议) 是 TCP/IP 协议组中的应用层协议。FTP协议使用字符串格式命令字,每条命令都是一行字符串,以“\r\n”结尾。客户端发送格式是:命令+空格+参数+"\r\n"的格式服务器返回格式是以:状态码+空格+提示字符串+"\r\n"的格式,代码只要解析状态码就可以了。读写文件需要登陆服务器,特殊用..._ftp 登录返回230

centos7安装rabbitmq3.6.5_centos7 安装rabbitmq3.6.5-程序员宅基地

文章浏览阅读648次。前提:systemctl stop firewalld 关闭防火墙关闭selinux查看getenforce临时关闭setenforce 0永久关闭sed-i'/SELINUX/s/enforcing/disabled/'/etc/selinux/configselinux的三种模式enforcing:强制模式,SELinux 运作中,且已经正确的开始限制..._centos7 安装rabbitmq3.6.5

idea导入android工程,idea怎样导入Android studio 项目?-程序员宅基地

文章浏览阅读5.8k次。满意答案s55f2avsx2017.09.05采纳率:46%等级:12已帮助:5646人新版Android Studio/IntelliJ IDEA可以直接导入eclipse项目,不再推荐使用eclipse导出gradle的方式2启动Android Studio/IntelliJ IDEA,选择 import project3选择eclipse 项目4选择 create project f..._android studio 项目导入idea 看不懂安卓项目

浅谈AI大模型技术:概念、发展和应用_ai大模型应用开发-程序员宅基地

文章浏览阅读860次,点赞2次,收藏6次。AI大模型技术已经在自然语言处理、计算机视觉、多模态交互等领域取得了显著的进展和成果,同时也引发了一系列新的挑战和问题,如数据质量、计算效率、知识可解释性、安全可靠性等。城市运维涉及到多个方面,如交通管理、环境监测、公共安全、社会治理等,它们需要处理和分析大量的多模态数据,如图像、视频、语音、文本等,并根据不同的场景和需求,提供合适的决策和响应。知识搜索有多种形式,如语义搜索、对话搜索、图像搜索、视频搜索等,它们可以根据用户的输入和意图,从海量的数据源中检索出最相关的信息,并以友好的方式呈现给用户。_ai大模型应用开发

非常详细的阻抗测试基础知识_阻抗实部和虚部-程序员宅基地

文章浏览阅读8.2k次,点赞12次,收藏121次。为什么要测量阻抗呢?阻抗能代表什么?阻抗测量的注意事项... ...很多人可能会带着一系列的问题来阅读本文。不管是数字电路工程师还是射频工程师,都在关注各类器件的阻抗,本文非常值得一读。全文13000多字,认真读完大概需要2小时。一、阻抗测试基本概念阻抗定义:阻抗是元器件或电路对周期的交流信号的总的反作用。AC 交流测试信号 (幅度和频率)。包括实部和虚部。​图1 阻抗的定义阻抗是评测电路、元件以及制作元件材料的重要参数。那么什么是阻抗呢?让我们先来看一下阻抗的定义。首先阻抗是一个矢量。通常,阻抗是_阻抗实部和虚部

小学生python游戏编程arcade----基本知识1_arcade语言 like-程序员宅基地

文章浏览阅读955次。前面章节分享试用了pyzero,pygame但随着想增加更丰富的游戏内容,好多还要进行自己编写类,从今天开始解绍一个新的python游戏库arcade模块。通过此次的《连连看》游戏实现,让我对swing的相关知识有了进一步的了解,对java这门语言也有了比以前更深刻的认识。java的一些基本语法,比如数据类型、运算符、程序流程控制和数组等,理解更加透彻。java最核心的核心就是面向对象思想,对于这一个概念,终于悟到了一些。_arcade语言 like

随便推点

【增强版短视频去水印源码】去水印微信小程序+去水印软件源码_去水印机要增强版-程序员宅基地

文章浏览阅读1.1k次。源码简介与安装说明:2021增强版短视频去水印源码 去水印微信小程序源码网站 去水印软件源码安装环境(需要材料):备案域名–服务器安装宝塔-安装 Nginx 或者 Apachephp5.6 以上-安装 sg11 插件小程序已自带解析接口,支持全网主流短视频平台,搭建好了就能用注:接口是公益的,那么多人用解析慢是肯定的,前段和后端源码已经打包,上传服务器之后在配置文件修改数据库密码。然后输入自己的域名,进入后台,创建小程序,输入自己的小程序配置即可安装说明:上传源码,修改data/_去水印机要增强版

verilog进阶语法-触发器原语_fdre #(.init(1'b0) // initial value of register (1-程序员宅基地

文章浏览阅读557次。1. 触发器是FPGA存储数据的基本单元2. 触发器作为时序逻辑的基本元件,官方提供了丰富的配置方式,以适应各种可能的应用场景。_fdre #(.init(1'b0) // initial value of register (1'b0 or 1'b1) ) fdce_osc (

嵌入式面试/笔试C相关总结_嵌入式面试笔试c语言知识点-程序员宅基地

文章浏览阅读560次。本该是不同编译器结果不同,但是尝试了g++ msvc都是先计算c,再计算b,最后得到a+b+c是经过赋值以后的b和c参与计算而不是6。由上表可知,将q复制到p数组可以表示为:*p++=*q++,*优先级高,先取到对应q数组的值,然后两个++都是在后面,该行运算完后执行++。在电脑端编译完后会分为text data bss三种,其中text为可执行程序,data为初始化过的ro+rw变量,bss为未初始化或初始化为0变量。_嵌入式面试笔试c语言知识点

57 Things I've Learned Founding 3 Tech Companies_mature-程序员宅基地

文章浏览阅读2.3k次。57 Things I've Learned Founding 3 Tech CompaniesJason Goldberg, Betashop | Oct. 29, 2010, 1:29 PMI’ve been founding andhelping run techn_mature

一个脚本搞定文件合并去重,大数据处理,可以合并几个G以上的文件_python 超大文本合并-程序员宅基地

文章浏览阅读1.9k次。问题:先讲下需求,有若干个文本文件(txt或者csv文件等),每行代表一条数据,现在希望能合并成 1 个文本文件,且需要去除重复行。分析:一向奉行简单原则,如无必要,绝不复杂。如果数据量不大,那么如下两条命令就可以搞定合并:cat a.txt >> new.txtcat b.txt >> new.txt……去重:cat new...._python 超大文本合并

支付宝小程序iOS端过渡页DFLoadingPageRootController分析_类似支付宝页面过度加载页-程序员宅基地

文章浏览阅读489次。这个过渡页是第一次打开小程序展示的,点击某个小程序前把手机的开发者->network link conditioner->enable & very bad network 就会在停在此页。比如《支付宝运动》这个小程序先看这个类的.h可以看到它继承于DTViewController点击左上角返回的方法- (void)back;#import "DTViewController.h"#import "APBaseLoadingV..._类似支付宝页面过度加载页

推荐文章

热门文章

相关标签