资源描述:
《数据库技术与应用——SQL Server 2005 教学课件 作者 张建伟 第6章 Transact-SQL语言.ppt》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、第6章Transact-SQL语言7/21/2021主要内容数据类型变量运算符及表达式控制语句和批处理常用函数用户自定义函数调试环境-SSMS6.1数据类型精确数字类型近似数字类型日期和时间类型字符数据类型二进制数据类型其他类型用户自定义类型精确数字类型-整数类型数据类型范围存储bigint-2^63(-9,223,372,036,854,775,808)到2^63-1(9,223,372,036,854,775,807)8字节int-2^31(-2,147,483,648)到2^31-1(2,147,483,647)4字节smallint-2^15(-
2、32,768)到2^15-1(32,767)2字节tinyint0到2551字节精确数字类型-逻辑数据类型Bit是可以取值为1、0或NULL的整数数据类型。SQLServer2005优化了Bit列的存储。如果表中的列为8Bit或更少,则这些列作为1个字节存储。如果列为9到16Bit,则这些列作为2个字节存储。精确数字类型-DECIMAL和NUMERICDECIMAL和NUMBERIC为带固定精度和小数位数的数值数据类型。定义样式为:DECIMAL[(p[,s])]和NUMERIC[(p[,s])]。如DECIMAL(15,5),表示共有15位数,其中整数
3、10位,小数5位。从表6.4可以看出,存储字节数为9。精确数字类型-money和smallmoneymoney和smallmoney代表货币或货币值的数据类型,数据类型精确到它们所代表的货币单位的万分之一。money:8字节,smallmoney4字节近似数字类型-real和float用于表示浮点数值数据的类型为大致数值数据类型。浮点数据为近似值。用法为float[(n)],其中n为用于存储float数值尾数的位数。Real相当于float(24),而double相当于float(53)。[例6.1]使用如下语句创建表createtabletestflo
4、at(col1float(20),col2float(53),col3float)执行之后,查看列的信息如图6.2所示,col1指定n小于24,故定义为real类型。日期和时间类型数据类型范围精确度datetime1753年1月1日到9999年12月31日3.33毫秒smalldatetime1900年1月1日到2079年6月6日1分钟SQLServer可识别下列格式中用单引号(')括起来的日期和时间。字母日期,例如'April15,1998'数值日期格式,例如'4/15/1998'未分隔的字符串格式,例如'19981207'指1998年12月7日。注:
5、可以使用setdateformat来设置用于输入datetime或smalldatetime数据的日期部分(月/日/年)的顺序。字符数据类型固定长度字符:Char、Nchar可变程度字符:Varchar、Nvarchar存储大型字符:Text、Ntext,将在未来版本中删除,请使用VARCHAR(MAX)或者NVARCHAR(MAX)。字符数据类型(须在其前后加上单引号’或双引号”)一般情况下,建议如下:如果支持多语言,请考虑使用NCHAR或NVARCHAR数据类型。对于CHAR(NCHAR)和VARCHAR(NVARCHAR)的区别,建议如下:如果列数
6、据项的大小一致,则使用CHAR(NCHAR),由于CHAR(NCHAR)数据类型长度固定因此它比VARCHAR(NVARCHAR)类型的处理速度快。如果列数据项的大小差异相当大,则使VARCHAR(NVARCHAR)R。如果列数据项大小相差很大,而且大小可能超过8,000字节,请使用VARCHAR(MAX)或NVARCHAR(MAX)。二进制数据类型二进制数据类型用来存储固定长度或可变长度的BINARY数据类型。BINARY、VARBINARY、IMAGE(存储长度大量可变的二进制数据)其他类型游标CURSORTIMESTAMPSQL_VARIANTTA
7、BLEXML6.2变量变量分为局部变量(LocalVariable)和全局变量(GlobalVariable)。局部变量由用户定义和维护,而全局变量由系统定义和维护。变量-局部变量局部变量必须以@开头,而且必须先用DECLARE命令说明后才可使用,其说明形式如下:DECLARE@变量名变量类型[,@变量名变量类型…]必须使用SELECT或SET命令来设定变量的值,其语法如下:SELECT@局部变量=变量值SET@局部变量=变量值[例6.4]执行下列SQL语句USEAdventureWorks;GODECLARE@EmpIDint;SET@EmpID=10
8、0;SELECT*FROMhumanresources.employeeWHER