SQL Server教程(第6版)(2008版) 课件 第3章 表的创建和操作_第1页
SQL Server教程(第6版)(2008版) 课件 第3章 表的创建和操作_第2页
SQL Server教程(第6版)(2008版) 课件 第3章 表的创建和操作_第3页
SQL Server教程(第6版)(2008版) 课件 第3章 表的创建和操作_第4页
SQL Server教程(第6版)(2008版) 课件 第3章 表的创建和操作_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第3章

表的创建和操作——表结构和数据类型01表和表结构表和表结构每个数据库包含了若干个表。表是SQLServer中最主要的数据库对象,它是用来存储数据的一种逻辑结构。表由行和列组成,因此也称为二维表。表是在日常工作和生活中经常使用的一种表示数据及其关系的形式,表就是用来表示学生情况的一个“学生”表。学

号姓名性别出生日期专

业总学分备

注221101王林男2004-02-10计算机15

221102程明男2005-02-01计算机15

221103王燕女2003-10-06计算机15参加校女子足球队201103严红女2002-08-11计算机60

221201刘华男2004-06-10通信工程13辅修计算机专业221202王林男2004-01-29通信工程13

表和表结构下面简单介绍与表有关的几个概念。(1)表结构。组成表的各列的名称及数据类型,统称为表结构。(2)记录(行)。每个表包含了若干行数据,它们是表的“值”,表中的一行称为一个记录。因此,表是记录的有限集合。(3)列(字段)。每个记录由若干个数据项构成,将构成记录的每个数据项称为字段,又直接称列。例如,表3.1中的表结构为(学号,姓名,性别,出生日期,专业,总学分,备注),包含7个列,由6个记录组成。(4)空值。空值(NULL)通常表示未知、不可用或将在以后添加的数据。若一个列允许为空值,则向表中输入记录值时可不为该列指定具体值;而一个列若不允许为空值,则在输入时必须给出具体值。(5)关键字。若表中记录的某一列或列组合能唯一标识记录,则称该列或列组合为候选关键字(Candidatekey)。若一个表有多个候选关键字,则选定其中一个为主关键字(Primarykey),也称为主键。当一个表仅有唯一的一个候选关键字时,该候选关键字就是主关键字。02数据类型整数型精确数值型浮点型货币型位型字符型Unicode字符型文本型二进制型日期时间类型时间戳型图像数据类型xml类型地理空间类型和几何数据类型其他数据类型数据类型列的数据类型可以是SQLServer提供的系统数据类型,也可以是用户定义的数据类型。SQLServer提供了丰富的数据类型,列于表中。数据类型符号标识整数型bigint,int,smallint,tinyint精确数值型decimal,numeric浮点型float,real货币型money,smallmoney位型bit字符型char,varchar、varchar(MAX)Unicode字符型nchar,nvarchar、nvarchar(MAX)文本型text,ntext二进制型binary,varbinary、varbinary(MAX)日期时间类型datetime,smalldatetime,date,time,datetime2,datetimeoffset时间戳型timestamp图像型image其他sql_variant,uniqueidentifier,xml,hierarchyid,geometry数据类型在讨论数据类型时,使用了精度、小数位数和长度3个概念,前两个概念是针对数值型数据的,它们的含义是:精度:指数值数据中所存储的十进制数据的总位数。小数位数:指数值数据中小数点右边可以有的数字位数的最大值。例如,数值数据3890.587的精度是7,小数位数是3。长度:指存储数据所使用的字节数。1.整数型整数型包括bigint、int、smallint和tinyint,从标识符的含义就可以看出,它们表示数的范围逐渐缩小。(1)bigint:大整数,范围为

263~263

1,其精度为19,小数位数为0,长度为8字节。(2)int:整数,范围为

231~231

1,其精度为10,小数位数为0,长度为4字节。(3)smallint:短整数,范围为

215~215

