数据库和表创建和使用第3节.ppt

上传人:max****ui 文档编号:12176656 上传时间:2020-05-08 格式:PPT 页数:141 大小:1.58MB
返回 下载 相关 举报
数据库和表创建和使用第3节.ppt_第1页
第1页 / 共141页
数据库和表创建和使用第3节.ppt_第2页
第2页 / 共141页
数据库和表创建和使用第3节.ppt_第3页
第3页 / 共141页
点击查看更多>>
资源描述
3.3表的创建和使用,1.表结构表结构的创建和修改2.字段属性与表的属性3.表的打开与关闭4.记录的处理5.表的索引6.自由表7.有关表操作的常用函数,第3章数据库与表的创建及使用,学生表中有8个记录,原物理顺序:,以xh(学号)字段作为索引:,以XM(姓名)字段作为索引:(汉字以拼音字母为准),结束放映?,YES(是),NO(否),表的概念字段的基本属性,表结构的创建和修改,引言表结构的创建使用表向导创建表结构使用表设计器创建表结构使用CREATETABLE命令创建表结构表结构的修改在表设计器中修改表结构用ALTERTABLE命令修改表结构,记录的处理,记录的输入记录的浏览筛选记录与字段记录的定位,记录的修改记录的删除与恢复记录的复制数据的统计,表的使用,工作区与表的别名在工作区中打开和关闭表打开和关闭表的操作方法(系统自动分配工作区)选择工作区打开和关闭表(用户选择工作区)表的独占与共享使用使用表的其他问题,表的索引,索引的相关概念记录的顺序与索引索引的分类根据内容:索引的类型根据文件:索引文件的类型创建索引文件创建结构复合索引索引的修改与删除,索引的使用与维护设置主控索引建立“多字段”索引利用索引快速定位记录,学校学生情况表,表的概念,学校教师情况表,表的概念,表的概念VFP中的表(Table)是指存放在磁盘文件中的一张二维表。一张表保存为一个表文件(.DBF),表有时也叫数据表。表中的一列称为字段(Field)。字段规定了数据的特征。例如,学生表中学号、姓名、性别和系名就是字段。表的一行叫做一个记录(Record)。记录是多个字段的集合。同一个表的每一个记录都有相同的字段。表的记录必须用一个公共的结构来存储,这个公共的结构就是表结构。建立表的步骤是:先设计表的结构,再在VFP中使用命令或表设计器建立表的结构并保存为表文件,然后再输入记录。,字段的基本属性(1)字段名(FieldName)每一个字段必须取一个名字,称为“字段名”。用以标识该字段。字段名一般要与其对应的实体的属性名相同或相近。例如,学生表的“姓名”列的字段名可以取为“姓名”或“xingming”或“XM”或“name”等。字段名的命名规则与内存变量的命名规则一样。在中文版的VFP中,允许使用汉字作为字段名。字段的数据类型(Type)表中的每个字段都有特定的数据类型。不同的数据类型的表示和运算的方法不一样。指定数据类型是为了方便VFP处理这些数据。VFP提供了13种字段的数据类型。,字段的基本属性(2)字段宽度(Width)字段宽度是指该字段所能容纳数据的最大字节数,字段宽度必须能足够容纳可能的最长的数据信息。其中备注型和通用型字段宽度为4字节,包含的是引用信息,指向真正的备注内容。备注字段的数据保存在单独文件中,文件名与表文件名相同,并且扩展名为.FPT。另外一些数据类型的宽度是固定的。如货币型、日期型、日期时间型和双精度型为8字节;整型、备注型、备注型(二进制)和通用型为4字节;逻辑型为1字节。小数位数(Decimal)对于数值型、浮点型和双精度型的字段还可以指定其小数的位数。这些数据类型字段的宽度,实际上是整数部分的宽度+小数点1位+小数位数宽度。如果小数位数不为0,则小数位数必须比整个字段宽度至少小2。,字段的基本属性(3)空值支持(Null)空值是用来指示记录中的一个字段“有或没有”数据的标识。在VFP出现之前,字段中“有没有”包含数据是难以区分的。例如,如果要添加一个空白的记录但又不想在这些字段中插入数据,那么,对于数值型字段而言,将把它当作包含一个零值对待。然而,由于0是一个值(正如1或3.14一样),如果这个字段正好有一个为0的值而被当作没有值对待是不正确的。对于字符和逻辑数据类型而言,类似的情形也会发生:不包含数据的逻辑型字段被指定为一个逻辑“假”值,即在不知道是“真”是“假”的情况下,被说成是“假”。VFP通过提供能够指定一个字段是包含NULL(空)还是包含一个值的功能,使这个问题得以解决。这种指定是作为字段定义的一个部分,如象定义名称和类型一样。NULL不是一种数据类型或一个值,确切地讲,它是用来指示数据存在或不存在的一种属性。通过使用NULL,就有了一个判定某个字段是否具有一个值的办法。,通用型,G,OLE,图片或声音,VFP中字段的数据类型,引言(1)在VFP中,如何来收集和存储数据呢?VFP把数据存储在表文件里。表文件可以属于某个数据库(与数据库相关联的表),叫数据库表(简称“库表”),表文件也可以与数据库无关联,叫自由表。自由表具有的特性数据库表都有,但数据库表还可以具有其他功能。本节首先介绍自由表的创建过程与功能。在创建表结构时应当注意以下几点:1.字段的数据类型必须与字段的存储内容相匹配。每一个字段都有特定的数据类型。2.为字段设置足够的宽度来容纳信息。字符型字段的长度最大为254,数值型、浮点型字段的长度最大为20,其他类型字段的长度由系统给定。,引言(2),3.为数值型、浮点型字段选择适当的小数位数。4.若想让字段接受.NULL.值,则在表设计器对话框中选中NULL,或在CREATETABLE-SQL命令中使用NULL关键字。5.自由表的字段名本身最多只能取10个字符,且必须以字母、下划线或汉字开头。6.表中允许的字段个数最大为255;若表中有字段使用了NULL值则允许的字段个数最大为254。7.若表结构中定义了备注型字段,则会产生一个主名与表名相同、扩展名为.FPT的备注文件。此文件不能被删除。否则,表文件将无法打开。8.创建自由表和数据库表结构的方法和步骤相似。,使用表设计器创建表结构(1),具体步骤:1.(1)在VFP的主窗口中,选择“文件”菜单中的“新建”或点击“常用”工具栏上的“新建”按钮,均可打开如右图所示的“新建”对话框。在“新建”对话框的文件类型选择框中点击“表”选项,然后点击“新建文件”按钮。,使用表设计器创建表结构(2),(2)若要直接在某个项目文件中创建自由表,可先打开此文件,在“项目管理器”中选择“数据”选项卡,然后再选择“自由表”,点击“项目管理器”中的“新建”按钮,打开如右图所示的“新建表”对话框。在“新建表”对话框中点击“新表”按钮。,使用表设计器创建表结构(3),2.经过步骤1,屏幕上会出现“创建”对话框,如下图所示。在其中指定表的保存位置、表的名称并选定保存类型之后,单击“保存”按钮。,使用表设计器创建表结构(4),3.经过步骤2,VFP将激活表设计器,在屏幕上弹出表设计器的对话框(如图所示),其中共有3个选项卡,即、和选项卡,分别用于不同设置。,使用表设计器创建表结构(5),4.经过步骤3,再单击标签,激活选项卡,输入相应的字段名、字段类型、字段宽度和小数位数;若允许字段使用.NULL.值,点击NULL。,使用表设计器创建表结构(6),5.经过步骤4,单击“确定”按钮,此时会出现下面对话框,单击“是(Y)”,则在完成表结构创建的同时,打开表的“浏览”窗口,进入记录的输入状态;若单击“否(N)”,则仅完成表结构的创建,产生一个只有结构而无记录的空表。,使用CREATETABLE-SQL命令创建自由表(1),一、命令格式如下:CREATETABLE语法:CERATETABLE|DBFFREE(字段名1字段类型(字段长度,小数位数)NULL|NOTNULL,字段名2字段类型(字段长度,小数位数NULL|NOTNULL,)功能:创建表(自由表)的结构说明:(1)FREE子句表示创建的表是自由表,不被添加到数据库中。创建自由表时,若没打开任何数据库,则该关键字可省略。(2)用本命令创建的表,将自动处于打开状态。,使用CREATETABLE-SQL命令创建自由表(2),二、例题分析:用CREATETABLE-SQL命令创建职工情况表(ZGQK.DBF)。解:CREATETABLEZGQKFREE(GHC(6),XMC(8)NOTNULL,;XBC(2),HFL,CSRQDNULL,JBGZN(7,2),JLM)命令中各字段的含义如下:GH-工号、字符型、长度为6;XM-姓名、字符型、长度为8;XB-性别、字符型、长度为2;HF-婚否、逻辑型;CSRQ-出生日期、日期型;JBGZ-基本工资、数值型、长度为7、小数位数为2;JL-简历、备注型。其中,XM字段不允许NULL值,CSRQ字段允许NULL值。,在表设计器中修改表结构(1),1.如果表已存在于一个项目中,则可在项目管理器中先选定要修改的表,然后再单击其中的“修改”按钮便会打开表设计器进行表结构的修改。2.使用MODIFYSTRUCTURE命令打开表设计器并修改一个表的结构。在使用该命令前,首先应以独占方式(EXCLUSIVE)打开要修改的表。例如,可以在命令窗口中使用以下命令修改XS表的结构:USEXSEXCLUSIVEASCENDING|DESCENDINGIN工作区|别名参数:表达式指定SEEK搜索的索引关键字,利用索引快速查找记录(1),利用索引快速查找记录(2),说明:SEEK命令只能在索引过的表中使用,并且只能搜索索引关键字。如果SEEK找到了与索引关键字相匹配的记录,则RECNO()函数返回匹配记录的记录号;FOUND()函数返回“真”(.T.);EOF()函数返回“假”(.F.)。如果找不到相匹配的关键字,则RECNO()将返回表中记录的个数加1;FOUND()返回“假”(.F.);EOF()返回“真”(.T.)。例如,在XS表中要定位到学号为960102的记录上,则当前主控索引的索引关键字必须是XH或是以XH开头。USExsORDERTAGxhSEEK960102,利用索引快速查找记录(3),2.SEEK()函数SEEK()函数同先执行SEEK命令然后执行FOUND()函数的结果一样。语法:SEEK(表达式,工作区|别名,Tag名)3.索引的其他用法索引除了可以指定表记录的访问顺序和进行快速定位以外,还可以利用索引建立表之间的永久关系和临时关系。有关内容将在下一章中介绍。,有关表操作的几个函数(1),(1)SELECT()语法:SELECT(0|1|别名)SELECT()函数用来测试工作区号。其中:0用于返回当前工作区号;1表示返回当前未被使用的最大工作区号;别名用于返回该表所在的工作区号。使用别名必须加引号。(2)USED()语法:USED(工作区|别名)USED()函数用于测试一张表的别名是否已被使用,或在指定的工作区中是否有表打开。(3)ALIAS()ALIAS(工作区)ALIAS函数用于返回当前或指定工作区中表的别名。,有关表操作的几个函数(2),(4)FIELD()语法:FIELD(字段序号,工作区|别名)本函数用于返回已打开表的指定序号的字段名。(5)FCOUNT()语法:FCOUNT(工作区|别名)本函数用于返回已打开表的字段个数。(6)DELETED()语法:DELETED()本函数用于测试表的当前记录是否带有删除标记。如果带有则返回.T.,否则返回.f.。,建立“多字段”索引(1),索引表达式可以由单字段构成,也可以是两个以上字段的组合。现举例说明建立“多字段索引”的方法。例题分析:已知XSCJ表的结构如下:字段名字段类型字段长度小数位数XHC8XMC8XBL1CSRQD8XIMINGC18YWCJN51SXCJN51WYCJN51JLM4,建立“多字段”索引(2),各字段名的含义如下:XH-学号;XM-姓名;XB-性别;CSRQ-出生日期;XIMING-系名;YWCJ-语文成绩;SXCJ-数学成绩;WYCJ-外语成绩;JL-简历。试按以下要求用命令方式建立结构复合索引:(1)将XS表中的记录先以XIMING排序,XIMING相同的再以XM排序,XM相同的再以XH排序,索引标识名为XXX1。(2)将XS表中的记录先以XM排序,XM相同的再以SXCJ排序;SXCJ相同的再以CSRQ排序,索引标识名为XXX2。(3)将XS表中的记录以学生的总成绩的降序排序,索引标识名为XXX3。解:(1)INDEXONXIMING+XM+XHTAGXXX1(2)INDEXONXM+STR(SXCJ,5,1)+DTOC(CSRQ);TAGXXX2(3)INDEXONYWCJ+SXCJ+WYCJTAGXXX3DESC,记录的浏览(1),查看表中记录内容的方法有以下几种:一、使用“浏览”窗口先将要查看的表打开并选定为当前表,然后从“显示”菜单中选择或在“数据工作期”窗口中点击“浏览”按钮,均可打开“浏览”窗口。,记录的浏览(2),“浏览”窗口显示活动表中的记录。在“浏览”窗口中浏览一个表时,可以用两种方式查看记录:浏览和编辑。可以在“显示”菜单中选择或切换查看方式(必须先打开表的“浏览”窗口)。,记录的浏览(3),二、使用BROWSE命令BROWSE命令用来打开表的浏览窗口。BROWSE命令可以简单到只有BROWSE一个词,也可以复杂到具有几十个选项,用以定制浏览窗口的外观、控制记录的编辑和筛选浏览的记录、字段等。对此,不必一一究其用法,掌握几个常用的选项即可。语法:BROWSEFIELDSFOR三、在VFP主窗口中显示记录除了以上两种方法外,还可以用LIST和DISPLAY命令将表中记录显示在系统主窗口中。语法:LISTFIELDS范围FOROFFDISPLAYFIELDS范围FOROFF说明:二者的区别是:前者的范围选项的默认值为所有记录(ALL),后者为下一条记录(NEXT1);前者在窗口显示满后,将不停顿的连续显示,后者会做一停顿,等待用户按任意键继续显示。,记录的浏览(4),四、例题分析(1)用BROWSE命令显示JS表中所有男教师的GH、XM、XB、ZC等字段的内容(如图所示)。,记录的浏览(5),(2)在VFP主窗口中显示JS表中所有男教师的GH、XM、XB、ZC等字段的内容(如图所示)。,记录的定位(1),1.记录指针标志当一个表文件被打开后,系统中自动生成三个控制标志:记录的开始标志、记录指针标志、记录的结束标志。当向表中输入数据时,VFP为每个记录按输入顺序指定了“记录号”。第一个输入的记录的记录号是1,依次类推。(如图),记录的定位(2),记录指针是一个非常重要的概念。它是VFP系统内部的一个指示器,指向表中的记录,每当打开一个表文件时,记录指针总是指向第一个记录。记录指针指向的那个记录称为当前记录。可以将记录指针理解为保存当前记录号的变量。在进行数据处理时,经常要移动记录指针,使记录指针指向用户所需要操作的那个记录,这个过程即是记录的定位。测试当前记录指针的值可用函数RECNO()进行测试。记录的开始标志介于表结构和记录之间,前面是表结构,后面是记录。记录的结束标志是整个表记录结束的标志。记录的开始标志可用函数BOF()进行测试。当记录指针指向记录的开始标志时,其值为.T.,否则为.F.。记录结束标志可用函数EOF()进行测试。当记录指针指向记录结束标志时,其值为.T.,否则为.F.。,记录的定位(3),2.记录的定位方式记录指针的定位方式可分为:记录指针的绝对定位、记录指针的相对定位和条件定位。指针的绝对定位是指把指针移动到指定的位置。如指定记录号的记录、第一个记录或最后一个记录。,记录的定位(4),指针的相对定位是指把指针从当前位置开始,相对于当前记录向前或向后移动若干个记录位置。指针的相对定位与定位前指针的位置相关。条件定位是指按照一定的条件自动地在整个表或表的某个指定范围中查找符合该条件的记录,如果找到符合条件的记录,则把指针定位到该记录上,否则,指针将定位到整个表或表的指定范围的末尾。,3.记录定位的实现(1)通过界面操作方式定位在“表”菜单中的“转到记录”子菜单项中可以实现不同方式的定位:“记录号(R)”:实现绝对定位。“定位(L)”:实现条件定位。需要在“定位记录”对话框中输入查找范围、定位条件。按“定位”按钮实现定位。,记录的定位(5),在“作用范围”下拉列表中选择范围。其中有四个选项:“All”:表中的全部记录;“Next”:从当前记录开始的n个记录,个数在其右边的文本框中输入;“Record”:指定的记录,记录号在其右边的文本框中输入;“Rest”:当前记录后的所有记录。在“For”文本框中输入条件表达式。例如,在“作用范围”下拉列表中选择“All”,在“For”文本框中输入条件表达式:XM=高山,单击“定位”按钮,将在所有记录中查找姓名为“高山”的记录。如果找到,则把指针定位在第一个符合条件的记录上,否则,指针定位在记录结束标志上。(2)使用命令定位记录指针的绝对定位命令GO或GOTO,见下表:,记录的定位(6),记录指针的相对定位命令SKIP语法:SKIPnRecords参数:nRecords:指定记录指针需要移动的记录数。如果nRecords0,记录指针将向文件尾移动nRecords个记录;如果nRecords=20UPDATEjsSETjbgz=jbgz+30这组命令的本意是想把JS表中工龄在20年的教师的基本工资加30,而结果是把所有教师的基本工资都加了30。正确的命令应该是:UPDATEjsSETjbgz=jbgz+30WHEREjs.gl=20二、筛选字段筛选字段是选取表的部分列。在“工作区属性”对话框中,在“允许访问”框内选中“字段筛选指定的字段”单选钮,单击“字段筛选”按钮,在打开的“字段选择器”对话框中选定所需字段。,“工作区属性”对话框,表达式生成器,“字段选择器”对话框,记录的修改(1),一个表只要不是以只读方式打开,就可对其记录进行编辑和修改。可以通过界面操作进行或使用命令进行修改。1.在浏览窗口中编辑修改记录个别记录的修改可在编辑窗口或浏览窗口中进行。用EDIT命令或CHANGE命令打开编辑窗口;用BROWSE命令或项目管理器打开浏览窗口,在浏览窗口中可以进行修改。例如,要用EDIT命令来编辑修改XS表,可以在命令窗口中输入如下命令:EDIT2.批量记录的修改例如,当跨入新的一年时,所有在职教工(假设“工龄29,记录的修改(5),3.例题分析设当前表为JS.DBF,其结构为:职工号(C,6)、姓名(C,8)、性别(C,2)、年龄(N,2)、职称(C,10)和基本工资(N,4),其中有若干条记录。请用单条命令实现以下功能:(1)对所有职称为“讲师”且基本工资大于500的教师,将他们的职称晋升为“副教授”,基本工资上调10%;(2)将所有具有高级职称(只含“副教授”或“教授”)的女教师的基本工资上调10%。解:(1)UPDATEJSSET职称=“副教授”,;基本工资=基本工资*1.1;WHERE职称=“讲师”AND基本工资500(2)UPDATEJSSET基本工资=基本工资*1.1;WHERE“教授”$职称AND性别=“女”,使用NULL值,在建立新表时,可以指定表字段是否接受null值。在“表设计器”的“字段”选项卡中选定或清除字段的Null列。当Null列被选定时,该字段接受null值。或者,在CREATETABLE命令中使用NULL和NOTNULL子句。例如,以下命令可以创建ZG表,其中的gh(工号)和xm(姓名)字段不允许为null值,而csrq(出生日期)字段则允许为null值:CREATETABLEzg(ghC(6)NOTNULL,;xmC(8)NOTNULL,csrqDNULL)也可以用SETNULLON命令控制表字段中是否允许null值。,记录的复制(1),当前表中的记录也可以复制到其它表文件中。方法是:1.界面方式打开“文件”菜单,点击其中的“导出”,在打开的“导出”对话框中选择类型为“VisualFoxPro3.0(DBF)”,并输入目标表文件名,单击“确定”按钮即可将当前表的所有记录复制到指定文件名的表中。或通过单击“选项”按钮,在“导出选项”对话框中指定作用范围、条件和字段,以进行部分记录或部分字段的复制操作。2.使用COPY命令语法:COPYTOFIELDS范围FOR功能:将已打开的当前表中的全部或部分记录复制到指定的新文件中,如存在.FPT文件则自动复制。,记录的复制(2),3.例题分析(1)将XS表中所有“信息管理系”的学生的记录复制到新表XSA中的命令如下:USEXSCOPYTOXSAFORXIMING=“信息管理系”(2)生成一个新表文件XSB.DBF,使其结构仅包含XS表中的XH、XM、XB、CJ等四个字段,记录为XS表中的第4至第8条记录的命令是:USEXSCOPYTOXSBFIELDSXH,XM,XB,CJ;FORRECNO()=4ANDRECNO()=500ANDJBGZ40,创建表的触发器,在“表设计器”的“表”选项卡的“触发器”区中,从“插入触发器”、“更新触发器”或“删除触发器”框里选定触发器表达式,并删除它。使用DELETETRIGGER命令。格式如下:DELETETRIGGERONFORDELETE|INSERT|UPDATE如果从数据库中移去或删除表,则所有属于该表的触发器都从数据库中删除。但是,由被移去或删除的触发器引用的存储过程没有删除。,移去或删除触发器,数据库表的字段级和记录级规则以及表的触发器,为数据的输入和修改实施了约束。,库表的约束机制及其激活时机,输入掩码表,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!