1 / 76

第五章 数据库操作技术

第五章 数据库操作技术. 内容目录. 5.1 数据库基本操作 5.1.1 结构显示和表的访问 5.1.2 记录操作 5.2 数据库可视化操作 5.2.1 记录的浏览与编辑修改 5.2.2 备注字段和通用字段的操作 5.3 排序与索引 5.3.1 排序操作 5.3.2 索引操作 5.4 查询命令 5.4.1 顺序查询 5.4.2 索引查询. 内容目录. 5.5 多表的操作 5.5.1 工作区 5.5.2 表的关联 5.5.3 表的联接 5.6 统计命令 5.6.1 计数命令 5.6.2 求和命令

yazid
Télécharger la présentation

第五章 数据库操作技术

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第五章 数据库操作技术

  2. 内容目录 5.1 数据库基本操作 5.1.1结构显示和表的访问 5.1.2记录操作 5.2 数据库可视化操作 5.2.1记录的浏览与编辑修改 5.2.2备注字段和通用字段的操作 5.3 排序与索引 5.3.1排序操作 5.3.2索引操作 5.4 查询命令 5.4.1顺序查询 5.4.2索引查询

  3. 内容目录 5.5 多表的操作 5.5.1工作区 5.5.2表的关联 5.5.3表的联接 5.6 统计命令 5.6.1 计数命令 5.6.2 求和命令 5.6.3 求平均值命令 5.6.4 汇总命令 5.7 表的复制 5.7.1 表的复制 5.7.2 表结构的复制 5.8 SELECT-SQL查询 5.9 视图 (*)

  4. 本章重点掌握: (1)表的访问操作;记录的添加、插入、编辑修改、显示、定位、删除各恢复、过滤等操作;掌握备注型数据和通用型数据的输入方法;表结构的复制。 (2)用编辑方式显示和修改数据,用浏览方式显示和修改数据。 (3)控制字段和记录的访问,训练数据表中记录的定位、插入、添加、删除和恢复等操作。 (4)按字段值顺序排序。 (5)懂得用命令创建索引并使用索引。 (6)掌握顺序查询(LOCAT FOR)和索引查询(FIND和SEEK)的方法。 (7)掌握多工作区数据操作方法,建立表间的关联和联接。

  5. (8)掌握对表中数据的四种统计命令(SUM、AVERAGE、COUNT、TOTAL)使用方法。(8)掌握对表中数据的四种统计命令(SUM、AVERAGE、COUNT、TOTAL)使用方法。 (9)掌握SELECT查询语句的引用,能灵活根据数据查询要求组合WHERE、HAVING、ORDER BY、GROUP BY等子句并能使用INSERT INTO、DELETE FROM、UPDATE SET语句。

  6. 5.1.1 结构显示和表的访问 5.1 数据库基本操作 1、表结构显示 格式:LIST|DISPLAY STRUCTURE [TO PRINT [PROMPT]|TO FILE <文件名>] [NOCONSOLE] 说明:(1)TO PRINT [PROMPT]:列表结果输入打印机,后跟 [PROMPT] 则显示打印机设置对话框。 (2) TO FILE <文件名>]:列表结果保存在文件中。 (3) [NOCONSOLE]:列表结果不在屏幕上显示。 (4)LIST显示的内容是连续的,而DISPLAY是分屏显示 例:显示XSCJ数据库STUDENT表的结构。

  7. 在命令窗口中输入: OPEN DATABASE e:\vfp6\data\xscj.dbc USE student LIST STRUCTURE

  8. 屏幕上显示student.dbf的表结构:

  9. 2、数据库结构显示 格式:LIST|DISPLAY DATABASE 例:显示XSCJ数据库的结构。 输入 命令: OPEN DATABASE e:\vfp6\data\xscj.dbc LIST DATABASE

  10. 3、表的打开与关闭 只有打开表后,才能对表进行操作。表的关闭时数据会自动存盘。 • 命令打开或关闭表 打开表命令格式:USE <表文件名> [EXCLUSIVE|SHARED] 关闭表命令格式:USE 说明: 1)打开一个表,就自动关闭该工作区原已打开的表,一个工作区同一时间只能打开一个表。 2)表刚打开时,记录指针指向第一条记录。 3)表操作完后应及时关闭。 4) 只有以独占方式打开才能对表的结构和记录内容修改。 或在打开表文件对话框中选定独占复选框。 • 菜单等方式打开表 (工作区概念放在本章第5节介绍)

  11. 关闭表的其它方法: • 其它命令: • 退出VFP即关闭表

  12. 5.1.2 记录操作 表记录的基本操作有显示、修改、插入、删除、替换。 1、记录显示 格式:LIST|DISPLAY [FIELDS <字段名表>][<范围>] [FOR <逻辑表达式1>][WHILE <逻辑表达式2>] 功能:连续显示记录或者环境信息 说明: <范围> 记录范围,即NEXT、ALL、REST和RECORD记录号子句; ALL 所有记录 NEXT N 从当前记录起的N个记录 RECORD N 第N个记录 REST 从当前记录起到最后一个记录止的所有记录

  13. 【示例】显示学生记录。 USE student LIST && 显示所有的记录 List for性别=“女” GO 3 Display List fields学号,姓名,所在系 for党员=.t. &&(或List fields 学号,姓名,所在系 for 党员) List to tt.txt List to print

  14. 2、记录浏览(P74) 格式:BROWSE [FIELDS <字段表>] [FOR <逻辑表达式1>] [FREEZE <字段>] … 【示例】浏览学生记录。 USE student browse &&浏览所有的记录 browse fields学号,姓名,所在系 freeze姓名for党员.

  15. 3、记录指针的定位 记录指针:用来指示表文件中记录位置的指针。 当前记录:指针当前所指向的记录。 (1)指针的绝对移动命令 格式:GO|GOTO [RECORD] <记录号> GO|GOTO TOP|BOTTOM 示例:USE student GO 3 DISP GOTO RECN 5 DISP GO TOP DISP

  16. (2)指针的相对移动命令 格式:SKIP [+|-] [<算术表达式>] 示例: USE student ? RECNO(),BOF() &&1 .F. SKIP –1 ? RECNO(),BOF() &&1 .T. SKIP –1 &&到文件头 GO 8 ? RECNO(),EOF() &&8 .F. SKIP ? RECNO(),EOF() &&9 .T. SKIP &&到文件尾

  17. 4、记录的插入与追加 (1)插入新记录 格式:INSERT [BLANK][BEFORE] 示例:USE student SKIP 2 INSERT BLANK SKIP INSERT BLANK BEFORE (2)追加新记录(*) • INSERT-SOL命令 格式:INSERT INTO 表名[(字段名1[,字段名2,…])] VALUE (表达式1[,表达式2,…]) 功能:在表尾追加一条新记录,并直接给记录赋字段值。 (不必事先打开表)

  18. APPEND命令 格式:APPEND [BLANK] 功能:在表尾追加一条新记录。 • APPEND FROM命令 • 格式:APPEND FROM <文件名> [FIELDS <字段名表>] [FOR <逻辑表达式>][TYPE….] 功能:在当前表末尾追加一批记录,这些记录来自于另一文件 (表、文本或EXCL文件)。 示例2:USE student APPE FROM STUtxt APPE FROM STUxt1type delimited with blank APPE FROM STUxlsxls LIST

  19. 5、记录的删除与恢复 (1)逻辑删除命令 格式:DELETE [<范围>][FOR <条件>][WHILE <条件>] 功能:对当前表在指定<范围>内符合<条件>的记录加上删除标记。 (2)物理删除命令 格式:PACK 功能:真正删除带有删除标记的记录。 示例:USE student DELETE ALL FOR NOT 党员 PACK LIST

  20. (3)记录恢复命令 格式:RECALL [<范围>][FOR <条件>][WHILE <条件>] 功能:对当前表在指定<范围>内符合<条件>的记录去除删除标记。 示例:USE SC DELETE ALL FOR 成绩<=60 and 成绩>90 LIST recall for 课程号=“001” LIST (4)记录清除命令 格式:ZAP 功能:物理删当前表中所有记录。

  21. 6、表数据的替换 (1)成批修改数据 格式:REPLACE <字段1> WITH <表达式1> [ADDITIVE] [,<字段2> WITH <表达式2> [ADDITIVE] …] [<范围>] [FOR <条件>] [WHILE <条件>] 说明:ADDITIVE用在备注字段,表示将表达式的值添加到字段的原有内容后,而不是替换。 示例:USE SC.DBF REPLACE ALL 成绩 WITH 成绩+10 FOR 成绩<60 LIST

  22. (2)单记录与数组间的数据传送 • 将记录传送到数组或内存 格式:SCATTER [FIELDS<字段名表>|FIELDS LIKE<通配字段名> |FIELDS EXCEPT<通配字段名>][MEMO] TO <数组名> [BLANK]|MEMVAR[BLANK] 说明:将当前记录的字段值按<字段名表>顺序依次送入数组中,或依次送入一组内存变量。 示例:USE student SCATTER FIELDS 学号,姓名,性别 to A ? A(1),A(2),A(3),A(4),A(5) SCATTER FIELDS 学号,姓名,性别 MEMVAR ? m.学号,m.姓名,m.性别

  23. 将数组或内存变量传送到记录 格式:GATHER FROM <数组名>|MEMVAR [FIELDS<字段名表>|FIELDS LIKE<通配字段名> |FIELDS EXCEPT<通配字段名>][MEMO] 说明:将数组或内存变量的数据依次传送到当前记录,以替换相应字段值。 示例:USE student GO 4 SCATTER to A ? A(1),A(2),A(4),A(6) A(6)=“MA” GATHER FROM A DISPLAY

  24. (3)成批记录与数组间的数据传送 • 将表的一批记录复制到数组 格式:COPY TO ARRY <数组名> [FIELDS<字段名表>][<范围>][FOR<条件>] [WHILE<条件>] 说明:将当前表选定的数据复制到<数组名>表数组中,不复制备注型字段。 • 从数组向表追加记录 格式:APPEND FROM ARRY <数组名> [FIELDS<字段名表>] [FOR<条件>] 说明:将满足条件的数组行数据按记录依次追加到当前表中。

  25. 7、逻辑表的设置 (1)过滤器(记录筛选,即关系的选择运算) 格式:SET FILTER TO <条件> 功能:从当前表中过滤出符合<条件>的记录,不符合<条件>的记录被“遮蔽”。 示例:USE sc SET FILTER TO 成绩>80 AND LEFT(学号,2)=“98” LIST SET FILTER TO LIST

  26. (2)字段表(字段筛选,即关系的投影运算)(2)字段表(字段筛选,即关系的投影运算) 格式:SET FIELDS TO [<字段名表>]|ALL LIKE<通配字段名> | EXCEPT<通配字段名>] 功能:设置后,只能对当前表中指定的字段(列)进行操作,其它字段被“遮蔽” ,用SET FIELDS OFF解除。 示例:USE student SET FIELDS TO 学号,姓名,所在系 LIST SET FIELDS OFF LIST

  27. 5.2 数据库可视化操作 5.2.1 记录浏览与编辑修改 (1)两种记录显示方式:编辑和浏览 通过“显示”菜单来切换 (2)浏览窗口的操作 命令打开浏览窗口:USE <表名> BROWSE 独占方式打开表才可对表数据进行修改。 一窗两区显示记录的操作方法。 (3)在浏览窗口追加与删除记录 • 记录的追加:有“追加方式”和“追加新记录”两种菜单选项操作,前者为连续追加。 • 记录的删除:先给记录打上删除标记再从磁盘上删除。即先做逻辑删除,在进行物理删除。

  28. 5.2.2 备注字段和通用字段的操作 (1)通用型字段数据录入 双击进入通用型字段数据录入窗口,插入对象(图像、图形、声音等类型文件) (2)通用型字段数据的修改 进入通用型字段数据录入窗口,双击该窗口进入对象文件的编辑环境修改。 注意对象的链接与嵌入(OLE)两种方式的区别。 (3)通用型字段数据删除 1、备注字段的操作方法 Ctrl+PgDn或双击进入, Ctrl+W存盘退出, Ctrl+Q或Esc放弃退出。 2、通用型字段的操作方法

  29. 5.3 排序与索引(P83) 5.3.1 排序操作 数据表的排序:把数据表文件中的记录按照某个字段值的大小顺序重新排列。排序后将产生一个新表,但原文件不变。 命令格式:SORT TO <新文件名> ON <字段名1> [/A][/D][/C][,<字段名2> [/A][/D][/C]…] [<范围>] [FOR <条件>] [WHILE <条件>] [FIELDS <字段名表>] 大 示例:对STUDENT表按所在系排序。 use student SORT ON学号/d TO tt.dbf && 按学号降序排序, 并将结果存入tt.dbf中 USE tt && 打开tt.dbf LIST&& 显示结果 小

  30. 5.3.2 索引操作 (要注意区分索引与排序的差别。) 1、建立索引文件 格式1(建立.IDX单索引文件): INDEX ON <索引关键字> TO <单索引文件名> [FOR <条件>][UNIQUE] [COMPACT] [ADDITIVE] 示例:USE sc *****按学号建普通索引文件XHidx***** INDEX ON 学号 TO XHidx LIST *****按课程号升序建唯一索引文件KHidx***** INDEX ON 课程号TO KHidx UNIQUE LIST

  31. 格式2(建立.CDX复合索引文件): INDEX ON <索引关键字> TAG <标记名> [OF <复合索引文件名>][UNIQUE|CANDIDATE] [ASCENDING/DESCENDING] [ADDITIVE] [FOR <条件>] 示例:对SC.DBF建立各项索引。 USE sc *****按成绩降序建普通索引标识cj***** INDEX ON 成绩TAG cj DESCENDING LIST *****先按课程号升序再按成绩升序建普通索引标识kccj***** INDEX ON 课程号+STR(成绩,6,2)TAG kccj LIST *****先按课程号升序再按成绩降序建候选索引标识kccj1***** INDEX ON VAL(课程号)-成绩/1000 TAG kccj1 CANDIDATE

  32. 2、 索引文件的使用 一个表可以打开多个索引文件,但任何时候只有一个索引文件起作用,这当前起作用的索引文件就称为主控索引文件; 同样,对一个复合索引文件打开的多个索引标识中,任何时候都只有主控索引起作用。 结构复合索引文件随着表的打开而打开。 • 单索引文件的打开和关关闭(*) 打开格式:1、USE <表文件名> INDEX <索引文件表> 2、SET INDEX TO <索引文件表> [ADDITIVE] 关闭格式(关闭表就自然关闭了索引文件): SET INDEX TO 示例:USE sc SET INDE TO XHidx,KHidx &&前者xhidx为主控索引文件 LIST

  33. 确定复合索引的主控索引 格式:SET ORDER TO [<数值表达式>|<单索引文件名>]|[TAG]<索引标识>]

  34. 取消复合索引的主控索引 格式:SET ORDER TO 或 SET ORDER TO 0 • 删除索引 (删除文件方式来删除单索引文件) 删除索引标识命令格式: DELETE TAG ALL|<索引标识1>[,<索引标识2>]… • 重新索引 主控索引随着记录操作自动更新,而非主控索引不会,在使用该索引时需要进行重新索引。 格式:REINDEX

  35. 5.4 查询命令 5.4.1 顺序查询 1、LOCATE命令 格式:LOCATE [<范围>] FOR <条件> [WHILE<条件>] 功能:顺序查找指定条件的记录,记录指针并定位在该记录上。 2、CONTINUE命令 格式:CONTINUE 功能:继续先前的LOCATE查询 【示例】按指定条件定位记录。

  36. USE student LOCATE FOR 所在系=”IS”&& 找到第一个“IS”系学生记录 continue&&再找到下一个“IS”系学生的记录

  37. 5.4.2 索引查询命令 FoxPro有FIND和SEEK两个索引查询命令。使用索引查询命令时,要求查询的文件必须先建立了索引, FIND和SEEK是针对索引关键字进行查找。 1、FIND命令 格式:FIND <字符表达式> 功能:在索引的表/数据库文件中查询与字符表达式匹配的记录

  38. 【示例】查找学号=“98004”的学生。 USE student INDEX ON 学号TAG sno tt="98004" FIND &tt DISPLAY 记录号 学号 姓名 性别 出生日期 党员 所在系 简历 照片 4 98004 张大山 男 11/30/81 .T. CS memo gen

  39. 2、SEEK命令 格式:SEEK <表达式> 功能:在主控索引的表中按索关键字搜索满足<表达式>值的第一个记录。 【示例】查找学号=“98004”的学生。 USE student SET ORDER TO sno SEEK “98004” DISPLAY 记录号 学号 姓名 性别 出生日期 党员 所在系 简历 照片 4 98004 张大山 男 11/30/81 .T. CS memo gen

  40. 5.5 多表的操作 5.5.1 工作区 学籍管理使用的4个表 学生情况表(STUDENT.DBF): STUDENT(学号 c(5),姓名 c(8),性别 c(2),出生日期 d,党员 l,所在系 c(2),简历 m,照片 g) 课程情况表(COURSE.DBF): course(课程号 c(3),课程名 c(10),学 时数 n(4),学分 n(3,1)) 成绩表(SC.DBF): sc(学号 c(5),课号 c(3),成绩 n(6,2)) 学生特长表(SPE.DBF): spe(学号 c(5),专业 c(10),外语水平 c(4),特长 c(20))

  41. 1、工作区号 • VFP提供了32767个工作区,编号从1到32767。 • 每个工作区只允许打开一个表,在同一工作区打开另一个表时,以前打开的表就会自动关闭。一个表如果要在不同工作区中再次打开,则须在USE命令中加上“AGAIN”选项。 2、别名 前10个工作区除使用1~10为编号外,还默认用A~J十个字母作为工作区别名。 • VFP自动使用文件名作为默认表别名。 • 可用 USE <文件名> ALIAS <别名>来指定表别名。

  42. 3、工作区的使用 (1) SELECT <工作区号>∣<别名> && 指定要打开表的工作区号 SELECT 0 && 选定当前尚未使用的最小 号工作区 SELECT()&& 返回当前工作区号 别名.字段名&& 引用其它工作区中打开的 表的字段 (2)USE <表名> IN <工作区号>∣<别名> && 在指定的工作区 打开表,但不改变 当前工作区

  43. 【示例】通过多区操作从SC.DBF表中学号查出其在STUDENT.DBF表中对应的姓名。【示例】通过多区操作从SC.DBF表中学号查出其在STUDENT.DBF表中对应的姓名。

  44. CLOSE ALL && 关闭所有打开的表,当前工作区为1号工作区 SELECT 1 && 1号工作区未打开过表,选定的工作区即该区 USE sc GO 8 && 移至8记录,注意该记录的学号字段值为 98004 SELECT 0 && 选定2号工作区为当前工作区 USE student INDEX ON 学号 TAG sno SEEK sc.学号&& 即 SEEK “98004” ?sc.学号,姓名,SC.成绩&& 这里“姓名”指STUDENT.DBF表 中的姓名字段 98004 张大山 89.00 SELECT sc && 选定SC.DBF所在工作区为 当前工作区 ?学号,STUDENT.姓名,成绩 98004 张大山 89.00

  45. 5.5.2 表的关联 1、关联的概念 所谓关联,就是令不同工作区的记录指针建立一种临时的联动关系,使一个表的记录指针移动时另一个表的记录指针能随之移动。2、建立关联步骤 ·        (1)、确定建立关联的两个表,一为父表,一为子表。执行表操作命令时,父表记录指针的移动,会使子表记录指针自动移到满足关联条件的记录上。 ·        (2)子表用关联的字段表达式先建立索引。 (3)用关联命令建立关联。命令中指明关联字段表达式。(4)如是一多关系,声名一多关系 多一关系:父表有多条记录对应子表中一条记录 的关联关系。 一多关系:父表的一条记录对应子表中的多条 记录。

  46. 3、关联命令 1)建立关联格式: SET RELATION TO [<表达式1> INTO <别名1>,…, <表达式N> INTO <别名N>][ADDITIVE] 功能:以当前表为父表与其它子表建立关联 2)解除关联: 格式:SET RELATION TO 3)说明一多关系: 格式:SET SKIP TO [<表别名1>[,<表别名2>]…]功能:用在SET RELATION命令后,说明已建关联为一多关系 4)取消一多关系:SET SKIP TO

  47. 【示例】利用建立表间关联,列出所有学生的学号、姓名、系名、课程号、成绩,试写出命令序列。系表结构为dep(所在系 C(2),系名 C(12) ) ( STUDENT—DEP 多一关系, STUDENT — SC 一多关系)

  48. CLOS ALL SELECT 2 USE dep INDEX ON 所在系TAG xbh ADDITIVE &&子表dep.dbf在所在系 &&字段建立索引 SELECT 3 USE sc INDEX ON 学号TAG xh ADDITIVE &&子表sc.dbf在学号字段 &&建立索引 SELECT 1 USE student SET RELATION TO 所在系INTO dep && 指定在所在系字段对子表 && dep设置多对一关系 SET RELATION TO 学号INTO sc ADDITIVE && 指定在学号字段对子表 && sc设置一对多关系 SET SKIP TO sc BROWSE FIELDS STUDENT.学号,STUDENT.姓名,DEP.系名,SC.课程号,; SC.成绩

  49. 5.5.3 表的联接 JOIN命令命令格式:JOIN WITH <工作区别名> | <表别名> TO <新表名> FOR <联接条件> [FIELDS <字段名表> NOOPTIMIZE] 功能:按照FOR子句规定的联接条件,将当前工作区中的表与另一个以<工作区号>或<表别名>表示的工作区中的表进行联接,从而产生一个新表。

More Related