1,其精度为5,小数位数为0,长度为2字节。(4)tinyint:微短整数,范围为0~255,长度为1字节,其精度为3,小数位数为0,长度为1字节。数据类型2.精确数值型精确数值型数据由整数部分和小数部分构成,其所有的数字都是有效位,能够以完整的精度存储十进制数。精确数值型包括decimal和numeric两类。在SQLServer中,这两种数据类型在功能上完全等价。声明精确数值型数据的格式是numeric|decimal(p[,s]),其中p为精度,s为小数位数,s的默认值为0。例如,指定某列为精确数值型,精度为6,小数位数为3,即decimal(6,3),那么当向某记录的该列赋值56.342689时,该列实际存储的是56.343。decimal和numeric可存储–1038+1~1038–1的固定精度和小数位的数字数据,它们的存储长度随精度变化而变化,最少为5字节,最多为17字节。数据类型3.浮点型有两种近似数值数据类型:float[(n)]和real,两者通常都使用科学记数法表示数据,即形为:尾数E阶数,如5.6432E20,–2.98E10,1.287659E-9等。(1)real:使用4字节存储数据,表数范围为–3.40E+38~3.40E+38,数据精度为7位有效数字。(2)float:表数范围为–1.79E+308~1.79E+308。定义中的n取值范围是1~53,用于指示其精度和存储大小。当n在1~24之间时,实际上将定义一个real型数据,存储长度为4字节,精度为7位有效数字。4.货币型SQLServer提供了两个专门用于处理货币的数据类型:money和smallmoney,它们用十进制数表示货币值。(1)money:范围为

263~263

1,其精度为19,小数位数为4,长度为8字节。money的数范围与bigint相同,不同的只是money型有4位小数。实际上,money就是按照整数进行运算的,只是将小数点固定在末尾4位。(2)smallmoney:范围为–231~231

1,其精度为10,小数位数为4,长度为4字节。数据类型5.位型SQLServer中的位(bit)型数据相当于其他语言中的逻辑型数据,它只存储0和1,长度为1字节。但要注意,SQLServer对表中bit类型列的存储进行了优化:如果一个表中有不多于8个bit列,则这些列将作为1字节存储;如果表中有9~16个bit列,则这些列将作为2字节存储,更多列的情况以此类推。6.字符型SQLServer字符字符型数包括两类:定长(char)和变长(varchar)。(1)char[(n)]:定长字符数据类型,其中n定义字符型数据的长度,在1~8000之间,默认为1。当表中的列定义为char(n)类型时,若实际存储的串长度不足n时,则在串的尾部添加空格以达到长度n,所以char(n)的长度为n。(2)varchar[(n)]:变长字符数据类型,其中,n的规定与定长字符型char中的n完全相同,但这里n表示的是字符串可达到的最大长度。数据类型7.Unicode字符型Unicode字符型包括nchar[(n)]和nvarchar[(n)]两类。nchar是定长Unicode数据的数据类型,nvarchar是变长Unicode数据的数据类型,二者均使用UNICODEUCS-2字符集。(1)nchar[(n)]:nchar[(n)]为包含n个字符的固定长度Unicode字符型数据,n的值在1~4000之间,长度为2n字节。若输入的字符串长度不足n,将以空白字符补足。(2)nvarchar[(n)]:nvarchar[(n)]为最多包含n个字符的可变长度Unicode字符型数据,n的值在1~4000之间,默认为1。长度是所输入字符个数的两倍。8.文本型文本型包括text和ntext两类,分别对应ASCII字符和Unicode字符。(1)text类型:可以表示最大长度为231

1个字符,其数据的存储长度为实际字符个数字节。(2)ntext类型:可表示最大长度为230

