第 12章 数据表的索引和排序第 12章 数据表的索引和排序
12.1 索引的基本概念
12.2 建立索引
12.3 使用索引第 12章 数据表的索引和排序
12.1 索引的基本概念
12.1.1 索引的概念所谓索引,就是根据数据库中某些字段值,为数据库建立一个逻辑顺序的索引文件,但并不实际去调整数据库中每个记录的顺序,因此记录在数据库中的位置并未改变。
第 12章 数据表的索引和排序
12.1.2 索引的类别
1,主索引在指定字段或表达式中不允许出现重复值的索引,
这样的索引可以起到主关键字的作用 。
建立主索引的字段可以看作是主关键字,一个表只能有一个主关键字,所以一个表只能创建一个主索引 。
主索引可以确保字段中输入值的唯一性,并决定了处理记录的顺序。
第 12章 数据表的索引和排序
2,候选索引候选索引与主索引具有相同的特性,建立候选索引的字段可以看作是候选关键字,所以一个表可以建立多个候选索引 。
候选索引像主索引一样要求字段值的唯一性并决定了处理记录的顺序。在数据库表和自由表中均可为每个表建立多个候选索引。
第 12章 数据表的索引和排序
3,唯一索引
“唯一性”是指索引项的唯一,而不是字段值的唯一。它以指定字段的首次出现值为基础,选定一组记录,并对记录进行排序。在一个表中可以建立多个唯一索引。
第 12章 数据表的索引和排序
4,普通索引普通索引也可以决定记录的处理顺序,它不仅允许字段中出现重复值,并且索引项中也允许出现重复值。在一个表中可以建立多个普通索引。
第 12章 数据表的索引和排序
12.2 建立索引
12.2.1 使用表设计器建立索引
1,单项索引使用表设计器建立索引的步骤如下:
1) 单击,文件,菜单中的,打开,命令,选定要打开的表 。
2) 从“显示”菜单中选择“表设计器”命令,
表的结构将显示在“表设计器”中。
第 12章 数据表的索引和排序
3) 在“表设计器”中有“字段”、“索引”和
“表”三个选项卡,在“字段”选项卡中定义字段时,就可以直接指定某些字段是否是索引项,用鼠标单击定义索引的下拉列表框可以看到有三个选项:
无、升序和降序。
第 12章 数据表的索引和排序
4) 如果要将索引定义为其他类型的索引,则需选择,索引,选项卡 。 在,索引名,框中,键入索引名 。 从,类型,列表中,选定索引类型 。 可以选择四种索引类型之一:主索引,候选索引,普通索引,唯一索引 。
5) 当索引设定完毕后,单击“确定”按钮,系统弹出提示框,询问“结构更改为永久性更改?”,
选择“是”按钮,回到主窗口。
第 12章 数据表的索引和排序
2,复合字段索引
1) 在,索引,选项卡中用鼠标单击,插入,按钮,这时会在界面中出现一新行 。
2) 在索引名栏目中输入索引名,从索引类型下拉列表框中选择索引类型 。
3) 单击表达式右侧的灰色方块,进入,表达式生成器,
对话框,在,表达式生成器,中输入索引表达式 。
4) 若想有选择地输出记录,可在,筛选,框中输入筛选表达式,或者选择该框后面的按钮来建立表达式 。
5) 最后单击“确定”按钮。
第 12章 数据表的索引和排序
12.2.2 用命令建立索引建立索引可以使用 INDEX命令,其语法格式为:
INDEX ON〈 索引表达式 〉 TAG〈 索引名 〉
例如,可以使用以下命令为数据表 St创建普通索引:
USE St
INDEX ON 学号 TAG xh
INDEX ON 姓名 TAG xm
第 12章 数据表的索引和排序
12.2.3 用索引对记录排序建好表的索引后,便可以用它来为记录排序 。 若要用索引对记录排序:
1) 从,文件,菜单中选择,打开,命令,选择已建好索引的表 。
2) 单击,显示,菜单中的,浏览,命令,打开数据表 。
3) 单击,表,菜单中的,属性,命令,打开,工作区属性,对话框 。
4) 在,工作区属性,对话框中,选择要用的索引 。
5) 单击“确定”。
第 12章 数据表的索引和排序
12.2.4 复合索引中索引表达式的使用
1,对多个,数值型,字段建立复合索引如果用多个,数值型,字段建立一个索引表达式,
索引将按照字段的和,而不是字段本身对记录进行排序 。
若要用多个字段对记录排序:打开要添加索引的表,
在“表设计器”的“索引”选项卡中,输入索引名和索引类型。在“表达式”框中输入表达式,其中列出要作为排序依据的字段。
第 12章 数据表的索引和排序
2,对不同数据类型的字段建立复合索引如果想用不同数据类型的字段作索引时,可以在非
,字符型,字段前加上数据类型转换函数 ( 如 STR( )表示将数值型转换成字符型数据,DTOC( )表示将日期型转换成字符型数据 ),将它转换成,字符型,字段 。
例如,如果要按照学号,姓名,出生时间,入学成绩的顺序对记录进行排序,可以用 + 号建立,字符型,字段的索引表达式:
学号 + 姓名 + DTOC(出生时间 ) + STR(入学成绩,6,1)
第 12章 数据表的索引和排序
12.2.5 筛选记录筛选记录的方法为:
(1) 打开要添加索引的表,在,表设计器,的,索引,选项卡中,创建或选择一个索引 。
(2) 在,筛选,框中,输入一个筛选表达式,例如,
建立一个年龄在 19岁以上记录的筛选表达式:
YEAR(DATE()) – YEAR(出生日期 ) >= 19
(3) 最后,选择“确定”。
第 12章 数据表的索引和排序
12.3 使用索引根据所建索引类型的不同,可以完成不同的任务:
(1) 使用普通索引,候选索引或主索引,可以进行记录排序,以便提高显示,查询或打印的速度 。
(2) 对数据库表使用主索引或候选索引,对自由表使用候选索引,可以在字段中控制重复值的输入并对记录排序。
第 12章 数据表的索引和排序
12.3.1 对记录进行排序
1,使用表设计器
(1) 打开要添加索引的表 。
(2) 在,表设计器,的,索引,选项卡中,输入索引名和索引类型 。
(3) 在,表达式,一栏中,键入作为排序依据的字段名 。 或者,键入一个作为排序依据的表达式,或通过选择该方框后面的按钮,用,表达式生成器,建立一个表达式 。
第 12章 数据表的索引和排序
(4) 若要以降序显示记录,可选择索引名左侧的箭头按钮。按钮上的箭头方向向上时按升序排序;向下时则按降序排序。
(5) 选择“确定”。
第 12章 数据表的索引和排序
2,使用命令在运行时,可以使用 SET ORDER命令改变表单中记录的顺序 。 其格式为:
SET ORDER TO〈 索引名 〉
第 12章 数据表的索引和排序
12.3.2 查找记录
1,字符查找命令 (FIND)
查找关键字与所给字符串相匹配的第一个记录 。 若找到,指针指向该记录;否则指向文件尾,给出信息
,没找到,。 语法格式为:
FIND〈 字符串 〉 |〈 数值 〉
第 12章 数据表的索引和排序说明:
(1) FIND只能查找字符串或常数,而且表必须按相应字段索引 。
(2) 查找的字符串无需加引号,若按字符型内存变量查找,必须使用宏代换 &函数 。
(3) 本命令只能找出符合条件的第一个记录,若要继续查找其它符合条件的记录,可使用 SKIP命令 。
(4) 使用本命令时,若是找到了符合条件的首记录,
则置函数 FOUND( )的值为,T.;否则置函数 FOUND( )的值为,F.。
第 12章 数据表的索引和排序
2,表达式查找命令 (SEEK)
查找关键字与所给字符串相匹配的第一个记录 。 若找到,指针指向该记录;否则指向文件尾,给出信息
,没找到,。 语法格式为:
SEEK〈 表达式 〉
第 12章 数据表的索引和排序说明:
(1) 只能找出符合条件的第一条记录 。
(2) 本命令可查找字符,数值,日期和逻辑型索引关键字 。
(3) 若 〈 表达式 〉 为字符串,则须用界限符括起来
( ‘ ’,,",[ ]) ;若按字符型内存变量查找,不必使用宏代换 &函数 。
(4) 使用本命令时,若是找到了符合条件的首记录,
则函数 FOUND( )的值为,T.;否则其值为,F.。
第 12章 数据表的索引和排序
3,顺序查询命令 (LOCATE)
查找当前数据表中满足条件的第一条记录 。 语法格式为:
LOCATE [〈 范围 〉 ] [FOR〈 条件 〉 ]
说明:
(1)〈 范围 〉 项缺省时,系统默认为 ALL。
(2) 若找到满足条件的首记录,则指针指向该记录,否则指向范围尾或文件尾 。
(3) 若缺省所有可选项,则记录指针指向 1号记录 。
(4) 若想继续找,可以利用下面的继续查找命令
( CONTINUE)。
第 12章 数据表的索引和排序
4,继续查找命令 (CONTINUE)
使最后一次 LOCATE命令继续往下搜索,指针指向满足条件的下一条记录 。 命令格式为:
CONTINUE
说明:
(1) 使用本命令前,必须使用过 LOCTAE命令 。
(2) 此命令可反复使用,直到超出 〈 范围 〉 或文件尾。
第 12章 数据表的索引和排序
12.3.3 控制重复输入
(1) 在浏览窗口中打开数据表 st。
(2) 打开,表设计器,,在,索引,选项卡中将学号选取为主索引,并返回到浏览窗口 。
(3) 单击,显示,菜单中的,追加方式,,光标跳到最后一行,输入学号数据与上一行相同,按下向下方向键,这时将显示错误信息,表示学号索引关键字的字段中,有数据违反唯一性规则 。
(4) 单击“确定”按钮回到该记录作修改,如果单击
“还原”按钮会还原记录的内容。
12.1 索引的基本概念
12.2 建立索引
12.3 使用索引第 12章 数据表的索引和排序
12.1 索引的基本概念
12.1.1 索引的概念所谓索引,就是根据数据库中某些字段值,为数据库建立一个逻辑顺序的索引文件,但并不实际去调整数据库中每个记录的顺序,因此记录在数据库中的位置并未改变。
第 12章 数据表的索引和排序
12.1.2 索引的类别
1,主索引在指定字段或表达式中不允许出现重复值的索引,
这样的索引可以起到主关键字的作用 。
建立主索引的字段可以看作是主关键字,一个表只能有一个主关键字,所以一个表只能创建一个主索引 。
主索引可以确保字段中输入值的唯一性,并决定了处理记录的顺序。
第 12章 数据表的索引和排序
2,候选索引候选索引与主索引具有相同的特性,建立候选索引的字段可以看作是候选关键字,所以一个表可以建立多个候选索引 。
候选索引像主索引一样要求字段值的唯一性并决定了处理记录的顺序。在数据库表和自由表中均可为每个表建立多个候选索引。
第 12章 数据表的索引和排序
3,唯一索引
“唯一性”是指索引项的唯一,而不是字段值的唯一。它以指定字段的首次出现值为基础,选定一组记录,并对记录进行排序。在一个表中可以建立多个唯一索引。
第 12章 数据表的索引和排序
4,普通索引普通索引也可以决定记录的处理顺序,它不仅允许字段中出现重复值,并且索引项中也允许出现重复值。在一个表中可以建立多个普通索引。
第 12章 数据表的索引和排序
12.2 建立索引
12.2.1 使用表设计器建立索引
1,单项索引使用表设计器建立索引的步骤如下:
1) 单击,文件,菜单中的,打开,命令,选定要打开的表 。
2) 从“显示”菜单中选择“表设计器”命令,
表的结构将显示在“表设计器”中。
第 12章 数据表的索引和排序
3) 在“表设计器”中有“字段”、“索引”和
“表”三个选项卡,在“字段”选项卡中定义字段时,就可以直接指定某些字段是否是索引项,用鼠标单击定义索引的下拉列表框可以看到有三个选项:
无、升序和降序。
第 12章 数据表的索引和排序
4) 如果要将索引定义为其他类型的索引,则需选择,索引,选项卡 。 在,索引名,框中,键入索引名 。 从,类型,列表中,选定索引类型 。 可以选择四种索引类型之一:主索引,候选索引,普通索引,唯一索引 。
5) 当索引设定完毕后,单击“确定”按钮,系统弹出提示框,询问“结构更改为永久性更改?”,
选择“是”按钮,回到主窗口。
第 12章 数据表的索引和排序
2,复合字段索引
1) 在,索引,选项卡中用鼠标单击,插入,按钮,这时会在界面中出现一新行 。
2) 在索引名栏目中输入索引名,从索引类型下拉列表框中选择索引类型 。
3) 单击表达式右侧的灰色方块,进入,表达式生成器,
对话框,在,表达式生成器,中输入索引表达式 。
4) 若想有选择地输出记录,可在,筛选,框中输入筛选表达式,或者选择该框后面的按钮来建立表达式 。
5) 最后单击“确定”按钮。
第 12章 数据表的索引和排序
12.2.2 用命令建立索引建立索引可以使用 INDEX命令,其语法格式为:
INDEX ON〈 索引表达式 〉 TAG〈 索引名 〉
例如,可以使用以下命令为数据表 St创建普通索引:
USE St
INDEX ON 学号 TAG xh
INDEX ON 姓名 TAG xm
第 12章 数据表的索引和排序
12.2.3 用索引对记录排序建好表的索引后,便可以用它来为记录排序 。 若要用索引对记录排序:
1) 从,文件,菜单中选择,打开,命令,选择已建好索引的表 。
2) 单击,显示,菜单中的,浏览,命令,打开数据表 。
3) 单击,表,菜单中的,属性,命令,打开,工作区属性,对话框 。
4) 在,工作区属性,对话框中,选择要用的索引 。
5) 单击“确定”。
第 12章 数据表的索引和排序
12.2.4 复合索引中索引表达式的使用
1,对多个,数值型,字段建立复合索引如果用多个,数值型,字段建立一个索引表达式,
索引将按照字段的和,而不是字段本身对记录进行排序 。
若要用多个字段对记录排序:打开要添加索引的表,
在“表设计器”的“索引”选项卡中,输入索引名和索引类型。在“表达式”框中输入表达式,其中列出要作为排序依据的字段。
第 12章 数据表的索引和排序
2,对不同数据类型的字段建立复合索引如果想用不同数据类型的字段作索引时,可以在非
,字符型,字段前加上数据类型转换函数 ( 如 STR( )表示将数值型转换成字符型数据,DTOC( )表示将日期型转换成字符型数据 ),将它转换成,字符型,字段 。
例如,如果要按照学号,姓名,出生时间,入学成绩的顺序对记录进行排序,可以用 + 号建立,字符型,字段的索引表达式:
学号 + 姓名 + DTOC(出生时间 ) + STR(入学成绩,6,1)
第 12章 数据表的索引和排序
12.2.5 筛选记录筛选记录的方法为:
(1) 打开要添加索引的表,在,表设计器,的,索引,选项卡中,创建或选择一个索引 。
(2) 在,筛选,框中,输入一个筛选表达式,例如,
建立一个年龄在 19岁以上记录的筛选表达式:
YEAR(DATE()) – YEAR(出生日期 ) >= 19
(3) 最后,选择“确定”。
第 12章 数据表的索引和排序
12.3 使用索引根据所建索引类型的不同,可以完成不同的任务:
(1) 使用普通索引,候选索引或主索引,可以进行记录排序,以便提高显示,查询或打印的速度 。
(2) 对数据库表使用主索引或候选索引,对自由表使用候选索引,可以在字段中控制重复值的输入并对记录排序。
第 12章 数据表的索引和排序
12.3.1 对记录进行排序
1,使用表设计器
(1) 打开要添加索引的表 。
(2) 在,表设计器,的,索引,选项卡中,输入索引名和索引类型 。
(3) 在,表达式,一栏中,键入作为排序依据的字段名 。 或者,键入一个作为排序依据的表达式,或通过选择该方框后面的按钮,用,表达式生成器,建立一个表达式 。
第 12章 数据表的索引和排序
(4) 若要以降序显示记录,可选择索引名左侧的箭头按钮。按钮上的箭头方向向上时按升序排序;向下时则按降序排序。
(5) 选择“确定”。
第 12章 数据表的索引和排序
2,使用命令在运行时,可以使用 SET ORDER命令改变表单中记录的顺序 。 其格式为:
SET ORDER TO〈 索引名 〉
第 12章 数据表的索引和排序
12.3.2 查找记录
1,字符查找命令 (FIND)
查找关键字与所给字符串相匹配的第一个记录 。 若找到,指针指向该记录;否则指向文件尾,给出信息
,没找到,。 语法格式为:
FIND〈 字符串 〉 |〈 数值 〉
第 12章 数据表的索引和排序说明:
(1) FIND只能查找字符串或常数,而且表必须按相应字段索引 。
(2) 查找的字符串无需加引号,若按字符型内存变量查找,必须使用宏代换 &函数 。
(3) 本命令只能找出符合条件的第一个记录,若要继续查找其它符合条件的记录,可使用 SKIP命令 。
(4) 使用本命令时,若是找到了符合条件的首记录,
则置函数 FOUND( )的值为,T.;否则置函数 FOUND( )的值为,F.。
第 12章 数据表的索引和排序
2,表达式查找命令 (SEEK)
查找关键字与所给字符串相匹配的第一个记录 。 若找到,指针指向该记录;否则指向文件尾,给出信息
,没找到,。 语法格式为:
SEEK〈 表达式 〉
第 12章 数据表的索引和排序说明:
(1) 只能找出符合条件的第一条记录 。
(2) 本命令可查找字符,数值,日期和逻辑型索引关键字 。
(3) 若 〈 表达式 〉 为字符串,则须用界限符括起来
( ‘ ’,,",[ ]) ;若按字符型内存变量查找,不必使用宏代换 &函数 。
(4) 使用本命令时,若是找到了符合条件的首记录,
则函数 FOUND( )的值为,T.;否则其值为,F.。
第 12章 数据表的索引和排序
3,顺序查询命令 (LOCATE)
查找当前数据表中满足条件的第一条记录 。 语法格式为:
LOCATE [〈 范围 〉 ] [FOR〈 条件 〉 ]
说明:
(1)〈 范围 〉 项缺省时,系统默认为 ALL。
(2) 若找到满足条件的首记录,则指针指向该记录,否则指向范围尾或文件尾 。
(3) 若缺省所有可选项,则记录指针指向 1号记录 。
(4) 若想继续找,可以利用下面的继续查找命令
( CONTINUE)。
第 12章 数据表的索引和排序
4,继续查找命令 (CONTINUE)
使最后一次 LOCATE命令继续往下搜索,指针指向满足条件的下一条记录 。 命令格式为:
CONTINUE
说明:
(1) 使用本命令前,必须使用过 LOCTAE命令 。
(2) 此命令可反复使用,直到超出 〈 范围 〉 或文件尾。
第 12章 数据表的索引和排序
12.3.3 控制重复输入
(1) 在浏览窗口中打开数据表 st。
(2) 打开,表设计器,,在,索引,选项卡中将学号选取为主索引,并返回到浏览窗口 。
(3) 单击,显示,菜单中的,追加方式,,光标跳到最后一行,输入学号数据与上一行相同,按下向下方向键,这时将显示错误信息,表示学号索引关键字的字段中,有数据违反唯一性规则 。
(4) 单击“确定”按钮回到该记录作修改,如果单击
“还原”按钮会还原记录的内容。