第3章表与表数据操作.ppt
《第3章表与表数据操作.ppt》由会员分享,可在线阅读,更多相关《第3章表与表数据操作.ppt(82页珍藏版)》请在三一文库上搜索。
1、第3章 表与表数据操作,3.1 表结构和数据类型,3.2 界面方式操作表,3.3 命令方式操作表,3.4 界面方式操作表数据,3.5 命令方式操作表数据,3.1 表结构和数据类型,3.1.1 表和表结构 每个数据库包含了若干个表。表是SQL Server中最主要的数据库对象,它是用来存储数据的一种逻辑结构。表由行和列组成,因此也称为二维表。表是在日常工作和生活中经常使用的一种表示数据及其关系的形式,表3.1就是用来表示学生情况的一个学生表。,表3.1 学生表,3.1.1 表和表结构,下面简单介绍与表有关的几个概念: (1)表结构。组成表的各列的名称及数据类型,统称为表结构。 (2)记录。每个表
2、包含了若干行数据,它们是表的“值”,表中的一行称为一个记录。因此,表是记录的有限集合。 (3)字段。每个记录由若干个数据项构成,将构成记录的每个数据项称为字段。例如,表3.1中表结构为(学号,姓名,性别,出生时间,专业,总学分,备注),包含7个字段,由5个记录组成。 (4)空值。空值(NULL)通常表示未知、不可用或将在以后添加的数据。若一个列允许为空值,则向表中输入记录值时可不为该列给出具体值;而一个列若不允许为空值,则在输入时必须给出具体值。,3.1.1 表和表结构,(5)关键字。若表中记录的某一字段或字段组合能唯一标识记录,则称该字段或字段组合为候选关键字(Candidate key)。
3、若一个表有多个候选关键字,则选定其中一个为主关键字(Primary key),也称为主键。当一个表仅有唯一的一个候选关键字时,该候选关键字就是主关键字。这里的主关键字与第1章中的主码所起的作用是相同的,都用来唯一标识记录行。 例如,在学生表中,2个及其以上记录的姓名、性别、出生时间、专业、总学分和备注这6个字段的值有可能相同,但是“学号”字段的值对表中所有记录来说一定不同,即通过“学号”字段可以将表中的不同记录区分开来。所以,“学号”字段是唯一的候选关键字,学号就是主关键字。再例如,学生成绩表记录的候选关键字是(学号,课程号)字段组合,它也是唯一的候选关键字。,3.1.2 数据类型,列的数据类
4、型可以是SQL Server提供的系统数据类型,也可以是用户定义的数据类型。SQL Server 2008提供了丰富的系统数据类型,现将其列于表3.2中。,表3.2 系统数据类型表,3.1.2 数据类型,在讨论数据类型时,使用了精度、小数位数和长度3个概念,前两个概念是针对数值型数据的,它们的含义如下。 精度:指数值数据中所存储的十进制数据的总位数。 小数位数:指数值数据中小数点右边可以有的数字位数的最大值。例如,数值数据3890.587的精度是7,小数位数是3。 长度:指存储数据所使用的字节数。,3.1.2 数据类型,下面分别说明常用的系统数据类型。 1整数型 整数型包括bigint、int
5、、smallint和tinyint,从标识符的含义就可以看出,它们的表示数范围逐渐缩小。 bigint:大整数,数范围为2632631,其精度为19,小数位数为0,长度为8字节。 int:整数,数范围为2312311,其精度为10,小数位数为0,长度为4字节。 smallint:短整数,数范围为2152151,其精度为5,小数位数为0,长度为2字节。 tinyint:微短整数,数范围为0255,长度为1字节,其精度为3,小数位数为0,长度为1字节。,3.1.2 数据类型,2精确数值型 精确数值型数据由整数部分和小数部分构成,其所有的数字都是有效位,能够以完整的精度存储十进制数。精确数值型包括d
6、ecimal 和 numeric两类。在SQL Server 2008中,这两种数据类型在功能上完全等价。 声明精确数值型数据的格式是numeric | decimal(p,s),其中,p为精度,s为小数位数,s的默认值为0。例如,指定某列为精确数值型,精度为6,小数位数为3,即decimal(6,3),那么当向某记录的该列赋值56.342 689时,该列实际存储的是56.3427。 decimal和numeric可存储1038 +11038 1 的固定精度和小数位的数字数据,它们的存储长度随精度变化而变化,最少为5字节,最多为17字节。 例如,若有声明numeric(8,3),则存储该类型数
7、据需5字节;而若有声明numeric(22,5),则存储该类型数据需13字节。,3.1.2 数据类型,3浮点型 浮点型也称近似数值型。顾名思义,这种类型不能提供精确表示数据的精度,使用这种类型来存储某些数值时,可能会损失一些精度,所以它可用于处理取值范围非常大且对精确度要求不太高的数值量,如一些统计量。 有两种近似数值数据类型:float(n)和real,两者通常都使用科学计数法表示数据,即形为尾数E阶数,如5.6432E20,2.98E10,1.287659E-9等。 real:使用4字节存储数据,表数范围为3.40E + 383.40E + 38,数据精度为7位有效数字。 float:fl
8、oat型数据的数范围为1.79E+3081.79E+308。定义中的n取值范围是153,用于指示其精度和存储大小。当n在124之间时,实际上将定义一个real型数据,存储长度为4字节,精度为7位有效数字。当n在2553之间时,存储长度为8字节,精度为15位有效数字。当省略n时,代表n在2553之间。,3.1.2 数据类型,4货币型 SQL Server 2008提供了两个专门用于处理货币的数据类型:money和smallmoney,它们用十进制数表示货币值。 money:数据的数范围为2632631,其精度为19,小数位数为4,长度为8字节。money的数范围与bigint相同,不同的只是mo
9、ney型有4位小数,实际上,money就是按照整数进行运算的,只是将小数点固定在末4位。 smallmoney:数范围为2312311,其精度为10,小数位数为4,长度为4字节。可见smallmoney与int的关系就如同money与bigint的关系一样。 当向表中插入money或smallmoney类型的值时,必须在数据前面加上货币表示符号($),并且数据中间不能有逗号(,);若货币值为负数,则需要在符号$的后面加上负号(-)。例如,$15 000.32,$680,$-20 000.9088都是正确的货币数据表示形式。,3.1.2 数据类型,5位型 SQL Server 2008中的位(b
10、it)型数据相当于其他语言中的逻辑型数据,它只存储0和1,长度为1字节。但要注意,SQL Server对表中bit类型列的存储进行了优化:如果一个表中有不多于8个的bit列,则这些列将作为1字节存储;如果表中有916个bit列,则这些列将作为2字节存储,更多列的情况以此类推。 当为bit类型数据赋0时,其值为0,而赋非0(如100)时,其值为1。 字符串值TRUE和FALSE可以转换为以下bit 值:TRUE转换为1,FALSE转换为0。,3.1.2 数据类型,6字符型 字符型数据用于存储字符串,字符串中可包括字母、数字和其他特殊符号(如#、&等)。在输入字符串时,需将串中的符号用单引号或双引
11、号括起来,如abc、“AbcCde“。 SQL Server 2008字符型包括两类:固定长度(char)或可变长度(varchar)字符数据类型。 char(n):定长字符数据类型,其中,n定义字符型数据的长度,n在18000之间,默认为1。当表中的列定义为char(n)类型时,若实际存储的串长度不足n,则在串的尾部添加空格以达到长度n,所以char(n)的长度为n。例如,某列的数据类型为char(20),而输入的字符串为“ahjm1922“,则存储的是字符ahjm1922和12个空格。若输入的字符个数超出了n,则超出的部分被截断。 varchar(n):变长字符数据类型,其中,n的规定与定
12、长字符型char中的n完全相同,但这里n表示的是字符串可达到的最大长度。,3.1.2 数据类型,7Unicode字符型 Unicode是统一字符编码标准,用于支持国际上非英语语种的字符数据的存储和处理。SQL Server的Unicode字符型可以存储Unicode标准字符集定义的各种字符。 Unicode字符型包括nchar(n)和nvarchar(n)两类。nchar是固定长度Unicode数据的数据类型,nvarchar是可变长度Unicode数据的数据类型,二者均使用UNICODE UCS-2字符集。 nchar(n):nchar(n)为包含n个字符的固定长度Unicode字符型数据,
13、n的值在14 000之间,长度为2n字节。若输入的字符串长度不足n,将以空白字符补足。 nvarchar(n):nvarchar(n)为最多包含n个字符的可变长度Unicode字符型数据,n的值在14 000之间,默认为1。长度是所输入字符个数的两倍。,3.1.2 数据类型,8文本型 当需要存储大量的字符数据,如较长的备注、日志信息等时,字符型数据最长8000个字符的限制可能使它们不能满足这种应用需求,此时可使用文本型数据。 文本型包括text和ntext两类,分别对应ASCII字符和Unicode字符。 text类型可以表示最大长度为2311个字符,其数据的存储长度为实际字符数字节。 nte
14、xt类型可表示最大长度为2301个Unicode字符,其数据的存储长度是实际字符个数的两倍(以字节为单位)。,3.1.2 数据类型,9二进制型 二进制数据类型表示的是位数据流,包括binary(固定长度)和varbinary(可变长度)两种。 binary (n) :固定长度的n字节二进制数据。n的取值范围为18 000,默认为1。binary(n)数据的存储长度为 n+4 字节。若输入的数据长度小于n,则不足部分用0填充;若输入的数据长度大于n,则多余部分被截断。 varbinary (n):n字节变长二进制数据。n取值范围为18 000,默认为1。varbinary(n)数据的存储长度为实
15、际输入数据长度+4字节。,3.1.2 数据类型,10日期时间类型 日期时间类型数据用于存储日期和时间信息,在SQL Server 2008以前的版本中,日期时间数据类型只有datetime和smalldatetime两种。而在SQL Server 2008中新增了4种新的日期时间数据类型,分别为date、time、datetime2和datetimeoffset。 (1)datetime:datetime类型可表示的日期范围为从1753年1月1日到9999年12月31日,精确度为0.03 s(3.33 ms或0.003 33 s),例如,13 ms的值都表示为0 ms,46 ms的值都表示为4
16、 ms。 datetime类型数据长度为8字节,日期和时间分别使用4字节存储。前4字节用于存储datetime类型数据中距1900年1月1日的天数。为正数表示日期在1900年1月1日之后,为负数则表示日期在1900年1月1日之前。后4字节用于存储datetime类型数据中距12:00(24小时制)的毫秒数。,3.1.2 数据类型,用户给出datetime类型数据值时,日期部分和时间部分分别给出。 日期部分的表示形式常用的格式如下:,3.1.2 数据类型,时间部分常用的表示格式如下:,3.1.2 数据类型,(2)smalldatetime:smalldatetime类型数据可表示从1900年1月
17、1日到2079年6月6日的日期和时间,数据精确到分钟。即29.998 s或更低的值向下舍入为最接近的分钟,29.999 s或更高的值向上舍入为最接近的分钟。 smalldatetime类型数据的存储长度为4字节,前2字节用来存储smalldatetime类型数据中日期部分距1900年1月1日之后的天数。后2字节用来存储smalldatetime类型数据中时间部分距中午12点的分钟数。 用户输入smalldatetime类型数据的格式与datetime类型数据完全相同,只是它们的内部存储可能不相同。 (3)date:date类型数据可以表示从公元元年1月1日到9999年12月31日的日期,dat
18、e类型只存储日期数据,不存储时间数据,存储长度为3字节,表示形式与datetime数据类型的日期部分相同。,3.1.2 数据类型,(4)time:time数据类型只存储时间数据,表示格式为“hh:mm:ss.nnnnnnn”。hh表示小时,范围为023。mm表示分钟,范围为059。ss表示秒数,范围为059。n是07位数字,范围为0999 9999,表示秒的小数部分,即微秒数。所以time数据类型的取值范围为00:00:00.000 000 023:59:59.999 999 9。time类型的存储大小为5字节。另外还可以自定义time类型微秒数的位数,例如,time(1)表示小数位数为1,默
19、认为7。 (5)datetime2:新的datetime2数据类型和datetime类型一样,也用于存储日期和时间信息。但是datetime2类型取值范围更广,日期部分取值范围从公元元年1月1日到9999年12月31日,时间部分的取值范围为00:00:00.000000023:59:59.999999。另外,用户还可以自定义datetime2数据类型中微秒数的位数,例如,datetime(2)表示小数位数为2。datetime2类型的存储大小随着微秒数的位数(精度)而改变,精度小于3时为6字节,精度为4和5时为7字节,所有其他精度则需要8字节。,3.1.2 数据类型,(6)datetimeof
20、fset:datetimeoffset数据类型也用于存储日期和时间信息,取值范围与datetime2类型相同。但datetimeoffset类型具有时区偏移量,此偏移量指定时间相对于协调世界时(UTC)偏移的小时和分钟数。datetimeoffset的格式为“YYYY-MM-DD hh:mm:ss.nnnnnnn +|hh:mm”,其中,hh为时区偏移量中的小时数,范围为0014,mm为时区偏移量中的额外分钟数,范围为0059。时区偏移量中必须包含“+”(加)或“”(减)号。这两个符号表示是在UTC时间的基础上加上还是从中减去时区偏移量以得出本地时间。时区偏移量的有效范围为14:00+14:0
21、0。,3.1.2 数据类型,11时间戳型 标识符是timestamp。若创建表时定义一个列的数据类型为时间戳类型,那么每当对该表加入新行或修改已有行时,都由系统自动将一个计数器值加到该列,即将原来的时间戳值加上一个增量。 记录timestamp列的值实际上反映了系统对该记录修改的相对(相对于其他记录)顺序。一个表只能有一个timestamp 列。timestamp类型数据的值实际上是二进制格式数据,其长度为8字节。 12图像数据类型 标识符是image,它用于存储图片、照片等。实际存储的是可变长度二进制数据,介于 0与2311 (2 147 483 647) 字节之间。在SQL Server
22、2008中该类型是为了向下兼容而保留的数据类型。微软推荐用户使用varbinary(MAX)数据类型来替代image类型。,3.1.2 数据类型,13其他数据类型 除了上面所介绍的常用数据类型外,SQL Server 2008还提供了其他几种数据类型:cursor、sql_variant、table、uniqueidentifier、xml和hierarchyid。 cursor:是游标数据类型,用于创建游标变量或定义存储过程的输出参数。 sql_variant:是一种存储SQL Server支持的各种数据类型(除text、ntext、image、timestamp 和 sql_variant
23、 外)值的数据类型。sql_variant的最大长度可达8016字节。 table:是用于存储结果集的数据类型,结果集可以供后续处理。 uniqueidentifier:是唯一标识符类型。系统将为这种类型的数据产生唯一标识值,它是一个16字节长的二进制数据。 xml:是用来在数据库中保存xml文档和片段的一种类型,但是此种类型的文件大小不能超过2 GB。 hierarchyid:hierarchyid数据类型是SQL Server 2008新增加的一种长度可变的系统数据类型。可使用 hierarchyid表示层次结构中的位置。 varchar、nvarchar、varbinary这三种数据类型
24、可以使用MAX关键字,如varchar(MAX)、nvarchar(MAX)、varbinary(MAX),加了MAX关键字的这几种数据类型最多可存放231-1字节的数据,分别用来替换text、ntext和image数据类型。,3.1.3 表结构设计,其中,“学号”列的数据是学生的学号,学号值有一定的意义,例如,“081101”中“08”表示学生的年级,“11”表示所属班级,“01”表示学生在班级中的序号,所以“学号”列的数据类型可以是6位的定长字符型数据;“姓名”列记录学生的姓名,姓名一般不超过4个中文字符,所以可以是8位定长字符型数据;“性别”列只有“男”、“女”两种值,所以可以使用bit
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据 操作
链接地址:https://www.31doc.com/p-3427458.html