1个Unicode字符,其数据的存储长度是实际字符个数两倍的字节。数据类型9.二进制型二进制数据类型表示的是位数据流,包括binary(固定长度)和varbinary(可变长度)两种。(1)binary[(n)]:固定长度的n个字节二进制数据。n的取值范围为1~8000,默认为1。binary(n)数据的存储长度为n+4个字节。若输入的数据长度小于n,则不足部分用0填充;若输入的数据长度大于n,则多余部分被截断。(2)varbinary[(n)]:n个字节变长二进制数据。n取值范围为1~8000,默认为1。varbinary(n)数据的存储长度为实际输入数据长度+4个字节。数据类型10.日期时间类型(1)datetime类型:可表示的日期范围从1753年1月1日~9999年12月31日,精确度为0.03s(3.33ms或0.00333s)。例如,1~3ms的值都表示为0ms,4~6ms的值都表示为4ms。datetime类型数据长度为8字节,日期和时间分别使用4个字节存储。前4字节用于存储datetime类型数据中距1900年1月1日的天数。为正数表示日期在1900年1月1日之后,为负数则表示日期在1900年1月1日之前。后4字节用于存储datetime类型数据中距12:00(24小时制)的毫秒数。日期部分的表示形式常用的格式如下:年月日2001Jan20、2001January20年日月200120Jan月日[,]年Jan202001、Jan20,2001、Jan20,01月年日Jan200120日月[,]年20Jan2001、20Jan,2001日年月202001Jan年(4位数)2001表示2001年1月1日年月日20010120、010120月/日/年01/20/01、1/20/01、01/20/2001、1/20/2001月-日-年01-20-01、1-20-01、01-20-2001、1-20-2001月.日.年01.20.01、1.20.01、01.20.2001、1.20.2001数据类型时间部分常用的表示格式如下:时:分10:20、08:05时:分:秒20:15:18、20:15:18.2时:分:秒:毫秒20:15:18:200时:分AM|PM10:10AM、10:10PM(2)smalldatetime:该类型数据可表示从1900年1月1日~2079年6月6日的日期和时间,数据精确到分钟。即29.998s或更低的值向下舍入为最接近的分钟,29.999s或更高的值向上舍入为最接近的分钟。(3)date:该类型数据可以表示从公元元年1月1日到9999年12月31日的日期,date类型只存储日期数据,不存储时间数据,存储长度为3字节,表示形式与datetime数据类型的日期部分相同。数据类型(4)time:该类型数据只存储时间数据,表示格式为“hh:mm:ss[.nnnnnnn]”。hh表示小时,范围为0~23。mm表示分钟,范围为0~59。ss表示秒数,范围为0~59。n是0~7位数字,范围为0~9999999,表示秒的小数部分,即微秒数。所以time数据类型的取值范围为00:00:00.000

0000~23:59:59.9999999。time类型的存储大小为5字节。另外还可以自定义time类型微秒数的位数,例如,time(1)表示小数位数为1,默认为7。(5)datetime2:新的datetime2数据类型和datetime类型一样,也用于存储日期和时间信息。但是datetime2类型取值范围更广,日期部分取值范围从公元元年1月1日~9999年12月31日,时间部分的取值范围为00:00:00.0000000~23:59:59.999999。另外,用户还可以自定义datetime2数据类型中微秒数的位数,例如,datetime(2)表示小数位数为2。datetime2类型的存储大小随着微秒数的位数(精度)而改变,精度小于3时为6字节,精度为4和5时为7字节,所有其他精度则需要8字节。(6)datetimeoffset:该数据类型也用于存储日期和时间信息,取值范围与datetime2类型相同。但datetimeoffset类型具有时区偏移量,此偏移量指定时间相对于协调世界时(UTC)偏移的小时和分钟数。数据类型11.时间戳型标识符是timestamp。若创建表时定义一个列的数据类型为时间戳类型,那么每当对该表插入新行或修改已有行时,都由系统自动将一个计数器值加到该列,即将原来的时间戳值加上一个增量。记录timestamp列的值实际上反映了系统对该记录修改的相对(相对于其他记录)顺序。一个表只能有一个timestamp列。timestamp类型数据的值实际上是二进制格式数据,其长度为8字节。12.图像数据类型标识符是image,它用于存储图片、照片等。实际存储的是可变长度二进制数据,介于0与231

