SQL Server中使用的公共数据类型
在本文中,我们将讨论SQL服务器中使用的常见数据类型。所以我们使用的第一个数据类型是整数数据类型。
整数数据类型声明为关键字INT。现在,整数是所有的整数。示例包括诸如1或-99,234之类的值。它们本质上是没有小数点的数字。整数可以存储非常小的数字,例如负20亿,一直到20亿。你可以看到我们在哪里声明一个整数。
所以我将@myInt声明为整数。然后我将myInt设置为值9。
DECLARE @myDate as DATETIME;
SET @myDate = '2015-09-15’
我还有一个查询示例,其中我正在使用DaysToManufacture,它被声明为整数数据类型的列,并且我将它乘以24的整数值以找出制作它需要多少小时。
SELECT Name,
DaysToManufacture,
DaysToManufacture * 24
as HoursToManufacture
FROM Production.Product
我想要检查的下两个常见数据类型是VARCHAR和NVARCHAR。
因此,VARCHAR用于存储文本数据,NVARCHAR用于存储Unicode数据。
Unicode数据是扩展的文本数据。它本质上是花哨的数据,通常是外国字符。它是每个值两个字节。
这就是VARCHAR存储8,000个字符的原因,但NVARCHAR只能存储4,000个字符,因为NVARCHAR每个值使用两个字节。
文本值的示例将类似于“Hello Kitty”或诸如“52132 Blue Bell Avenue”之类的地址。它可以像部件号“XF2T-14401-AA;”这是福特部件号。或者它可以是一段文字。在这里,您可以看到我们从AdventureWorks数据库中定义了nvarchar(50)的位置。
我认为使用VARCHAR和NVARCHAR指出,即使名称可以定义为字符50,如果您在列中存储短名称(如Bob),我也不会占用所有50个字符。
所以它不会像Bob和47个空格那样。所以,关于VARCHAR的好处是它只占用了与你放入的空间大致相同的空间。
我们将要讨论的下一个常见数据类型是DATETIME。这用于存储时间点。例子包括“1968年10月23日1:45”。你可以在这里看到它显示小时,分钟,秒和百分之一秒......或千分之一秒。
这是2012年之前最后一个可能时刻的另一个例子。所以这是12月31日差不多午夜。所以DATETIME的范围可以从1753年1月1日到12月31日19 ......或者我猜想...... 9999。
因此,对于当代日期,我认为DATETIME非常适合。但是,如果您正在编写历史应用程序并且需要工作,例如,埃及时代的日期,您可能需要提出一种不同的方式来存储该信息,因为,如您所见,我们的DATETIME只有可以追溯到1753年。
所以这是一个声明DATETIME的例子。您看到我们将日期设置为DATETIME,我们可以使用单引号并输入我们的日期,单引号中的日期可以是年-月-日,并且它将隐式转换为DATETIME。
DECLARE @myDate as DATETIME;
SET @myDate = '2015-09-15’
这个DATETIME,奇怪的是,它将以零,零,零,零,零,零作为小时,分钟和秒。所以它会在date上暗示(例如2015-09-15 00:00:00)
使用DATETIME数据类型的好处是,您可以使用在DATETIME上运行的内置函数,例如year。这将是一个查询的示例,该查询将按年份汇总并雇用雇员的数量。
SELECT YEAR(HireDate),
Count(*)
FROM HumanResources.Employee
GROUP BY YEAR(HireDate)
ORDER BY YEAR(HireDate)
DECIMAL数据类型用于显示小数值,因此包含小数。将DECIMAL数据类型与另一种称为FLOAT的数据类型区分开来的是DECIMAL数据类型非常适合财务应用程序。
您将看到DECIMAL数据类型是使用精度和比例定义的。
这给了他们非常好的确定性质。你可以看到我已经定义了DECIMAL(8,3)的一些例子,这意味着我有8个总数字和3个比例。
这里有一些数字的例子,你可以看到我在整个数字位置有五个,然后在decimal中有三个,总共八个。
因此,这里的经验法则是,精度必须小于38位,比例也是如此。因此,比例可以小于精度,精度将小于或等于38位。
这是一个声明decimal的例子。这里有七位总数,其中四位是小数部分。
DECLARE @myDecimal as DECIMAL(7,4);
SET @myDecimal = 365.3235;
有一点需要指出的是,如果我将这个变量设置为3,651.3235,我会得到一个溢出错误,因为我只将它定义为在整数中有三个位置。
如果我尝试定义变量或将其赋值为4,它就会溢出。使用小数或浮点数时要指出的一点是,当你在SQL中指定它们时,需要在语句中加上小数位。
SELECT DISTINCT Weight
FROM Production.Product
WHERE Weight
BETWEEN 29.00 and 189.00
ORDER BY Weight DESC
所以,在这里,你看到我只是说29到189之间; 我说的是29.00到189.00之间。这有助于表示为十进制。
因此,DECIMAL数据类型的伴侣是FLOAT数据类型,当您使用科学值时,这是用于十进制值的非常好的数据类型。
原因是,decimal 可以用于大范围的数字。它无法处理float所能处理的数字量。
如果你看这里,float可以处理多达306个零。所以,基本上是1.79乘以10的308次方。所以它就像179后跟306个零。
这里是…
179000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
所以,这是一个非常非常大的数字。例如,这里是阿伏伽德罗数(6.02 E23),它是摩尔中的的原子数。已经过了数万亿了。一个非常大的数字。
FLOAT的其他示例是2.50,或者我想指出的是在某些情况下,当您在内部输入2.50时,该数字将不会完全表示为2.50但可能表示为2.499999。
因此,当您将值与FLOAT进行比较时,它变得有点棘手,因为内部表示可能是一个小数位。
我想要介绍的最后一种数据类型是BIT数据类型。这用于表示是或否,或真或假。示例包括1表示true,0表示false。
您可以将真实文本值转换为1,false将转换为0。
DECLARE @myBit as Bit;
SET @myBit = 1
所以,这里有一个例子,我从SalaryFlagged为1的人力资源中获取所有职位。
SELECT DISTINCT JobTitle
FROM HumanResources.Employee
WHERE SalariedFlag = 1
这与我从SalaryFlagged为true的同一查询中选择的情况相同,它将在这里隐式地取这个true,并将其转换为1,因为它知道这是一个BIT,因此,它将转换为此数据类型为1。
SELECT DISTINCT JobTitle
FROM HumanResources.Employee
WHERE SalariedFlag = 'TRUE'
我将一个变量声明为BIT,然后我可以将该bit设置为1或0。所以这些是SQL中使用的主要数据类型。
仍然有很多数据类型需要学习。总的来说,如果你学习了这七种常见的数据类型,这些是你今天可以使用的主要数据类型。设计和构建您的数据库。
原文地址:https://www.codeproject.com/Articles/1279827/Common-Data-Types-used-in-SQL-Server