数据库数据类型设置.ppt
《数据库数据类型设置.ppt》由会员分享,可在线阅读,更多相关《数据库数据类型设置.ppt(162页珍藏版)》请在三一办公上搜索。
1、第4章 数据表的创建与操作,4.1 数据类型4.2 运算符与表达式4.3 系统内置函数4.4 用企业管理器创建数据表及约束对象4.5 用T-SQL语句创建数据表及约束对象4.6 查看表信息、输入数据、编辑和删除记录4.7 数据表及约束对象的删除4.8 数据库应用实例电脑器材销售管理的数据表4.9 实训要求与习题,第4章 数据表的创建与操作,学习目的与要求数据表是数据库中最重要的对象,数据库的全部数据都存储在不同的数据表中,因而数据表的设计成功与否是数据库设计的关键,将直接影响到数据库使用的合理有效。了解SQL Server数据库系统,掌握数据表的数据类型、运算符与表达式、常用系统函数是创建数据
2、库必备的基础知识。数据表及约束对象的创建以及数据的输入更新是创建数据库的重要环节。通过本章学习,读者应熟悉并掌握SQL Server数据库的数据类型、表达式和常用内置函数,掌握数据表及约束对象的创建、修改、删除以及数据的输入、更新、删除等操作,独立创建电脑器材销售管理diannaoxs数据库的各个数据表。,4.1 数据类型,数据类型决定了数据的存储格式、长度、精度等属性。SQL Server为我们提供了多达26种的丰富数据类型,用户还可以自己定义数据类型(见第7章)。4.1.1、二进制数据 SQL Server用binary、varbinary 和image三种数据类型来存储二进制数据。二进制
3、类型可用于存储声音图像等数字类型的数据。1、定长二进制 binary(n)按n个字节的固定长度存放二进制数据,最大长度为8K字节,即1n8000。若实际数据不足n个字节,则在数据尾部加0补足n个字节。2、变长二进制 varbinary(n)按不超过n个字节的实际长度存放二进制数据,最大长度8K字节,即1n8000。若实际数据不足n个字节,按实际长度存储数据,不补充加0;,3、图像二进制 Image,图像二进制可存储不超过231-1个字节的二进制数据,比如文本文档、Excel图表以及图像数据(包括.GIF、.BMP、.JPEG文件)等。注意:l 二进制数据常量不允许加引号,默认用十进制书写,如1
4、234、1011均视为十进制常量,如果使用十六进制则必须加0 x前缀。输出显示默认采用十六进制。l若实际数据二进制长度超过指定的n个字节,用局部变量存储时只截取二进制的前n个字节,其余二进制位舍掉。l数据库中二进制字段的数据不能在数据表中直接输入,即“无法编辑该单元”。l在用INSERT或UPDATE为数据表二进制字段输入、更新数据时,如果超过n字节,则系统提示“将截断字符串或二进制数据”并终止命令执行,不能保存该数据。,【例4-1】二进制数据1aa2bb3cc4共40位5个字节,可表示为0 x1aa2bb3cc4 若定义数据类型为binary(6)则数据后加0按6字节存储为:0 x1aa2b
5、b3cc400 若定义数据类型为varbinary(6)则按实际数据存储为:0 x1aa2bb3cc4 若定义数据类型为binary(4)或varbinary(4),则在局部变量中存储为:0 x1aa2bb3c。存储到数据表字段中时,系统提示“将截断字符串或二进制数据”不能保存该数据。,、数值型数据,SQL Server数值型数据共8种,整型4种,实型4种。1字节型整数 TinyInt 占1个字节固定长度内存,可存储0-255范围内的任意无符号整数。2短整型整数 smallInt 占2字节固定长度内存,最高位为符号位,可存储-3276832767(-215215-1)的任意整数。3基本整型整数
6、 Int 或Integer 占4字节固定长度内存,高位为符号位,可存储-2147483648-2147483647(-231-231-1)范围内的任意整数。4长整型整数 Bigint 占8字节固定长度内存,高位为符号位,可存储-263到263-1范围内的任意整据。注意:整型数据可以在较少字节里存储精确的整型数字,存储效率高,不可能出现小数的数据应尽量选用整数类型。,5近似值实型浮点数 real,占4字节固定长度内存,最多7位有效数字,范围从-3.40E+38到1.79E+38。6可变精度实型浮点数 float(n)l当n的取值为1-24时,数据精度是7位有效数字,范围从-3.40E+38到1.
7、79E+38,占4字节内存。l 当n的取值为25-53时,精度是15位有效数字,范围从-1.79E+308到1.79E+308,占8字节内存。l实型浮点数常量可以直接使用科学记数法的指数形式书写。,7精确小数型数据 Numeric(p,s),lp指定总位数(不含小数点),p的取值范围1p38。即最多可达38位有效数字,不使用指数的科学记数法表示,但取值范围必须在-1038到1038-1之间。ls指定其中的小数位数,s的取值范围0sp。l numeric型数据在数据表里可带identity关键字(自动增长字段)。lnumeric型数据所占的存储空间随精度的不同而不同,一般说来对应关系为:p的取值
8、范围 数据所占内存字节数 1-9 5 10-19 9 20-28 13 29-38 178精确小数型数据 Decimal(p,s)或 Dec(p,s)该类型数据与Numeric(p,s)类型用法相同,所不同的是Decimal(p,s)不能用于数据表的identity字段。,8精确小数型数据 Decimal(p,s)或 Dec(p,s),该类型数据与Numeric(p,s)类型用法相同,所不同的是Decimal(p,s)不能用于数据表的identity字段。,字符型数据,SQL Server提供了Char(n)、Varchar(n)和Text三种ASC码字符型数据。1定长字符型 Char(n)按
9、n个字节的固定长度存放字符串,每个字符占用一个字节,长度范围1n8000;若实际字符串长度小于n,则尾部填充空格按n个字节的字符串存储。2变长字符型 Varchar(n)按不超过n个字节的实际长度存放字符串,可指定最大长度为1n8000;若实际字符串长度小于n,则按字串实际长度存储,不填充空格。当存储的字符串长度不固定时,使用Varchar数据类型可以有效地节省空间。,3文本类型 Text,Text类型存储的是可变长度的字符数据类型,最大长度为231-1字节2GB的数据。当存储超过8000字节时,可选择Text数据类型。l字符型数据采用ASC码字符集,英文符号占1个字节,汉字占2个字节。l字符
10、型字符串常量必须使用单引号括起来。lChar、Varchar数据类型若不指定长度,默认为1字节。l若实际字符串长度超过指定的n个字节,用局部变量存储时只截取字符串前n个字节,其余字符舍掉。l字符型字符串数据可以在企业管理器中直接输入到数据表中,但输入的字符串长度超过字段指定长度时系统不接受,也不会自动截取。l在用INSERT或UPDATE为数据表字符型字段输入、更新字符串时,如果超过n字节则系统提示“将截断字符串或二进制数据”并终止命令执行,不能保存该数据。,【例4-2】字符型字符串abcdABCD我们学习共12个字符占16字节。若定义数据类型为char(20)则存储为:abcdABCD我们学
11、习 若定义数据类型为varchar(20)则按实际长度存储为:abcdABCD我们学习 若定义数据类型为char(10)或varchar(10),则在局部变量中存储为:abcdABCD我 存储到数据表字段中时,系统提示“将截断字符串或二进制数据”不能保存该数据。,统一字符型数据,统一字符型也称为宽字符型,采用Unicode字符集,包括了世界上所有语言符号,一个英文符号或一个汉字都占用2个字节的内存。前127个字符为ASC码字符。SQL Server提供了Nchar(n)、Nvarchar(n)和Ntext三种统一字符型数据。1定长统一字符型 Nchar(n)按n个字符的固定长度存放字符串,每个
12、字符占用2个字节,长度范围1n4000;若实际字符个数小于最大长度n,则尾部填充空格按n个字符存储。2变长统一字符型 Nvarchar(n)按不超过n个字符的实际长度存放字符串,可指定最大字符数为1n4000;若实际字符个数小于n,则按字符串实际长度占用存储空间,不填充空格。,3统一字符文本类型 Ntext,Ntext存储的是可变长度的双字节字符数据类型,最多可以存储(230-1)/2个字符。l统一字符型数据长度n为“字符”个数,所占字节数为2*n。l统一字符型字符串常量必须使用单引号括起来。lNchar、Nvarchar数据类型若不指定长度n,默认为1个字符(2个字节)。l若实际字符串长度超
13、过指定的n个字符,用局部变量存储时只截取字符串前n个字符,其余字符舍掉。l统一字符型数据可以在企业管理器中直接输入到数据表中,但输入的字符个数超过字段长度时则系统不接受。l在用INSERT或UPDATE为数据表统一字符型字段输入、更新字符串时,若超过n个字符则系统提示“将截断字符串或二进制数据”并终止命令执行,不能保存该数据。,【例4-3】字符串abcdABCD我们学习作为统一字符型共12个字符占24字节。若定义数据类型为Nchar(14)则存储为:abcdABCD我们学习 若定义数据类型为Nvarchar(14)则按实际字符数存储为:abcdABCD我们学习 若定义数据类型为Nchar(10
14、)或Nvarchar(10),则在局部变量中存储为:abcdABCD我们 存储到数据表字段中时,系统提示“将截断字符串或二进制数据”不能保存该数据。,日期/时间型数据,SQL Server提供的日期/时间数据类型可存储日期和时间的组合数据。以日期/时间类型存储日期或时间数据比字符型更简单,因为SQL Server提供了一系列专门处理日期和时间的函数来处理这类数据。若使用字符型存储日期和时间,计算机不能识别,也不能自动对这些数据按照日期和时间进行处理。SQL Server提供了Smalldatetime和Datetime两种日期/时间的数据类型。1短日期/时间型 Smalldatetime 占4
15、个字节固定长度的内存,存放1900年1月1日到2079年6月6日的日期时间,可以精确到分。,2基本日期/时间型 Datetime,占8个字节固定长度的内存,存放1753年1月1日到9999年12月31日的日期时间,可以精确到千分之一秒,即0.001s。注意:l日期时间型常量与字符串常量相同必须使用单引号括起来。lSQL Server在用户没有指定小时以下精确的时间数据时,自动设置Datetime或Smalldatetime数据的时间为00:00:00。l数据库中默认的日期格式为“年-月-日”,输入时可使用年/月/日或年-月-日,也可以使用月/日/年、月-日-年、日/月/年或日-月-年。l如果使
16、用日/月/年或日-月-年,系统不能区分时默认按“月-日-年”处理。,货币型数据,SQL Server提供了Smallmoney和Money两种货币型数据。1短货币型 Smallmoney 该类型占4个字节固定长度的内存,实际是由2个2字节的整数构成,前2个字节为货币值的整数部分,后2个字节为货币值的小数部分。货币值的范围从-214748.3648到+214748.3647,可以精确到万分之一货币单位。2基本货币型 Money 该类型占8个字节固定长度的内存,由2个4字节的整数构成,前4个字节为货币值的整数部分,后4个字节表示货币值的小数部分。货币值的范围从-263到263-1,可精确到万分之一
17、货币单位。Money或Smallmoney类型的数值常量,应加货币符号$前缀,负数时加后缀$。如:$222.222,-333.333$,位类型数据 bit,l位类型只能存放0、1和NULL(空值),一般用于逻辑判断。l位类型数据占1位二进制内存,如果一个数据表中有8个以下的位类型字段,系统用一个字节存储所有这些字段,超过8个不足16个用2个字节存放。l位类型数据输入任意的非0值时,都按1处理。SQL Server 常用数据类型见表4.1。,其他特殊数据类型,1、Timestamp:也称为时间戳数据类型,它提供数据库范围内的惟一值,反应数据库中数据修改的相对顺序,相当于一个单调上升的计数器。2、
18、Uniqueidentifier:用于存储16字节长度的二进制数据类型,是SQL Server根据计算机网络适配器地址和CPU时钟而产生的全局惟一标识符代码(Globally Unique Identifier,简写为GUID)。3、sql_variant:用于存储除文本、图形数据和timestamp类型数据外的其它任何合法的SQL Server数据。4、table:用于存储对表或者视图处理后的结果集。这种新的数据类型使得用一个变量可以存储一个表,从而使函数或过程返回查询结果更加方便、快捷。,图像、文本型数据的存储方式,存储文本、图像等大型数据时,可使用Text、Ntext和Image三种数据
19、类型,这三种数据类型的数据量往往比较大,在SQL Server 7.0以前的版本中,文本和图像数据被存储在专门的页中,在数据行的相应位置只保存指向这些数据的指针。SQL Server 2000提供了将小型文本或图像数据直接在行中存储的功能,不需要到另外的页中访问这些数据,使得读写文本和图像数据可以与读写普通字符串一样快。使用系统存储过程sp_tableoption可以指定文本或图像数据是否在表的行中存储。语法格式:sp_tableoption 表名,text in row,TRUE|FALSE,图像、文本型数据的存储方式,说明:l 当指定“TRUE”选项时,允许小型文本或图像数据直接在该表的行
20、中存储,而且还可以指定文本或图像数据大小的上限值(24-7000字节),默认上限256字节。l当数据的大小不超过上限值而且同时数据行有足够空间时,文本和图像数据就会直接存储在行中。l若以上两个条件有一个不满足时,行中仍只存放指向数据存储位置的指针。【例4-4】在当前数据库中创建数据表example,字段bin_1存放TEXT类型数据,bin_2存放NTEXT类型数据,bin_3存放Image类型数据。CREATE TABLE example(bin_1 text,bin_2 ntext,bin_3 ntext Image)Go/*以下语句指定不大于1000字节的文本或图像数据在行中存储*/sp
21、_tableoption example,text in row,TRUEsp_tableoption example,text in row,1000/*以下语句指定Mytable表不在行中存储文本和图像数据*/sp_tableoption Mytable,text in row,FALSE,、局部变量的定义与输出,本书在第7、8章将专门详细介绍T-SQL的程序设计、批处理、局部变量、自定义类型和函数、游标、存储过程与触发器,但在前几章也许会用到批处理及局部变量的概念,为此我们先简单介绍一下有关的知识。1、批处理 批处理是一个或多个SQL语句的集合,构成一个独立的程序模块,以GO语句为结束标
22、志。从程序开头或从某一个GO语句开始到下一个GO语句或程序结束为一个批处理。2、局部变量 局部变量是用户自定义的变量,用于临时存储各种类型的数据。,3、定义局部变量,语法格式:DECLARE 变量名 数据类型(长度),n 例如:DECLARE x int,s decimal(8.4)注意:l局部变量必须以开头以区别字段名变量。固定长度的类型不需要指定长度。l 局部变量只在一个批处理内有效,其生命周期从定义开始到它遇到的第一个GO语句或者到程序结束。4、局部变量的赋值 语法格式:SET 局部变量=表达式5、显示输出局部变量 语法格式:PRINT 局部变量或表达式,4.2 运算符与表达式,、算术运
23、算符与表达式 算术运算符:+(加)、-(减)、*(乘)、/(除)、%(取模求余)。,、逻辑类运算符与逻辑值表达式,SQL逻辑值表达式都是作为判断条件使用的,取值为:l TRUE:真,条件成立l FALSE:假,条件不成立l UNKNOWN:不确定,是某个数据与NULL比较的结果 在数据库中,NULL是一个不知道或不能确定的专用数据值,它不等于数值0和字符的空格。某个数据与NULL进行比较运算的逻辑值就是UNKNOWN,因为大家对使用UNKNOWN都不习惯,所以大多数SQL版本都提供了专门的空值运算符“IS NULL”,用于判断是否是空值NULL。例如:假设“职称”的内容为NULL,若有条件表达
24、式:职称=讲师 则该表达式的值不是true或false而是unknown。SQL Server 2000提供了由7类运算符组成的逻辑值条件表达式。,1、比较运算符,(大于)、=(大于等于)、或!=(不等于)、!(不大于)、!500 则单价大于500条件为TRUE,单价不大于500条件为FALSE 销售单价-进价=销售单价/2 则毛利润大于等于一半时条件为真,2、逻辑运算符,not(逻辑非)、and(逻辑与)、or(逻辑或)逻辑条件表达式:not 逻辑值表达式 逻辑值表达式1 and 逻辑值表达式2 逻辑值表达式1 or 逻辑值表达式2 如:not单价 500 则单价不大于500条件为真,等价于
25、:单价=1000 则只有孙立华收到的商品中进价大于等于1000时条件才为真 如:单价=500 or 单价=1000 则单价等于500或者等于1000,只要满足一个条件就为真,2、逻辑运算符,在逻辑运算中,逻辑值UNKNOWN(不确定)可以看成是介于真假之间的中立值,既不是真也不是假,不真不假就是不确定。如果把TRUE UNKNOWN FALSE这三者的关系理解为由高级低级,就比较好理解三者的逻辑运算结果了。AND运算:结果取低级的 TRUE AND UNKOWN 结果UNKOWN UNKOWN AND UNKOWN 结果UNKOWN FALSE AND UNKOWN 结果FALSEOR运算:结
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 数据类型 设置
链接地址:https://www.31ppt.com/p-5985653.html