1(2147483647)字节之间。在SQLServer中,该类型是为了向下兼容而保留的数据类型。微软推荐用户使用varbinary(MAX)数据类型来替代image类型。数据类型13.xml类型用来在数据库中保存xml文档和片段的一种类型,大小不能超过2GB。例如描述地址:'{"省":"江苏","市":"南京","区县":"栖霞","街道":"仙林智谷","电话":"1381390100X"}'。14.地理空间类型和几何数据类型geometry:用于存储地理空间类型。例如地球某点的经纬度为:(118.912000,32.096790),把空间描述字符串转换为地理空间类型数据:geometry::STGeomFromText('POINT(118.91200032.096790)',4326),其中4326是坐标系的参数,代表GCS-WGS-1984坐标系,是系统默认的坐标系。数据类型15.其他数据类型(1)sql_variant:一种存储SQLServer支持的各种类型(除text、ntext、image、timestamp和sql_variant外)值的数据类型,,最大长度可达8016字节。(2)uniqueidentifier:唯一标识符类型。系统将为这种类型的数据产生唯一标识值,它是一个16字节长的二进制数据。(3)hierarchyid:SQLServer新增加的一种长度可变的系统数据类型,可用来表示层次结构中的位置。另外,varchar、nvarchar、varbinary这3种数据类型可以使用MAX关键字,如varchar(MAX)、nvarchar(MAX)、varbinary(MAX),加了MAX关键字的这几种数据类型最多可存放231-1个字节的数据,分别可以用来替换text、ntext和image数据类型。03表结构设计表结构设计在创建表之前,先要确定表的名字、表的属性,同时确定表所包含的列名、列的数据类型、长度、是否可为空值、约束条件、默认值设置、规则以及所需索引、哪些列是主键、哪些列是外键等,这些属性构成表结构。例如:学生成绩管理数据库(xscj)包含学生表(xsb)、课程表(kcb)和成绩表(cjb)。学生表xsb包含的属性有学号、姓名、性别、出生日期、专业、总学分、备注,如表。列

名数据类型长

度是否可空默

值说

明学号定长字符型(char)6×无主键,前两位表示年级,中间两位为专业,后两位为序号姓名定长字符型(char)8×无

性别位型(bit)默认值√11:男,0:女出生日期日期型(date)默认值√无

专业不定长字符型(varchar)12√计算机

总学分整数型(int)默认值√00≤总学分<160备注不定长字符型(varchar)500√无

表结构设计参照xsb表结构的设计方法,同样可以设计出kcb和cjb其他两个表的结构,如表。列

名数据类型长

度是否可空默

值说

明课程号定长字符型(char)3×无主键课程名定长字符型(char)16×无

开课学期整数型(tinyint)1√1只能为1~8学时整数型(tinyint)1√0

学分整数型(tinyint)1×0只能为1~6kcb的表结构列

名数据类型长

度是否可空默

值说

明学号定长字符型(char)6×无主键课程号定长字符型(char)3×无主键成绩整数型(int)默认值√0范围为0~100

cjb的表结构第3章

