SQLServer表的创建和操作.ppt_第1页
SQLServer表的创建和操作.ppt_第2页
SQLServer表的创建和操作.ppt_第3页
SQLServer表的创建和操作.ppt_第4页
SQLServer表的创建和操作.ppt_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

第3章表的创建和操作,3.1表结构和数据类型,3.2以界面方式创建表,3.3以命令方式创建表,3.4以命令方式操作表数据,3.1表结构和数据类型,3.1.1表和表结构表是在日常工作和生活中经常使用的一种表示数据及其关系的形式,表3.1就是用来表示学生情况的一个“学生”表。,3.1.1表和表结构,下面简单介绍与表有关的几个概念。(1)表结构。组成表的各列的名称及数据类型,统称为表结构。(2)记录。每个表包含若干行数据,它们是表的“值”,表中的一行称为一个记录。(3)字段。每个记录由若干个数据项构成,将构成记录的每个数据项称为字段。例如,表3.1中的表结构为(学号,姓名,性别,出生时间,专业,总学分,备注),包含7个字段,由5个记录组成。(4)空值。空值(NULL)通常表示未知、不可用或将在以后添加的数据。若一个列允许为空值,则向表中输入记录值时可不为该列给出具体值;而一个列若不允许为空值,则在输入时必须给出具体值。(5)关键字。若表中记录的某一字段或字段组合能唯一标识记录,则称该字段或字段组合为候选关键字(Candidatekey)。,3.1.2数据类型,列的数据类型可以是SQLServer提供的系统数据类型,也可以是用户定义的数据类型。SQLServer提供的数据类型如表3.2所示。,3.1.2数据类型,1整数型:int,smallint,tiny,bigint整数型包括4种类型,从标识符的含义就可以看出,它们的表示数范围逐渐缩小。2精确数值型:decimal,numeric精确数值型数据由整数部分和小数部分构成,其所有的数字都是有效位,能够以完整的精度存储十进制数。decimal和numeric在功能上完全等价。格式:numeric|decimal(p,s),其中p为精度,s为小数位数,sp,默认值为0。存储1038+110381的固定精度和小数位的数字数据。,3.1.2数据类型,3浮点型:real,float浮点型不能精确表示数据的精度,用于处理取值范围非常大且对精确度要求不太高的数值量。类型数范围定义长度(n)精度字节real3.40E+383.40E+3812474float1.79E+3081.79E+30825531584货币型:money,smallmoney用十进制数表示货币值。类型数范围小数位数精度字节money26326314198smallmoney231231141045位型:bit它只存储0和1。当为bit类型数据赋0时,其值为0,而赋非0时,其值为1。字符串值TRUE转换为1,FALSE转换为0。,3.1.2数据类型,6字符型、Unicode字符型和文本型:char/nchar,varchar/nvarchar,text/ntext(1)char(n):定长字符数据类型,其中n定义字符型数据的长度,n在18000之间。默认n=1。(2)varchar(n):变长字符数据类型,n(18000)表示的是字符串可达到的最大长度。实际长度为输入字符串的实际字符个数,而不一定是n。(3)text:可以表示最大长度为2311个字符,其数据的存储长度为实际字符个数。(4)varchar(MAX)、nvarchar(MAX):最多可存放231-1个字节的数据,可以用来替换text、ntext数据类型。,3.1.2数据类型,7二进制型和图像型:binary(n),varbinary(n),varbinary(MAX),Image(1)binary(n):固定长度的n个字节二进制数据。n的取值范围为18000,默认为1。binary(n)数据的存储长度为n+4个字节。(2)varbinary(n):n个字节变长二进制数据。(3)image(图像数据型):用于存储图片、照片等。实际存储的是可变长度二进制数据,介于0与2311字节之间。该类型是为了向下兼容而保留的数据类型。(4)varbinary(MAX):最多可存放231-1个字节的数据,推荐用户使用varbinary(MAX)数据类型来替代image类型。,3.1.2数据类型,8日期时间型:date,datetime,smalldatetime,datetime2,datetimeoffset,time日期时间类型数据用于存储日期和时间信息,用户以字符串形式输入日期时间类型数据,系统也以字符串形式输出日期时间类型数据。数据类型日期范围精确度说明date1.1.19999.12.31日期datetime1753.1.19999.12.313.33ms日期和时间分别给出smalldatetime1900.1.12079.6.6分日期和时间分别给出datetime21.1.19999.12.31hh:mm:ss.nnnnnnndatetime(n)表示n(=17)位微秒datetimeoffsetYYYY-MM-DDhh:mm:ss.nnnnnnn+|hh:mm带时区偏移量Timehh:mm:ss.nnnnnnntime(n)表示n(=17)位微秒,3.1.2数据类型,(1)日期部分的表示形式常用的格式如下:,3.1.2数据类型,(2)时间部分常用的表示格式如下:,3.1.2数据类型,9时间戳型:timestamp该类型反映系统对该记录修改的相对(相对于其他记录)顺序,它实际上是二进制格式数据,其长度为8字节。每当对该表加入新行或修改已有行时,都由系统自动将一个计数器值加到该列,即将原来的时间戳值加上一个增量。一个表只能有一个timestamp列。10平面和地理空间数据类型:geometry,geography(1)geometry(平面空间数据类型):它作为.NET公共语言运行时(CLR)数据类型实现,表示欧几里得(平面)坐标系中的数据。(2)geography(地理空间数据类型):它作为.NET公共语言运行时(CLR)数据类型实现,表示圆形地球坐标系中的数据。SQLServer支持geography数据类型用于存储GPS纬度和经度坐标之类的椭球体(圆形地球)数据。,3.1.2数据类型,11其他数据类型:sql_variant,uniqueidentifier,xml,hierarchyid(1)sql_variant:一种存储SQLServer支持的各种数据类型(除text、ntext、image、timestamp和sql_variant外)值的数据类型。sql_variant的最大长度可达8016字节。(2)uniqueidentifier:唯一标识符类型。系统将为这种类型的数据产生唯一标识值,它是一个16字节长的二进制数据。(3)xml:用来在数据库中保存xml文档和片段的一种类型,但是此种类型的文件大小不能超过2GB。(4)hierarchyid:可表示层次结构中的位置。,3.1.3表结构设计,“学号”列:只有学号列能唯一标识一个学生,将学号列设为该表主键。学号值有一定的意义,例如,“191301”中“19”表示所属班级,“13”表示学生的年级,“01”表示学生在班级中的序号,所以学号列的可以是6位的定长字符型数据,数据类型为char(6)。“姓名”列:姓名一般不超过4个中文字符,可以采用8位定长字符型数据,数据类型为char(8)。“性别”列:只有“男”、“女”两种值,所以可以使用bit型数据,值1表示“男”,值0表示“女”,默认是1。“出生时间”列:该列可能进行日期运算,存放日期时间类型数据,列类型定为date。“专业”列:假定专业名最多为6个汉字,可定为12位定长字符型数据char(12)。“总学分”列:是整数型数据,值在0160之间,列类型定为int,默认是0。“备注”列:需要存放学生的备注信息,备注信息的内容在0500个字之间,所以应该使用varchar类型。,3.1.3表结构设计,最后设计的xsb的表结构如表3.3所示。,3.1.3表结构设计,参照xsb的表结构的设计方法,同样可以设计出其他两个表的结构,如表3.4所示为kcb的表结构,如表3.5所示为cjb的表结构。,3.2以界面方式创建表,3.2.1创建表【例3.1】通过“对象资源管理器”创建表xsb。步骤如下:(1)打开“表设计器”。在“SSMS”的“数据库”中展开“pxscj”,右击“表”选项,选择快捷菜单“新建“表”菜单项,系统打开“表设计器”窗口,在“表设计器”窗口中,输入学生表(xsb)结构,如图3.1所示。,3.2.1创建表,3.2.1创建表,(2)设置“列属性”。在表设计器列属性卡中输入各列,然后设置下列内容。不能为空:去掉“学号”、“姓名”和性别“允许Null值”列上的勾。设置主键:在“学号”列上右击鼠标,选择“设置主键”菜单项,该字段前就会显示小钥匙图标。默认值或绑定:专业字段设置为“计算机”;性别字段设置为1;总学分字段设置为0。列属性很多,上述属性是常规的属性,其他部分属性随着SQLServer的学习深入可以得到应用和理解。(3)设置表属性。在列编辑区域中,按右键,在快捷菜单中选择“属性”,右边表“属性”页中显示数据库名称为“pxscj”,用户修改(表名称)为“xsb”。,3.2.2修改表结构,【例3.1续】修改“pxscj”数据库中的“xsb”表结构。修改表结构包括增加列、删除列、修改已有列的属性(列名、数据类型、是否为空值等)。在“对象资源管理器”中选择“pxscj”数据库中的“xsb”表,右击鼠标,在弹出的快捷菜单上选择“设计”菜单项,打开“表设计器”窗口。1加入新列和删除某列加入新列:右击该列,选择“插入列”,在增加的空列中加入新列名称及其属性。删除某列:右击该列,选择“删除列”。2列没有值修改列属性如果当前表没有输入数据,或者需要修改的列没有值,则可以直接修改。如果出现问题,可以先删除该列,再增加列。,3.2.2修改表结构,3列有值修改列属性当表中有了记录后,一般不要轻易改变表结构,特别是不要改变列的数据类型,以免产生错误。在需要改变列的数据类型时,要求满足下列条件:(1)原数据类型必须能够转换为新数据类型。(2)新数据类型不能为timestamp类型。(3)如果被修改列属性中有“标识规范”属性,则新数据类型必须是有效的“标识规范”数据类型。,3.2.2修改表结构,注意:如果不能通过界面方式修改表,在“SSMS”的面板中单击“工具”主菜单,选择“选项”子菜单,在出现的“选项”对话框中选择“设计器”,将“阻止保存要求重新创建表的更改”复选框前的钩去掉,如图3.2所示。,3.2.2修改表结构,4更改表名在“对象资源管理器”中选择需要更名的表,右击鼠标,在弹出的快捷菜单上选择“重命名”菜单项,输入新的表名后确定。,3.2.3删除表,在“对象资源管理器”中选择表,右击鼠标,在弹出的快捷菜单上选择“删除”菜单项。系统弹出“删除对象”窗口。单击“确定”按钮即可删除指定表。,3.2.4以界面方式操作表数据,【例3.2】以“pxscj”数据库中xsb、kcb、cjb表为例,介绍表数据记录的插入、修改和删除。1插入记录刚开始输入数据,光标定位在第1行,然后逐列-1输入列的值。输入完成后,将光标定位到当前表尾的下一行。插入记录将新记录添加在表尾,可以向表中插入多条记录。输入时需要注意:(1)没有输入数据的记录所有列显示为“NULL”。,3.2.4以界面方式操作表数据,(2)若表的某些列(例如学号、姓名)不允许为空值,则必须为该列输入值,否则系统显示错误信息。已经输入内容的列系统显示“!”提示,如图3.3(a)所示。(3)输入不允许为空值的列,其他列没有输入,光标定位就可以定位到下一行,此时设置默认值的列就会填入默认值,如图3.3(b)所示。,3.2.4以界面方式操作表数据,(4)性别字段为“bit”类型,用户需要输入“1”或者“0”,系统对应显示“True”和“False”。(5)输入的记录中的主键(学号)字段列不能重复值,否则在光标试图定位定位到下一行系统显示错误信息,并且不能离开该行,如图3.4所示。,3.2.4以界面方式操作表数据,图3.5所示为插入数据后的xsb表。,3.2.4以界面方式操作表数据,2删除记录当表中的某些记录不再需要时,要将其删除。在表数据窗口中定位需删除的记录行,单击该行最前面的黑色箭头处选择全行,右击鼠标,选择“删除”菜单项。选择“删除”后,将出现一个确认对话框,单击“是”按钮将删除所选择的记录,单击“否”按钮将不删除该记录。,3.2.4以界面方式操作表数据,3修改记录先定位被修改的记录的行,在列中直接进行修改,修改之后将光标移到下一行即可保存修改的内容。按照上述方法,向课程表(kcb)和成绩表(cjb)中输入样本记录,如图3.6和3.7所示。,3.3以命令方式创建表,3.3.1创建表:CREATETABLE1创建表命令创建表命令的主要格式如下:CREATETABLE表名(|,.n);,3.3.1创建表:CREATETABLE,列的定义可以是下列3种。1)列:=列名/*指定列名、列的数据类型*/NULL|NOTNULL/*指定是否为空*/CONSTRAINT约束名DEFAULT常量表达式/*指定默认值*/|IDENTITY(初值,增量)/*指定列为标识列*/ROWGUIDCOL/*指定列为全局标识符列*/*指定列的约束*/:=类型名(精度,小数位|max,3.3.1创建表:CREATETABLE,2)计算列计算列中的值是通过其他列计算出来的,该列实际并不存放值。:=列名AS计算列表达式PERSISTEDNOTNULL,3.3.1创建表:CREATETABLE,3)列集列集用于XML列。【例3.3】设已经创建了数据库test1,现在该数据库中需创建学生情况表xsb1,该表的结构如表3.3所示。单击“新建查询”,在查询编辑器中输入下列T-SQL命令:USEtest1GOCREATETABLExsb1(学号char(6)NOTNULLPRIMARYKEY,姓名char(8)NOTNULL,性别bitNULLDEFAULT1,出生时间dateNULL,-2005无date,应datetime专业char(12)NULLDEFAULT计算机,总学分intNULLDEFAULT0,备注varchar(500)NULL,年龄AS2015-year(出生时间)获取当前时间用getdate()函数)GO,3.3.1创建表:CREATETABLE,Mysql中CREATETABLExsb1(学号char(6)NOTNULLPRIMARYKEY,姓名char(8)NOTNULL,性别bitNULLDEFAULT1,出生时间dateNULL,-2005无date,应datetime专业char(12)NULLDEFAULT计算机,总学分intNULLDEFAULT0,备注varchar(500)NULL,-年龄AS2015-year(出生时间)PERSISTEDmysql中没有计算列,获取当前时间可以用now()函数),3.3.1创建表:CREATETABLE,2创建临时表(以一个井号(#)开头的那些表名)在SQLServer中创建的表通常称为持久表。在数据库中,持久表一旦创建,则将一直存在,多个用户或者多个应用程序可以同时使用持久表。有时需要临时存放数据,例如,临时存储复杂的SELECT语句的结果。此后,可能要重复地使用这个结果,但这个结果又不需要永久保存。这时,可以使用临时表。用户可以像操作持久表一样操作临时表。只不过临时表的生命周期较短,当断开与该数据库的连接时,服务器会自动删除它们。存储在tempdb的sysobjects表中的临时表如:createtable#abc(idintidentity,abcintnull),3.3.2修改表结构:ALTERTABLE,修改表结构语法格式如下:ALTERTABLE表名ALTERCOLUMN列名,/*修改列属性*/|ADD/*添加列*/,.|DROP/*删除列*/CONSTRAINT约束名/*删除约束*/|COLUMN列名,.,3.3.2修改表结构:ALTERTABLE,1)命令主体ALTERTABLE命令主体结构说明如下:(1)表名:要修改的表名。(2)ALTERCOLUMN子句:修改表中指定列的属性,“列名”给出要修改的列。若表中该列所存数据的数据类型与将要修改的列类型冲突,则发生错误。例如,原来char类型的列要修改成int类型,而原来列值包含非数字字符,则无法修改。(3)ADD子句:向表中增加新列,新列的定义方法与CREATETABLE命令中定义列的方法相同。一次还可以添加多个列,中间用逗号隔开。(4)DROP子句:从表中删除列或约束。(5)WITH子句:WITHCHECK|NOCHECK指定表中的数据是否用新添加的或重新启用的FOREIGNKEY或CHECK约束进行验证。,3.3.2修改表结构:ALTERTABLE,2)ALTERCOLUMN子句该子句的内容格式为:ALTERCOLUMN列名类型名(精度,小位数)COLLATE排序名NULL|NOTNULL(1)类型名:为被修改列的新的数据类型。当要修改成数值类型时,可以使用“(精度,位数)”分别指定数值的精度和小数位数。(2)NULL|NOTNULL:表示将列设置为是否可为空,设置成NOTNULL时要注意表中该列是否有空数据。,3.3.2修改表结构:ALTERTABLE,2修改表结构命令举例【例3.4】修改test1数据库xsb1表结构。(1)增加列:在test1数据库xsb1表中增加“入学时间”列。在查询编辑器中输入下列T-SQL命令:ALTERTABLExsb1ADD入学时间date如果原表中已经存在与添加列同名的列,则语句运行将出错。(2)修改列:修改表xsb1中已有列的属性:将名为“姓名”的列长度由原来的8改为10;将名为“入学时间”的列的数据类型由原来的date改为smalldatetime。在查询编辑器中输入下列T-SQL命令:ALTERTABLExsb1ALTERCOLUMN姓名char(10)ALTERTABLExsb1ALTERCOLUMN入学时间smalldatetime(3)删除列:删除入学时间和年龄列。在查询编辑器中输入下列T-SQL命令:ALTERTABLExsb1DROPCOLUMN入学时间,年龄,3.3.3删除表,语法格式:DROPTABLE表名,.;其中,“表名”是要被删除的表的名称。,3.4以命令方式操作表数据,3.4.1插入记录1插入记录命令插入记录使用INSERT语句,语法格式如下:INSERTTOP(表达式)PERCENTINTO表名|视图名(列表)VALUES(DEFAULT|NULL|表达式)/*指定列值*/|DEFAULTVALUES/*强制新行包含为每个列定义的默认值*/|SELECT命令,3.4.1插入记录,2插入记录命令举例【例3.5】向test1数据库的表xsb1中插入记录。(1)插入一行。231301,王一平,1,1990-02-10,计算机,50,NULLT-SQL命令如下:INSERTINTOxsb1VALUES(231301,王一平,1,1990-02-10,管理工程,50,NULL)插入上例数据也可以使用以下命令:INSERTINTOxsb1(学号,姓名,出生时间,专业,总学分)VALUES(191301,王林,1990-02-10,管理工程50)或者:INSERTINTOxsb1VALUES(191301,王林,DEFAULT,1990-02-10,管理工程,50,NULL);,3.4.1插入记录,(2)一次向表中插入2条记录。201301,王海,1,1996-05-10,软件工程,50,NULL201302,李娜,0,1996-04-12,软件工程,52,NULLT-SQL命令如下:INSERTINTOxsb1VALUES(201301,王海,1,1991-05-10,软件工程,50,NULL),(201302,李娜,0,1991-04-12,软件工程,52,NULL),3.4.1插入记录,(3)从其他表的记录插入其中:从test1数据库表xsb1中生成软件工程专业的学生表(

温馨提示

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

评论

0/150

提交评论