sql自定义数据类型
SQLServer中修改“用户自定义表类型”问题的分析与方法
SQLServer中修改“⽤户⾃定义表类型”问题的分析与⽅法前⾔SQL Server开发过程中,为了传⼊数据集类型的变量(⽐如接受C#中的DataTable类型变量),需要定义“⽤户⾃定义表类型”,通过“⽤户⾃定义表类型”可以接收⼆维数据集作为参数,在需要修改“⽤户⾃定义表类型”的时候,增加字段,删除字段,修改字段类型等,它没有像表⼀样的alter table语法来进⾏修改。
只能通过删除重建来实现,但是在删除“⽤户⾃定义表类型”的时候会提⽰有对象引⽤它(某些存储过程⽤到了这个“⽤户⾃定义表类型”),因此⽆法删除。
为了达到公⽤的⽬的,有时候⼀个TableType可以在多个地⽅分别被引⽤到,这样的话,势必要先删除所有的引⽤了这个“⽤户⾃定义表类型”的对象(存储过程等)如果这个“⽤户⾃定义表类型”被多个存储过程引⽤,那么就要分别删除多个引⽤了“⽤户⾃定义表类型”的存储过程,然后修改“⽤户⾃定义表类型”,在重建存储过程,这样做起来似乎有点绕,这个问题可以⽤过EXEC sys.sp_refreshsqlmodule这个系统函数来简介实现“⽤户⾃定义表类型”的定义TableType的基本使⽤如下创建⼀个⽤户⾃定义表类型定义的TableType可以在⽤户⾃定义表类型中找到创建两个存储过程,分别⽤到了上⾯定义的⽤户⾃定义表类型,模拟⽤户⾃定义表类型被引⽤的情况此时的存储过程可以接收TableType参数并正常运⾏TableType的修改TableType类型不⽀持alter语法,也即⽆法直接修改TableType的定义那么只能通过删除TableType的⽅法来重建这个TableType,当删除的时候,仍然报错,提⽰“因为它正由对象 '***' 引⽤。
可能还有其他对象在引⽤此类型。
”此时只能删除引⽤了这个TableType的对象来解决,下⾯可以查到那些对象引⽤了某⼀个TableType,然后分别删除,重建TableType,再重建存储过程,有点绕弯⼦。
SQLSERVER2008实用教程实验参考答案(实验5)
实验5 T-SQL编程1. 自定义数据类型新建一个数据类型ID_Type,用于描述员工编号。
新建一个表Employees3,表结构与Employees 表类似,EmployeeID列的数据类型使用自定义的数据类型。
方法1:使用系统内置的存储过程sp_addtype。
USE YGGLEXEC sp_addtype'ID_Type','char(6)','not null'GO方法2:使用CREATE TYPE语句USE YGGLGOCREATE TYPE ID_Type FROM char(6)NOT NULL;--查看可编程性-类型-用户定义数据类型中的变化IF EXISTS(SELECT name FROM sysobjects WHERE name='Employees3')DROP TABLE Employees3CREATE TABLE Employees3(EmployeeID ID_Type PRIMARY KEY,Name char(10)NOT NULL,Education char(4)NOT NULL,Birthday date NOT NULL,Sex bit NOT NULL DEFAULT 1,WorkYear tinyint NULL,Address varchar(40)NULL,PhoneNumber char(12)NULL,DepartmentID char(3)NOT NULL)GO2. 变量的使用(1)创建一个名为Female的用户变量,并在Employees表中查询所有女员工的编号、姓名、性别DECLARE@Female bit--定义变量,指定变量数据类型SET@Female=0 --为该变量赋初值SELECT EmployeeID,Name,Sex FROM Employees WHERE Sex=@Female;(2)定义一个变量,将员工编号为102201的员工的电话号码赋值给该变量DECLARE@Phone char(12)SET@Phone=(SELECT PhoneNumber FROM Employees WHERE EmployeeID='102201')SELECT a.*,@Phone FROM Employees a WHERE EmployeeID='102201';(3)定义一个变量,用于描述Salary表中000001号员工的实际收入,然后查询该变量DECLARE@RealIncome floatSET@RealIncome=(SELECT InCome-OutCome FROM Salary WHEREEmployeeID='000001')SELECT@RealIncome;3. 运算符的使用(1)查询员工的实际收入SELECT InCome-OutCome AS实际收入FROM Salary;(2)查询工作时间大于5年的员工信息SELECT*FROM Employees WHERE WorkYear>5;4.流程控制语句(1)判断Employees表中是否存在编号为111006的员工,如果存在,则显示该员工信息,如果不存在,则显示查无此人IF EXISTS(SELECT Name FROM Employees WHERE EmployeeID='111006') SELECT*FROM Employees WHERE EmployeeID='111006'ELSESELECT'查无此人'(2)判断姓名为“王林”的员工的实际收入是否高于3000元,如果是,则显示其收入,如果不是,则显示“收入不高于3000元”--先查找实际收入,再进行IF判断IF(SELECT b.InCome-b.OutCome AS实际收入FROM Employees a,Salary b WHERE a.EmployeeID=b.EmployeeID AND ='王林')>3000SELECT b.InCome-b.OutCome AS实际收入FROM Employees a,Salary b WHERE a.EmployeeID=b.EmployeeID AND ='王林'ELSESELECT'收入不高于元'(3)假设变量X的初始值为0,每次加1,直到X变为5,并打印输出DECLARE@X INTSET@X=0WHILE@X<5BEGINSET@X=@X+1PRINT'X='+CONVERT(char(1),@X)ENDGO(4)使用循环输出一个用’*’组成的三角形DECLARE@i INTDECLARE@n INTSET@n=10SET@i=1WHILE (@i<@n)BEGIN--SPACE函数:返回指定个数重复的空格组成的字符串--REPLICATE函数:以指定的次数重复字符表达式PRINT (SPACE((@n-@i)/2)+REPLICATE('*',@i))SET@i=@i+2ENDGO(5)使用CASE语句对Employees表按部门进行分类SELECT EmployeeID,DepartmentID=CASE DepartmentIDWHEN 1 THEN (SELECT DepartmentName FROM Departments b WHEREb.DepartmentID='1')WHEN 2 THEN (SELECT DepartmentName FROM Departments b WHEREb.DepartmentID='2')WHEN 3 THEN (SELECT DepartmentName FROM Departments b WHEREb.DepartmentID='3')WHEN 4 THEN (SELECT DepartmentName FROM Departments b WHEREb.DepartmentID='4')WHEN 5 THEN (SELECT DepartmentName FROM Departments b WHEREb.DepartmentID='5')ENDFROM Employees ORDER BY DepartmentID;5. 自定义函数的使用定义一个函数CHECK_ID:对于一个给定的DepartmentID值,查询该值在Departments表中是否存在,如果存在,则返回1,不存在,则返回0。
sqlserver数据类型及适用范围
sqlserver数据类型及适用范围SQL Server是一种关系型数据库管理系统,它支持多种数据类型,每种数据类型都有其适用范围和特点。
本文将介绍一些常用的SQL Server数据类型及其适用范围,以帮助读者更好地理解和使用这些数据类型。
1. 整数数据类型:- INT:用于存储整数值,范围为-2^31到2^31-1。
- BIGINT:用于存储大整数值,范围为-2^63到2^63-1。
- SMALLINT:用于存储小整数值,范围为-2^15到2^15-1。
2. 小数数据类型:- FLOAT:用于存储浮点数值,范围为-1.79E+308到1.79E+308。
- DECIMAL:用于存储固定精度的小数值,需要指定精度和小数位数。
3. 字符串数据类型:- VARCHAR:用于存储可变长度的字符串,最大长度为8000个字符。
- CHAR:用于存储固定长度的字符串,需要指定长度,最大长度为8000个字符。
- NVARCHAR:用于存储Unicode格式的可变长度字符串,最大长度为4000个字符。
- NCHAR:用于存储Unicode格式的固定长度字符串,需要指定长度,最大长度为4000个字符。
4. 日期和时间数据类型:- DATETIME:用于存储日期和时间,范围为1753年1月1日到9999年12月31日。
- DATE:用于存储日期,范围为0001年1月1日到9999年12月31日。
- TIME:用于存储时间,范围为00:00:00到23:59:59。
5. 布尔数据类型:- BIT:用于存储布尔值,可以是0、1或NULL。
6. 二进制数据类型:- VARBINARY:用于存储可变长度的二进制数据,最大长度为8000个字节。
- BINARY:用于存储固定长度的二进制数据,需要指定长度,最大长度为8000个字节。
7. 其他数据类型:- XML:用于存储XML格式的数据。
- UNIQUEIDENTIFIER:用于存储全局唯一标识符(GUID)。
SQL2005的数据类型详解
五、字符数据类型
字符数据类型是使用最多的数据类型。它可以用来存储各种字母、数字符号、特殊符号。一般情况下,使用字符类型数据时须在其前后加上单引号’或双引号” 。
1 CHAR
CHAR 数据类型的定义形式为CHAR[ (n) 。 以CHAR 类型存储的每个字符和符号占一个字节的存储空间。n 表示所有字符所占的存储空间,n 的取值为1 到8000, 即可容纳8000 个ANSI 字符。若不指定n 值,则系统默认值为1。若输入数据的字符数小于n,则系统自动在其后添加空格来填满设定好的空间。若输入的数据过长,将会截掉其超出部分。
DMY:31/12/1999 31-12-1999 31.12.2000
* 纯数字格式
1、REAL 数据类型
REAL数据类型可精确到第7 位小数,其范围为从-3.40E -38 到3.40E +38。每个REAL类型的数据占用4 个字节的存储空间。
2、FLOAT
FLOAT 数据类型可精确到第15 位小数,其范围为从-1.79E -308 到1.79E +308。每个FLOAT 类型的数据占用8 个字节的存储空间。 FLOAT数据类型可写为FLOAT[ n ]的形式。n 指定FLOAT 数据的精度。n 为1到15 之间的整数值。当n 取1 到7 时,实际上是定义了一个REAL 类型的数据,系统用4 个字节存储它;当n 取8 到15 时,系统认为其是FLOAT 类型,用8 个字节存储它。
一般情况下,由于CHAR 数据类型长度固定,因此它比VARCHAR 类型的处理速度快。
4、NVARCHAR
NVARCHAR数据类型的定义形式为NVARCHAR[ (n) ]。 它与VARCHAR 类型相似。不同的是,NVARCHAR数据类型采用UNICODE 标准字符集(Character Set), n 的取值为1 到4000。
sql2010 alter语句 数据类型
在SQL Server 2010 中,你可以使用ALTER TABLE 语句来修改表中的数据类型。
下面是一些常用的数据类型及其修改方式:1. INT - 修改为BIGINTsqlALTER TABLE your_table_nameALTER COLUMN your_column_name BIGINT;2. VARCHAR(50) - 修改为VARCHAR(100)sqlALTER TABLE your_table_nameALTER COLUMN your_column_name VARCHAR(100);3. FLOAT - 修改为DECIMAL(10,2)sqlALTER TABLE your_table_nameALTER COLUMN your_column_name DECIMAL(10,2);4. NVARCHAR(50) - 修改为NVARCHAR(MAX)sqlALTER TABLE your_table_nameALTER COLUMN your_column_name NVARCHAR(MAX);5. DATE - 修改为DATETIME2sqlALTER TABLE your_table_nameALTER COLUMN your_column_name DATETIME2;6. DECIMAL(10,2) - 修改为FLOATsqlALTER TABLE your_table_nameALTER COLUMN your_column_name FLOAT;7. NCHAR(50) - 修改为NVARCHAR(50) 或其他长度sqlALTER TABLE your_table_nameALTER COLUMN your_column_name NVARCHAR(50); -- 或其他你想要的长度8. BINARY(50) - 修改为VARBINARY(MAX)sqlALTER TABLE your_table_nameALTER COLUMN your_column_name VARBINARY(MAX);9. BIT - 修改为TINYINT、SMALLINT、INT 或其他整数类型(根据需要)10. 更改数据类型的长度:例如,将VARCHAR(50) 更改为VARCHAR(100)。
odps sql 字段类型
odps sql 字段类型一、字符串类型(STRING)字符串类型是ODPS SQL中最常用的字段类型之一。
它用于存储文本数据,如姓名、地址、描述等。
字符串类型的字段长度可以根据实际需求进行设置,最大长度为2^30-1字节(约为1GB)。
二、整数类型(BIGINT, INT, SMALLINT, TINYINT)整数类型用于存储整数数据。
ODPS SQL提供了多种整数类型,包括BIGINT、INT、SMALLINT和TINYINT,分别用于存储不同范围的整数数据。
其中,BIGINT可以存储范围最大的整数数据,而TINYINT可以存储范围最小的整数数据。
三、浮点数类型(DOUBLE, FLOAT)浮点数类型用于存储浮点数数据。
ODPS SQL提供了两种浮点数类型,分别是DOUBLE和FLOAT。
它们可以存储不同精度的浮点数数据,其中DOUBLE存储的精度较高,FLOAT存储的精度较低。
四、布尔类型(BOOLEAN)布尔类型用于存储布尔值,即真或假。
ODPS SQL中的布尔类型只有两个取值,分别是TRUE和FALSE。
布尔类型的字段在数据分析中常用于逻辑判断和筛选数据。
五、日期类型(DATETIME, DATE)日期类型用于存储日期和时间数据。
ODPS SQL提供了两种日期类型,分别是DATETIME和DATE。
DATETIME类型可以存储日期和时间的完整信息,而DATE类型只能存储日期信息。
日期类型的字段在时间序列分析和数据统计中经常使用。
六、二进制类型(BINARY)二进制类型用于存储二进制数据。
ODPS SQL中的二进制类型可以存储任意二进制数据,如图片、音频等。
二进制类型的字段在存储大数据量的二进制文件时非常有用。
七、数组类型(ARRAY)数组类型用于存储多个相同类型的值。
ODPS SQL中的数组类型可以存储各种类型的数据,如字符串数组、整数数组等。
数组类型的字段在存储多值属性或多个选项时非常方便。
sql自定义数据类型
6.2 用户自定义数据类型6.2.1 创建用户自定义数据类型可以使用T-SQL语句或企业管理器来完成用户自定义数据类型的创建。
1. 使用T-SQL语句可以使用系统存储过程sp_addtype来创建用户自定义数据类型。
语法是:sp_addtype type_name[,system_type]{'NULL'|'NOT NULL'|'NONULL'}-默认为'NULL'其中:type_name为用户定义数据类型名,这个名称在数据库中必须是惟一的。
system_type 为用户定义的数据类型所基于的系统数据类型,可以包括数据的长度、精度等。
当系统数据类型中包括标点符号(例如括号、逗号)时,应用引号括起来。
例如,创建一个“号码”数据类型可使用如下代码:USE 学生图书借阅管理EXEC sp_addtype 号码,'varchar(8)','NULL'在查询分析器中执行上述语句,结果窗口显示如下信息:(所影响的行数为1行)类型已添加。
2. 使用企业管理器使用企业管理器创建用户自定义数据类型的操作步骤如下:(1)在企业管理器中展开要创建用户自定义数据类型的数据库,用鼠标右键单击“用户定义的数据类型”目录,在弹出的快捷菜单中选择“新建用户定义数据类型”命令,如图6-14所示。
图6-14 新建用户自定义数据类型(2)打开的用户自定义数据类型属性对话框如图6-15所示。
在图6-15所示对话框的名称文本框中输入用户自定义数据类型的名称,如“号码”。
图6-15 用户自定义数据类型属性对话框图6-16 创建用户自定义数据类型“号码”(3)在图6-15所示对话框的“数据类型”下拉列表框中,选择该用户自定义数据类型所基于的系统数据类型,如varchar。
(4)如果选择的基类型是可以设定长度的(如varchar、char等),则还需要在长度文本框中设定数据类型的长度。
sql数据字段类型
sql数据字段类型bit 整型bit数据类型是整型,其值只能是0、1或空值。
这种数据类型⽤于存储只有两种可能值的数据,如Yes 或No、True 或False 、On 或Off.注意:很省空间的⼀种数据类型,如果能够满⾜需求应该尽量多⽤。
tinyint 整型tinyint 数据类型能存储从0到255 之间的整数。
它在你只打算存储有限数⽬的数值时很有⽤。
这种数据类型在数据库中占⽤1 个字节.注意:如果bit类型太单调不能满⾜您的需求,您可以考虑⽤tinyint类型,因为这个类型相对也是⽐较安全的,不接受恶意脚本内容的嵌⼊。
smallint 整型smallint 数据类型可以存储从- 2的15次幂(-32768)到2的15次幂(32767)之间的整数。
这种数据类型对存储⼀些常限定在特定范围内的数值型数据⾮常有⽤。
这种数据类型在数据库⾥占⽤2 字节空间.注意:如果tinyint类型太单调不能满⾜您的需求,您可以考虑⽤smallint类型,因为这个类型相对也是⽐较安全的,不接受恶意脚本内容的嵌⼊。
int 整型int 数据类型可以存储从- 2的31次幂(-2147483648)到2的31次幂 (2147483 647)之间的整数。
存储到数据库的⼏乎所有数值型的数据都可以⽤这种数据类型。
这种数据类型在数据库⾥占⽤4个字节.注意:如果smallint也不能够满⾜您的需求,您可以考虑⽤长度更⼤的int类型。
decimal 精确数值型decimal 数据类型能⽤来存储从-10的38次幂-1到10的38次幂-1的固定精度和范围的数值型数据。
使⽤这种数据类型时,必须指定范围和精度。
范围是⼩数点左右所能存储的数字的总位数。
精度是⼩数点右边存储的数字的位数numeric 精确数值型numeric数据类型与decimal 相似。
smallmoney 货币型smallmoney 数据类型⽤来表⽰钱和货币值。
这种数据类型能存储从-214748.3648 到214748.3647 之间的数据,精确到货币单位的万分之⼀money 货币型money数据类型⽤来表⽰钱和货币值。
SQLServer2000数据类型
SQL Server为了实现T-SQL的良好性能,提供了丰富的数据类型。
一、数值型数据1.BigintBigint型数据可以存放从-263到263-1范围内的整型数据。
以bigint数据类型存储的每个值占用8个字节,共64位,其中63位用于存储数字,1位用于表示正负。
2.IntInt也可以写作integer,可以存储从-231~231-1(-2,147,483,648~2,147,483,647)范围内的全部整数。
以int数据类型存储的每个值占用4个字节,共32位,其中31位用于存储数字,1位用于表示正负的区别。
3.smallintSmallint型数据可以存储从-215~215- 1(-32,768~32,767)范围内的所有整数。
以smallint 数据类型存储的每个值占用2个字节,共16位,其中15位用于存储数字,1位用于表示正负的区别。
4.TinyintTinyint型数据可以存储0~255范围内的所有整数。
以tinyint数据类型存储的每个值占用1个字节。
整数型数据可以在较少的字节里存储较大的精确数字,而且存储结构的效率很高,所以平时在选用数据类型时,尽量选用整数数据类型。
5.Decimal和Numeric事实上,numeric数据类型是decimal数据类型的同义词。
但是二者也有区别,在表格中,只有numeric型数据的列可以带有identity关键字,decimal可以简写为dec。
使用decimal和numeric型数据可以精确指定小数点两边的总位数(精度,precision简写为p)和小数点右面的位数(刻度,scale简写为s)。
在SQL Server中,decimal和numeric型数据的最高精度的可以达到38位,即1≤p≤38,0≤s≤p。
decimal和numeric型数据的刻度的取值范围必须小于精度的最大范围,也就是说必须在-1038-1~1038-1之间。
SQL Server分配给decimal和numeric型数据的存储空间随精度的不同而不同,一般说来对应的比例关系如下所示:精度范围分配字节数1~9 510~19 920~28 1329~38 176.float和realReal型数据范围从-3.40E+38~1.79E+38,存储时使用4个字节。
Sql数据库字段类型
SQL Server数据库的数据类型详细介绍SQLServer 提供了25 种数据类型:Binary [(n)],Varbinary [(n)],Char[(n)],Varchar[(n)],Nchar[(n)],Nvarchar[(n)],Datetime,SmalldatetimeDecimal[(p[,s])],Numeric[(p[,s])],Float[(n)],Real,Int,Smallint,Tinyint,Money,Smallmoney,Bit,CursorSysname,Timestamp,Uniqueidentifier,Text,Image,Ntext。
下面来分别介绍这些数据类型:(1)二进制数据类型二进制数据包括Binary、Varbinary 和ImageBinary[(n)]和Varbinary[(n)] :n 的取值范围是从1 到8000。
其存储窨的大小是n + 4 个字节。
Image 数据类型中存储的数据是以位字符串存储的,不是由SQL Server 解释的,必须由应用程序来解释。
例如,应用程序可以使用BMP、TIEF、GIF 和JPEG 格式把数据存储在Image 数据类型中。
(2)字符数据类型字符数据的类型包括Char,Varchar 和Text字符数据是由任何字母、符号和数字任意组合而成的数据。
Char和Varchar:长度不超过8KB。
超过8KB 的ASCII 数据可以使用Text数据类型存储。
例如,因为Html 文档全部都是ASCII 字符,并且在一般情况下长度超过8KB,所以这些文档可以Text 数据类型存储在SQL Server 中。
(3)Unicode 数据类型Unicode 数据类型包括Nchar,Nvarchar 和Ntext(4)日期和时间数据类型日期和时间数据类型包括Datetime, Smalldatetime, Date, TimeStamp日期和时间数据类型由有效的日期和时间组成。
SQL数据类型
2)nchar、nvarchar、ntext 从名称上看只是多了个字母"n",它表示存储的是Unicode数据 类型的字符。 Unicode字符集所有的字符都用两个字
节表示,即英文字符也是用两个字节表示。nchar、 nvarchar的长度是在1到4000之间。和char、 varchar比较:nchar、nvarchar则最多存储4000个 字符,不论是英文还是汉字;而char、varchar最多 能存储8000个英文,4000个汉字。可以看出使用 nchar、nvarchar数据类型时不用担心输入的字符是 英文还是汉字,较为方便,但在存储英文时数量上 有些损失。
说明: 说明:
1)char、varchar、text char和varchar的长度都在1到8000之间,它们的区 别在于char是定长字符数据,而varchar是变长字符 数据。所谓定长就是长度固定的,当输入的数据长 度没有达到指定的长度时将自动以英文空格在其后 面填充,使长度达到相应的长度;而变长字符数据 则不会以空格填充。 text存储可变长度的非 Unicode数据,最大长度为231-1(2,147,483,647)个 字符。
5)decimal和numeric 这两种数据类型是等效的。都有两个参数:p(精度) 和s(小数位数)。p指定小数点左边和右边可以存储 的十进制数字的最大个数,p必须是从 1到38之间的值。 s指定小数点右边可以存储的十进制数字的最大个数, s必须是从0到p之间的值,默认小数位数是0。6)float 和real float:从-1.79308到1.79308之间的浮点数字数据。 real:从-3.4038到3.4038之间的浮点数字数据。在SQL Server中,real的同义词为fl型: char、varchar、 nchar、 nvarchar、 text、ntext; (2) 数值型 int、smallint、tinyint、 bigint、 decimal/numeric float real decimal/numeric、float、real; (3) 货币类型:money、smallmoney; (4) 时间类型:datetime、smalldatetime; (5) 二进制类型:binary、varbinary、image; (6) 其他类型:bit、XML、Timestamp、 Uniqueidentifier,crusor、sql_variant;
sqlserver浮点数据类型
SQL Server浮点数据类型SQL Server是一种关系型数据库管理系统,它提供了多种数据类型用于存储和处理不同类型的数据。
其中之一是浮点数据类型,用于存储包含小数部分的数字。
本文将介绍SQL Server中的浮点数据类型及其用法。
概述浮点数据类型是用于存储浮点数的数据类型,其特点是能够精确地表示大范围的数值。
SQL Server提供了两种浮点数据类型:float和real。
两者的区别在于所占存储空间和精度。
•float数据类型占用8字节的存储空间,可以存储范围很大的数值,具有高精度。
•real数据类型占用4字节的存储空间,可以存储较小范围的数值,精度较低。
语法以下是在SQL Server中定义浮点数据类型字段的语法:column_name data_type [ ( precision [, scale ] ) ]其中,data_type可以是float或real类型。
示例下面是一个使用float数据类型定义的示例:CREATE TABLE Product(ID int,Price float(8, 2));在上述示例中,表Product有两个字段:ID和Price。
Price字段使用float数据类型,精度为8,小数点后保留2位。
存储范围和精度float和real数据类型的存储范围和精度如下所示:•float数据类型的存储范围为-1.79E+308到1.79E+308,精度为15位。
•real数据类型的存储范围为-3.40E+38到3.40E+38,精度为7位。
请注意,浮点数据类型的精度是近似值,而不是精确值。
这是由于计算机内部处理浮点数时的限制。
因此,当进行浮点数计算时,可能会出现舍入误差。
数据类型转换在SQL Server中,可以使用CAST或CONVERT函数将一个数据类型转换为另一个数据类型。
下面是一个将float数据类型转换为int数据类型的示例:DECLARE @Number float;SET @Number = 10.5;DECLARE @IntNumber int;SET @IntNumber = CAST(@Number AS int);SELECT @IntNumber;在上述示例中,首先声明了一个float类型的变量@Number,并将其赋值为10.5。
sql 小数点两位数据类型
sql 小数点两位数据类型SQL小数点两位数据类型在SQL语言中,小数是一种常用的数据类型。
小数点前面是整数,后面是小数部分。
而小数点后面的数字个数是根据具体业务需求来决定的。
在一些场景下,只需要保留小数点后两位即可,这就需要用到小数点两位的数据类型。
SQL中小数点两位的数据类型主要有浮点数和定点数两种。
浮点数浮点数在计算机中的存储方式是将小数部分转换为二进制后存储,但是由于计算机有限的二进制存储节点数量,因此浮点数在计算过程中有一定的精度误差。
由于使用浮点数进行计算时存在精度损失,因此在开发中常常会采用定点数来替代它。
定点数定点数是按照小数点位置来计算的一种数据类型,它是将数字的小数部分按照需要的小数位数抽象出来,然后以整数形式存储。
这种数据类型具有精确度高、精度不会随着计算过程的增加而发生变化等特点,因此在财务、金融等领域里被广泛应用。
在SQL中,定点数数据类型可以使用DECIMAL或NUMERIC关键字创建。
例如,我们可以使用如下语句创建一个小数点后两位的表格:CREATE TABLE test_table(id INT PRIMARY KEY,price DECIMAL(10,2));在上述语句中,DECIMAL(10,2)指定了数值类型为DECIMAL,总数位为10,其中有2位为小数。
这意味着在该表中存储的所有价格都有两位小数,且整体位数不超过10。
小数点两位的数据类型在SQL中也有一些有趣的特点。
例如,我们可以通过该数据类型来实现四舍五入,截取小数部分等操作。
例如,以下语句可以将一个浮点型转换为小数点后两位的定点数:SELECT CAST(123.456789 AS DECIMAL(10,2));在上述语句中,使用CAST函数将123.456789转换为了DECIMAL类型的数据,并且小数点后仅保留了两位。
尽管定点数在保证精度的同时占用的存储空间较大,但是将小数点后的位数指定为2可以显著减少存储空间。
SQL中的五种数据类型简介
SQL中的五种数据类型:字符型,文本型,数值型,逻辑型和日期型字符型VARCHAR VS CHARVARCHAR型和CHAR型数据的这个差别是细微的,但是非常重要。
他们都是用来储存字符串长度小于255的字符。
假如你向一个长度为四十个字符的VARCHAR型字段中输入数据BIll GAtES。
当你以后从这个字段中取出此数据时,你取出的数据其长度为十个字符——字符串Bill Gates的长度。
现在假如你把字符串输入一个长度为四十个字符的CHAR型字段中,那么当你取出数据时,所取出的数据长度将是四十个字符。
字符串的后面会被附加多余的空格。
当你建立自己的站点时,你会发现使用VARCHAR型字段要比CHAR型字段方便的多。
使用VARCHAR型字段时,你不需要为剪掉你数据中多余的空格而操心。
VARCHAR型字段的另一个突出的好处是它可以比CHAR型字段占用更少的内存和硬盘空间。
当你的数据库很大时,这种内存和磁盘空间的节省会变得非常重要文本型TEXT使用文本型数据,你可以存放超过二十亿个字符的字符串。
当你需要存储大串的字符时,应该使用文本型数据。
注意文本型数据没有长度,而上一节中所讲的字符型数据是有长度的。
一个文本型字段中的数据通常要么为空,要么很大。
当你从HTML fORM的多行文本编辑框(TEXTAREA)中收集数据时,你应该把收集的信息存储于文本型字段中。
但是,无论何时,只要你能避免使用文本型字段,你就应该不适用它。
文本型字段既大且慢,滥用文本型字段会使服务器速度变慢。
文本型字段还会吃掉大量的磁盘空间。
一旦你向文本型字段中输入了任何数据(甚至是空值),就会有2K的空间被自动分配给该数据。
除非删除该记录,否则你无法收回这部分存储空间。
数值型SQL支持许多种不同的数值型数据。
你可以存储整数 INT 、小数 NUMERIC、和钱数 MONEY。
INT VS SMALLINT VS TINYINT他们的区别只是字符长度:INT型数据的表数范围是从-2,147,483,647到2,147,483,647的整数SMALLINT 型数据可以存储从-32768到32768的整数TINYINT 型的字段只能存储从0到255的整数,不能用来储存负数通常,为了节省空间,应该尽可能的使用最小的整型数据。
SQL中的五种数据类型
SQL中的五种数据类型:字符型,文本型,数值型,逻辑型和日期型字符型VARCHAR VS CHARVARCHAR型和CHAR型数据的这个差别是细微的,但是非常重要。
他们都是用来储存字符串长度小于255的字符。
假如你向一个长度为四十个字符的VARCHAR型字段中输入数据BIll GAtES。
当你以后从这个字段中取出此数据时,你取出的数据其长度为十个字符——字符串Bill Gates的长度。
现在假如你把字符串输入一个长度为四十个字符的CHAR型字段中,那么当你取出数据时,所取出的数据长度将是四十个字符。
字符串的后面会被附加多余的空格。
当你建立自己的站点时,你会发现使用VARCHAR型字段要比CHAR型字段方便的多。
使用VARCHAR型字段时,你不需要为剪掉你数据中多余的空格而操心。
VARCHAR型字段的另一个突出的好处是它可以比CHAR型字段占用更少的内存和硬盘空间。
当你的数据库很大时,这种内存和磁盘空间的节省会变得非常重要文本型TEXT使用文本型数据,你可以存放超过二十亿个字符的字符串。
当你需要存储大串的字符时,应该使用文本型数据。
注意文本型数据没有长度,而上一节中所讲的字符型数据是有长度的。
一个文本型字段中的数据通常要么为空,要么很大。
当你从HTML fORM的多行文本编辑框(TEXTAREA)中收集数据时,你应该把收集的信息存储于文本型字段中。
但是,无论何时,只要你能避免使用文本型字段,你就应该不适用它。
文本型字段既大且慢,滥用文本型字段会使服务器速度变慢。
文本型字段还会吃掉大量的磁盘空间。
一旦你向文本型字段中输入了任何数据(甚至是空值),就会有2K的空间被自动分配给该数据。
除非删除该记录,否则你无法收回这部分存储空间。
数值型SQL支持许多种不同的数值型数据。
你可以存储整数 INT 、小数 NUMERIC、和钱数 MONEY。
INT VS SMALLINT VS TINYINT他们的区别只是字符长度:INT型数据的表数范围是从-2,147,483,647到2,147,483,647的整数SMALLINT 型数据可以存储从-32768到32768的整数TINYINT 型的字段只能存储从0到255的整数,不能用来储存负数通常,为了节省空间,应该尽可能的使用最小的整型数据。
SQL SERVER常用数据类型
SQL SERVER常用数据类型一、整数数据类型整数数据类型是最常用的数据类型之一。
1、INT (INTEGER)INT (或INTEGER)数据类型存储从-2的31次方(-2 ,147 ,483 ,648)到2的31次方-1 (2 ,147 ,483,647)之间的所有正负整数。
每个INT 类型的数据按4 个字节存储,其中1 位表示整数值的正负号,其它31 位表示整数值的长度和大小。
2、SMALLINTSMALLINT 数据类型存储从-2的15次方(-32,768)到2的15次方-1(32 ,767 )之间的所有正负整数。
每个SMALLINT 类型的数据占用2 个字节的存储空间,其中1 位表示整数值的正负号,其它15 位表示整数值的长度和大小。
3、TINYINTTINYINT数据类型存储从0 到255 之间的所有正整数。
每个TINYINT类型的数据占用1 个字节的存储空间。
4、BIGINTBIGINT 数据类型存储从-2^63 (-9 ,223,372,036,854,775,807)到2^63-1(9,223,372,036 ,854 ,775,807)之间的所有正负整数。
每个BIGINT 类型的数据占用8个字节的存储空间。
二、浮点数据类型浮点数据类型用于存储十进制小数。
浮点数值的数据在SQL Server 中采用上舍入(Round up 或称为只入不舍)方式进行存储。
所谓上舍入是指,当(且仅当)要舍入的数是一个非零数时,对其保留数字部分的最低有效位上的数值加1 ,并进行必要的进位。
若一个数是上舍入数,其绝对值不会减少。
如:对3.14159265358979 分别进行 2 位和12位舍入,结果为 3.15 和3.141592653590。
1、REAL 数据类型REAL数据类型可精确到第7 位小数,其范围为从-3.40E -38 到3.40E +38。
每个REAL类型的数据占用4 个字节的存储空间。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6.2 用户自定义数据类型
6.2.1 创建用户自定义数据类型
可以使用T-SQL语句或企业管理器来完成用户自定义数据类型的创建。
1. 使用T-SQL语句
可以使用系统存储过程sp_addtype来创建用户自定义数据类型。
语法是:sp_addtype type_name[,system_type]
{'NULL'|'NOT NULL'|'NONULL'}-默认为'NULL'
其中:
type_name为用户定义数据类型名,这个名称在数据库中必须是惟一的。
system_type 为用户定义的数据类型所基于的系统数据类型,可以包括数据的长度、精度等。
当系统数据类型中包括标点符号(例如括号、逗号)时,应用引号括起来。
例如,创建一个“号码”数据类型可使用如下代码:
USE 学生图书借阅管理
EXEC sp_addtype 号码,'varchar(8)','NULL'
在查询分析器中执行上述语句,结果窗口显示如下信息:
(所影响的行数为1行)
类型已添加。
2. 使用企业管理器
使用企业管理器创建用户自定义数据类型的操作步骤如下:
(1)在企业管理器中展开要创建用户自定义数据类型的数据库,用鼠标右键单击“用户定义的数据类型”目录,在弹出的快捷菜单中选择“新建用户定义数据类型”命令,如图6-14所示。
图6-14 新建用户自定义数据类型
(2)打开的用户自定义数据类型属性对话框如图6-15所示。
在图6-15所示对话框的名
称文本框中输入用户自定义数据类型的名称,如“号码”。
图6-15 用户自定义数据类型属性对话框
图6-16 创建用户自定义数据类型“号码”
(3)在图6-15所示对话框的“数据类型”下拉列表框中,选择该用户自定义数据类型所基于的系统数据类型,如varchar。
(4)如果选择的基类型是可以设定长度的(如varchar、char等),则还需要在长度文本框中设定数据类型的长度。
(5)如果允许空值,则选中“允许NULL值”复选框。
(6)如果希望该数据类型与规则或默认值捆绑,则分别在“规则”和“默认值”下拉列表框中选择要绑定的规则和默认值,否则选择“无”,如图6-16所示。
规则和默认值将在
6.3节和6.4节中介绍。
(7)单击“确定”按钮,关闭对话框。
6.2.2 查看用户自定义数据类型
要查看用户自定义数据类型,可以使用sp_help 系统存储过程来查看用户自定义数据
类型的信息。
包括它基于的系统数据类型,它的长度、精度,是否允许空值,以及在这一数据类型上捆绑的规则和默认值等。
例如,使用查询分析器查看用户自定义数据类型“号码",如图6-17所示。
图6-17 查看用户自定义数据类型“号码”
6.2.3 删除用户自定义数据类型
可以使用T-SQL语句和企业管理器来删除用户自定义数据类型。
1. 使用T-SQL语句
使用系统存储过程sp_droptype来删除用户自定义数据类型。
语法为:
sp_droptype type_name
其中,type_name为要删除的用户自定义数据类型名。
注意:正在被表或数据库使用的用户自定义数据类型不能被删除。
例如,将“学生信息”表“电话”列的数据类型改为用户自定义数据类型“号码”,代码如下:
ALTER TABLE 学生信息
ALTER COLUMN 电话号码
如果此时使用系统存储过程sp_droptype删除用户自定义数据类型“号码”,SQL Server 会返回错误信息,如图6-18所示。
图6-18 错误信息
2. 使用企业管理器
使用企业管理器删除用户自定义的数据类型的操作步骤如下:
(1)在企业管理器中展开用户自定义数据类型所在的数据库,选中“用户自定义数据类型”,右边的窗口中将显示数据库中所有用户自定义数据类型。
用鼠标右键单击要删除的用户自定义数据类型,在弹出的快捷菜单中选择“删除”命令。
(2)打开如图6-19所示的删除对话框。
(3)单击如图6-19所示对话框中的“全部除去”按钮。
如果该数据类型正在被使用,则会显示如图6-20所示的警告
图6-19 删除对话框
图6-20 警告框。