表的创建和操作——表结构创建、修改和删除01表结构创建表结构创建T-SQL语法格式如下。CREATETABLE表名( <列定义>, …)<列定义>::=列名,数据类型[属性][默认值][列约束]其中:(1)表名如果创建的表非当前数据库的表,需要采用“数据库-表名”。一般使用下列命令指定当前数据库:USE数据库名(2)列名必须符合标识符规则,长度不能超过64个字符,而且在表中要唯一。(3)数据类型和长度通过关键字声明具体的类型,有的数据类型需要指明长度n并用()括起。表结构创建(4)属性SQLServer支持用多种关键字定义列的属性,比如,用NOTNULL|NULL指定列是否允许空值,NOTNULL表示列不可取空值,NULL表示列可取空值。本例的“学号”和“姓名”列以NOTNULL明确不允许空值。如果不指定,SQLServer视为指定了NULL。(5)默认值用“DEFAULT常量表达式”为所在列指定默认值,其中“常量表达式”必须是一个常量值、标量函数或NULL值。DEFAULT定义可适用于除定义为timestamp或带IDENTITY属性的列以外的任何列。(6)列约束列的完整性约束,指定主键、替代键、外键等。例如,若指定该列为主键,则使用PRIMARYKEY关键字,本例在“学号”列上创建了主键约束,将该列设为整个表的主键:学号 char(6) NOTNULLPRIMARYKEY,表结构创建【例3.1】在xscj数据库中创建学生表xsb,该表的结构如表3.3所示。语句如下。USExscjCREATETABLExsb(

学号 char(6) NOTNULLPRIMARYKEY,

姓名 char(8) NOTNULL,

性别 bit NULLDEFAULT1,

出生日期 date NULL,

专业 varchar(12) NULLDEFAULT'计算机',

总学分 int NULLDEFAULT0,

备注 varchar(500) NULL)表结构创建说明:(1)USExscj语句将数据库xscj指定为当前数据库,然后CREATETABLE语句在数据库xscj中创建表xsb。如果xscj数据库此前没有创建,可以采用默认方式创建xscj数据库,然后打开xscj数据库,再在该数据库中创建表。CREATEDATABASExscj(2)后面只要在xscj数据库中操作,就不再需要打开该数据库。(3)xsb表创建后,在SSMS的对象资源管理器的xscj的“表”下就会显示xsb。【例3.2】创建一个带计算列的表,表中包含课程的课程号、总成绩和学习该课程的人数,以及课程的平均成绩。T-SQL语句如下。CREATETABLEkcb_pjcj(

课程号 char(3) PRIMARYKEY,

总成绩 real NOTNULL,

人数 int NOTNULL,

平均成绩 AS总成绩/人数PERSISTED)02分区表创建分区函数分区方案使用分区方案创建分区表分区表创建创建分区表的步骤如下:(1)创建分区函数,指定如何分区。(2)创建分区方案,定义分区函数在文件组上的位置。(3)使用分区方案。1.分区函数1)创建分区函数语法格式如下:CREATEPARTITIONFUNCTION函数名(输入参数类型) ASRANGE[LEFT|RIGHT] FORVALUES([边界值[,...]])说明:函数名:要创建的分区函数的名称。输入参数类型:用于分区的列的数据类型。LEFT|RIGHT:指定当间隔值由数据库引擎按升序从左到右排列时,边界值属于每个边界间隔的哪一侧(左侧还是右侧)。如果未指定,则默认值为LEFT。边界值:为该分区函数的已分区表或索引的每个分区指定边界值。分区表创建【例3.3】如果需要对学号列进行分区,需要对char类型列创建一个分区函数,名为PFunXH,数据分成4个区。包括小于或等于'210000'的区、大于'210000'且小于或等于'220000'的区、大于'220000'且小于或等于'230000'的区和大于'230000'的区。T-SQL语句如下。USExscjCREATEPARTITIONFUNCTIONPFunXH(char(6)) ASRANGELEFTFORVALUES('210000','220000','230000')语句执行后,在xscj→存储→分区函数下,就会看到“PFunXH”项。2)分区函数删除DROPPARTITIONFUNCTION分区函数名分区表创建2.分区方案1)创建分区方案语法格式如下:CREATEPARTITIONSCHEME方案名 ASPARTITION函数名 [ALL]TO({文件组名|[PRIMARY]}[,...n])说明:方案名:创建的分区方案的名称,在创建表时使用该方案即可创建分区表。函数名:使用分区方案的分区函数的名称,该函数必须在数据库中存在,分区函数所创建的分区将映射到在分区方案中指定的文件组。ALL:指定所有分区都映射到在“文件组名”中提供的文件组,或映射到主文件组(如果指定了[PRIMARY])。文件组名:指定用来持有由“函数名”指定的分区的文件组的名称。分区分配到文件组的顺序是从分区1开始,按文件组在[,...]中列出的顺序进行分配。分区表创建【例3.3续】在数据库xscj中增加文件组fgroup1、fgroup2、fgroup3和fgroup4,根据前面定义的分区函数创建一个分区方案,将分区函数中的4个分区分别存放在这4个文件组中。T-SQL语句如下。ALTERDATABASExscjADDFILEGROUPfgroup1ALTERDATABASExscjADDFILEGROUPfgroup2ALTERDATABASExscjADDFILEGROUPfgroup3ALTERDATABASExscjADDFILEGROUPfgroup4CREATEPARTITIONSCHEMEPSchXH ASPARTITIONPFunXH TO(fgroup1,fgroup2,fgroup3,fgroup4)语句执行后,在xscj→存储→分区方案下,就会出现“PSchXH”项。2)删除分区方案DROPPARTITIONSCHEME分区方案名分区表创建3.使用分区方案创建分区表分区函数和分区方案创建以后就可以创建分区表了。创建分区表使用CREATETABLE语句,只要在ON关键字后指定分区方案和分区列即可。【例3.3续】在数据库xscj中创建学生子表,分区方案是对该表学号列分区。T-SQL语句如下。USExscjCREATETABLExsb1_p(

学号 char(6) NOTNULLPRIMARYKEY,

姓名 char(8) NOTNULL,

出生日期 date NULL, )ONPSchXH(学号)【例3.3续】删除学生子表分区及其分区方案和分区函数。USExscjDROPTABLExsb1_pDROPPARTITIONSCHEMEPSchXHDROPPARTITIONFUNCTIONPFunXH03表结构修改表结构修改语法格式如下:ALTERTABLE表名 ALTERCOLUMN 列名

列定义… |ADD <列定义> |DROPCOLUMN 列名其中,ALTERCOLUMN子句修改已有列的属性;ADD子句添加新的列;DROPCOLUMN子句删除已有的列。【例3.4】在xsb1_p表中增加1个新列“奖学金等级”,然后再删除该列。T-SQL语句如下。(1)增加“奖学金等级”列:USExscjALTERTABLExsb1_p ADD奖学金等级tinyintNULL说明:执行后,“xscj”中dbo.xsb1_p表就出现了“奖学金等级”列。如果原表中存在和添加列同名的列,则语句运行将出错。(2)删除“奖学金等级”列:ALTERTABLExsb1_p DROPCOLUMN奖学金等级表结构修改【例3.4续】将xsb1_p表“姓名”的列长度由原来的8改为10,“出生日期”的列的数据类型由原来的date改为smalldatetime。T-SQL语句如下。ALTERTABLExsb1_p ALTERCOLUMN姓名char(10)ALTERTABLExsb1_p ALTERCOLUMN出生日期smalldatetime说明:(1)姓名列长度由8改为10(变大)是可以的,但如果变小,则需要该列所有数据均不超过修改后的长度,否则不能执行。(2)若表中该列所存数据的数据类型与将要修改的列类型冲突,则发生错误。04删

表删除表语法格式:DROPTABLE表名其中,“表名”是要被删除的表的名称。【例3.4续】删除xsb1_p表。T-SQL语句如下。USExscjDROPTABLExsb1_pGO05界面方式创建表创建表结构修改表结构删除表界面方式创建表1.创建表结构【例3.5】界面方式创建xsb、kcb和cjb表。(1)在“对象资源管理器”中展开“数据库”,右击“xscj”数据库菜单下的“表”选项,在弹出的快捷菜单中选择“新建表”菜单项,打开“表设计器”窗口,如图。(2)在“表设计器”窗口中,根据已经设计好的xsb的表结构分别输入或选择各列的名称、数据类型、是否允许为空值等属性。界面方式创建表(3)在“列属性”选项卡包含当前列默认值或绑定、标识规范、说明等属性。例如,“专业”列的“默认值或绑定”项输入“'计算机'”,对应性别的默认值输入“1”。说明项是对列的注释。如图。界面方式创建表(4)在“学号”列上右击鼠标,选择“设置主键”菜单项,选择“设为主键”选项,学生表结构设计完成后的结果如图。(5)在表的各列属性均编辑完成后,单击工具栏中的“保存”按钮,出现“选择表名”对话框。在其中输入表名“xsb”,单击“确定”按钮即可创建xsb表。界面方式创建表2.修改表结构1)更改表名SQLServer2008中允许改变一个表的名字,但当表名改变后,与此相关的某些对象(如视图),以及通过表名与表相关的存储过程将无效。在“对象资源管理器”中选择需要更名的表xsb,右击鼠标,在弹出的快捷菜单上选择“重命名”菜单项,输入新的表名“student”,单击“Enter”键即可更改表名。2)增加列和删除列向表xsb中添加一个“奖学金等级”列,列的数据类型为“tinyint”,允许为空值。(1)在“xscj”数据库中选择表“dbo.xsb”,右击鼠标,在弹出的快捷菜单上选择“设计”菜单项,打开“表设计器”窗口。(2)在“表设计器”窗口中选择第一个空白行,输入列名“奖学金等级”,选择数据类型“tinyint”。(3)当向表中添加的列均输入完毕后,关闭该窗口,此时将弹出一个“保存更改”对话框,单击“是”按钮(或单击面板中的按钮),保存修改后的表。这时,dbo.xsb就增加了“奖学金等级”列。(4)在“表dbo.xsb设计器”窗口中选择需删除的列(例如,在xsb表中删除“奖学金等级”列),右击鼠标,在弹出的快捷菜单上选择“删除列”菜单项,该列即被删除。界面方式创建表3)修改列(1)具有以下特性的列不能修改:数据类型为timestamp的列。计算列。全局标识符列。用于索引的列(但若用于索引的列为varchar、nvarchar或varbinary数据类型时,可以增加列的长度)。用于由CREATESTATISTICS生成统计的列,如需修改这样的列,则必须先用DROPSTATISTICS语句删除统计。用于主键或外键约束的列。用于CHECK或UNIQUE约束的列。关联有默认值的列。(2)当改变列的数据类型时,要求满足下列条件:

原数据类型必须能够转换为新数据类型。新数据类型不能为timestamp类型。界面方式创建表【例3.6】在xsb表中,将“姓名”列名改为“name”,数据长度由8改为10,允许为空值。将“出生日期”列名改为“birthday”,数据类型由“date”改为“datetime”。在“对象资源管理器”中展开数据库→xscj→表,选择xsb,右击鼠标,选择“设计”菜单项,进入表xsb的设计窗口,单击需要修改的列,修改相应的属性。修改完后保存。3.删除表删除一个表时,表的定义、表中的所有数据以及表的索引、触发器、约束等均被删除。例如,选择xsb,右击鼠标,在弹出的快捷菜单上选择“删除”菜单项。系统弹出“删除对象”窗口。单击“确定”按钮即可删除xsb表。第3章

表的创建和操作——表记录的插入、修改和删除01插入记录单记录插入多记录插入插入查询记录插入记录1.单记录插入语法格式如下:INSERTINTO表名(列名,...)VALUES(值表)或者INSERTINTO表名 VALUES(值表)其中,“列名,…”就是要向表中插入数据的那些列的名称,之间以逗号(,)分隔;“值表”则指明列表中的每个列对应要插入的数据内容。可以对表中所有的列插入数据,也可以只对部分列插入数据。插入记录【例3.7】向xscj数据库的表xsb中插入下列记录。221101,王林,男,2004-02-10,计算机,15,NULLT-SQL语句如下。USExscjINSERTINTOxsb VALUES('221101','王林',1,'2004-02-10','计算机',15,NULL)使用以下语句与上面的语句执行效果是相同的。INSERTINTOxsb VALUES('221101','王林',1,'2004-02-10',DEFAULT,15,NULL);或者:USExscjINSERTINTOxsb(学号,姓名,性别,出生日期,总学分) VALUES('221101','王林',1,'2004-02-10',15)插入记录2.多记录插入一条SQL语句完成多条记录插入的任务。语法格式如下:INSERTINTO表名(列,...)VALUES(值表1),(值表2),...,(值表n);【例3.8】一次向xsb表中插入5行记录。221201,刘华,男,2004-06-10,通信工程,13,辅修计算机专业221202,王林,男,2004-01-29,通信工程,13221204,马琳琳,女,2003-02-10,通信工程,15 221206,李计,男,2003-09-20,通信工程,16211201,李红庆,男,2002-05-01,通信工程,43T-SQL语句如下。USExscjINSERTINTOxsbVALUES ('221201','刘华',1,'2004-06-10','通信工程',13,'辅修计算机专业'), ('221202','王林',1,'2004-01-29','通信工程',13,NULL), ('221204','马琳琳',0,'2003-02-10','通信工程',15,NULL), ('221206','李计',1,'2003-09-20','通信工程',16,NULL), ('211201','李红庆',1,'2002-05-01','通信工程',43,NULL)插入记录3.插入查询记录可以把一个表的记录移植到另一个表或者合并已有多张表的内容。语法格式如下:INSERTINTO目标表名(列名,...) SELECT列名,...FROM源表名[WHERE条件]其中,第一个“(列名,...)”是要插入记录的目标表中的列,第二个“列名,...”是从已存有记录的源表中查询出来的结果列,如果源表与目标表有着完全相同的结构,也可省略这两个列表。插入记录【例3.9】从表xsb中生成通信工程专业的学生表xsb2,包括num(学号)、name(姓名)、speiality(专业),要求新表中的数据为结果集中前5行。建立表xsb2:T-SQL语句如下。USExscjCREATETABLExsb2( num char(6) NOTNULLPRIMARYKEY, name char(8) NOTNULL, speiality char(10) NULL)用INSERT语句向xsb2表中插入xsb表通信工程专业的学号、姓名、专业列。插入记录T-SQL语句如下。INSERTINTOxsb2 SELECT学号,姓名,专业 FROMxsb WHERE专业='通信工程'从xsb2表中查询结果:SELECT* FROMxsb2查询结果如图。02修改记录修改记录表中的数据行记录可以用命令修改。语法格式如下:UPDATE表名 SET列名=值,... [WHERE条件]

其中,SET子句指示要更新的列以及对应的新值,新值可以是表达式或关键字DEFAULT(默认值)。【例3.10】将xsb2表中学号为211201的学生学号改为计算机专业编号和专业改为“计算机”。USExscjUPDATExsb2 SETnum='211121',speiality='计算机' WHEREnum='211201'SELECT*FROMxsb2执行结果显示如图。03同步记录同步记录在SQLServer中新增加了一个MERGE语句,用于根据与源表连接的结果,对目标表执行插入、更新或删除操作。例如,根据一个表的数据在另一个表中插入、更新或删除有差异的行,可以对两个表进行信息同步。语法格式如下:MERGEINTO目标表[AS别名]USING源表ON条件 /*(1)*/ WHENMATCHED /*(2)*/ THENUPDATESET…|DELETE WHENNOTMATCHED /*(3)*/ THENINSERT[(列表)]VALUES(值表) WHENNOTMATCHEDBYSOURCE /*(4)*/ THENUPDATESET…|DELETE;同步记录说明:(1)目标表:指定要更新数据的表或视图。也可用AS为表定义别名。USING子句:指定用于更新的源表,ON指定在源表与目标表进行连接时所遵循的条件。(2)WHENMATCHED子句:目标表存在与源表匹配

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论