《操作查询和SQL特定查询课件》由会员分享,可在线阅读,更多相关《操作查询和SQL特定查询课件(44页珍藏版)》请在金锄头文库上搜索。
1、数据库应用基础数据库应用基础第第10章章操作查询和操作查询和SQL特定查询特定查询操作查询和SQL特定查询第第10章章操作查询和操作查询和SQL特定查询特定查询操作查询和SQL特定查询10.1操作查询操作查询操作查询也叫动作查询,其作用是针对表中的操作查询也叫动作查询,其作用是针对表中的一条记录或多条记录和数据项进行操作处理。一条记录或多条记录和数据项进行操作处理。在标准在标准SQL语言中的操作查询包括:追加、更语言中的操作查询包括:追加、更新、删除等三种。新、删除等三种。在在Access中的操作查询,除前三种外还包括生中的操作查询,除前三种外还包括生成表查询。成表查询。操作查询和SQL特定查
2、询10.1.1生成表查询生成表查询生成表查询对查询结果的处理方式与选择查询生成表查询对查询结果的处理方式与选择查询不同,它将创建一个指定名称的新表,并把检不同,它将创建一个指定名称的新表,并把检索出的结果数据存放在该表中。索出的结果数据存放在该表中。该表的结构由该表的结构由SELECT后的字段列表所决定,表后的字段列表所决定,表中的记录就是查询结果集中的那些数据行。中的记录就是查询结果集中的那些数据行。操作查询和SQL特定查询10.1.1生成表查询生成表查询按班级编号统计各班学生人数,并生成表按班级编号统计各班学生人数,并生成表AAA:SELECT班级编号班级编号,Count(*)AS班级人数
3、班级人数INTOAAAFROM学生学生GROUPBY班级编号班级编号本例将生成一个名为本例将生成一个名为AAA的新表,其中包含班级编号的新表,其中包含班级编号和班级人数两个字段。和班级人数两个字段。操作查询和SQL特定查询10.1.2追加查询追加查询追加查询由追加查询由INSERT语句实现,可将一个或多个语句实现,可将一个或多个新记录添加到表中。新记录添加到表中。INSERT语句的基本格式分为单记录追加和多记语句的基本格式分为单记录追加和多记录追加两种录追加两种。操作查询和SQL特定查询单记录追加查询单记录追加查询如需将一组已知数据追加到某个表中形成一条如需将一组已知数据追加到某个表中形成一条
4、新记录,使用单记录追加查询。其语法格式为:新记录,使用单记录追加查询。其语法格式为:INSERTINTO(字段字段1,字段,字段2,.)VALUES(值值1,值,值2,.)在按照格式书写实际语句时,格式中直接出现的单在按照格式书写实际语句时,格式中直接出现的单词是必写的;由一对尖括号括起的项目要求由用户词是必写的;由一对尖括号括起的项目要求由用户填写;方括号中的项目是可选的;省略号表示该处填写;方括号中的项目是可选的;省略号表示该处可以出现更多相应内容;其他符号表示应该按要求可以出现更多相应内容;其他符号表示应该按要求填写对应的内容。填写对应的内容。操作查询和SQL特定查询单记录追加查询单记录
5、追加查询例例2.将编号为将编号为“”、姓名为、姓名为“孙琳孙琳”的教师数据的教师数据添加到添加到“教师教师”表中。表中。INSERTINTO教师教师(教师编号教师编号,姓名姓名)VALUES(“21010504”,“孙琳孙琳”)在表名后的括号中列举的是将接受数据的字段名,在表名后的括号中列举的是将接受数据的字段名,这些字段名不要加引号。这些字段名不要加引号。在在VALUES后的括号中列举的是一组具体值,这些值后的括号中列举的是一组具体值,这些值将依次存入字段列表中对应的各字段。这组值的个将依次存入字段列表中对应的各字段。这组值的个数应与指定的字段名个数一致,且类型一致。数应与指定的字段名个数一
6、致,且类型一致。在在VALUES子句中列出的值如果是文本类型数据应该子句中列出的值如果是文本类型数据应该用双引号(用双引号(“)括起;如果是日期)括起;如果是日期/时间类型数据应用时间类型数据应用井号(井号(#)括起。)括起。操作查询和SQL特定查询多记录追加查询多记录追加查询如果希望将查询的结果追加到某个表中形成一条如果希望将查询的结果追加到某个表中形成一条或多条新记录时,使用多记录追加查询。其语法或多条新记录时,使用多记录追加查询。其语法格式为:格式为:INSERTINTO(字段字段1,字段,字段2,.)SELECT源表名源表名.字段字段1,字段,字段2,.FROM与单记录追加查询语句格式
7、不同的是,在本语句格式与单记录追加查询语句格式不同的是,在本语句格式中中VALUES部分被一个选择查询所取代。我们知道,选部分被一个选择查询所取代。我们知道,选择查询的结果集是由若干行(记录)列(字段)数据择查询的结果集是由若干行(记录)列(字段)数据所组成的,如果把这些数据添加到指定表中,结果集所组成的,如果把这些数据添加到指定表中,结果集中的行将成为表中的记录,各列数据也将被填入表中中的行将成为表中的记录,各列数据也将被填入表中相应的字段。相应的字段。操作查询和SQL特定查询多记录追加查询多记录追加查询例例3.从学生表中查询出从学生表中查询出08级学生数据,并将这级学生数据,并将这些数据添
8、加到些数据添加到“08级学生级学生”表中。表中。INSERTINTO08级学生级学生(学号学号,姓名姓名,性别性别)SELECT学号学号,姓名姓名,性别性别FROM学生学生WHERE学号学号LIKE“2008*”本例使用了一个作为子查询的选择查询,该子查询本例使用了一个作为子查询的选择查询,该子查询从从“学生学生”表中检索出数千行表中检索出数千行08级学生数据,并将级学生数据,并将这些数据添加到这些数据添加到“08级学生级学生”表中。表中。应该注意的是,在被添加的目标表名之后给出了字应该注意的是,在被添加的目标表名之后给出了字段列表时,子查询段列表时,子查询SELECT后的字段列表也应该与之对
9、后的字段列表也应该与之对应,字段的名称可以不相同,各字段值按出现的顺应,字段的名称可以不相同,各字段值按出现的顺序添加到目标表中。序添加到目标表中。操作查询和SQL特定查询多记录追加查询多记录追加查询INSERTINTO08级学生级学生SELECT姓名姓名,性别性别,学号学号FROM学生学生WHERE学号学号LIKE“2008*”如果如果未指出将数据写入未指出将数据写入“08级学生级学生”表中的哪些字表中的哪些字段,系统就会自动进行字段匹配处理,按照段,系统就会自动进行字段匹配处理,按照SELECT后后的字段列表中出现的字段名称,依次检查的字段列表中出现的字段名称,依次检查“08级学级学生生”
10、表中是否有同名字段,如果发现表中是否有同名字段,如果发现“08级学生级学生”表中不存在某个字段,则不能执行本次追加查询。表中不存在某个字段,则不能执行本次追加查询。如果如果SELECT后的字段列表中的每个字段都可以在目标后的字段列表中的每个字段都可以在目标表中找到相应字段,就可以执行追加查询,并按字表中找到相应字段,就可以执行追加查询,并按字段名相同的匹配方式,将子查询的结果数据记录添段名相同的匹配方式,将子查询的结果数据记录添加到目标表中。加到目标表中。操作查询和SQL特定查询更新查询更新查询使用更新查询可以更改一条或多条现有记录中使用更新查询可以更改一条或多条现有记录中的数据。更新查询语句
11、的基本格式如下:的数据。更新查询语句的基本格式如下:UPDATESETWHERE在此格式中,在此格式中,为需要更新数据的表;为需要更新数据的表;为一组描述如何更新数据的表达式;为一组描述如何更新数据的表达式;用于筛选将被更新数据的记录。用于筛选将被更新数据的记录。操作查询和SQL特定查询更新查询更新查询例例4.将学号为将学号为“200711043”的学生的出生日期的学生的出生日期改为改为1990年年7月月15日,并将其民族改为日,并将其民族改为“满族满族”。UPDATE学生学生SET出生日期出生日期=#1990-7-15#,民族民族=满族满族WHERE学号学号=200711043本例,更新了学
12、生表中的出生日期和民族字段,当本例,更新了学生表中的出生日期和民族字段,当然被更新的只是学号为然被更新的只是学号为200711043的记录。的记录。操作查询和SQL特定查询更新查询更新查询在更新查询语句中,一次可以更新若干个字段的值,每在更新查询语句中,一次可以更新若干个字段的值,每个字段如何更新用一个赋值表达式来表示。在赋值表达个字段如何更新用一个赋值表达式来表示。在赋值表达式中等号的左面为要更新的字段的名称,等号的右面为式中等号的左面为要更新的字段的名称,等号的右面为用来更新的值或表达式。当需更新的字段多于一个时,用来更新的值或表达式。当需更新的字段多于一个时,各赋值表达式间用逗号分隔。各
13、赋值表达式间用逗号分隔。更新查询中的条件直接影响更新的范围,在描述条件时更新查询中的条件直接影响更新的范围,在描述条件时一定要小心,因为设置不当时将导致发生一些不期望的一定要小心,因为设置不当时将导致发生一些不期望的更新,而这些更新是更新,而这些更新是无法撤销无法撤销的。的。在需要更新数据前,通常应先写个选择查询来验证条件在需要更新数据前,通常应先写个选择查询来验证条件是否正确,然后将正确的条件用于更新查询。或者,先是否正确,然后将正确的条件用于更新查询。或者,先将要更新的表做个备份,以便在更新失误时做恢复之用。将要更新的表做个备份,以便在更新失误时做恢复之用。操作查询和SQL特定查询更新查询
14、更新查询例例5.在在“学生学生”表中有一个表中有一个“缓考缓考”字段,该字字段,该字段为段为“是是/否否”类型。现根据本次学生考试情况类型。现根据本次学生考试情况更新该项数据:未参加任何考试者填更新该项数据:未参加任何考试者填True(或(或-1),参加考试者填),参加考试者填False(或(或0)。)。为了保证数据正确,在进行本次更新前,需要把该为了保证数据正确,在进行本次更新前,需要把该字段原有的数据全部设置为字段原有的数据全部设置为True,然后再在判断出参,然后再在判断出参加了考试的情况下,将相应值改为加了考试的情况下,将相应值改为False。相应的两个更新语句如下:相应的两个更新语句
15、如下:UPDATE学生学生SET缓考缓考=True由于本语句没有设置条件,那么全部记录都将被更由于本语句没有设置条件,那么全部记录都将被更新。新。操作查询和SQL特定查询更新查询更新查询UPDATE学生学生SET缓考缓考=FalseWHEREEXISTS(SELECT*FROM学生考试学生考试WHERE学生考试学生考试.学号学号=学学生生.学号学号)在本句中使用了子查询,其目的是检索当前学生在在本句中使用了子查询,其目的是检索当前学生在“学生考试学生考试”表中是否有相应记录存在,如果有,表中是否有相应记录存在,如果有,就表示该学生参加了考试,于是就将其缓考字段值就表示该学生参加了考试,于是就将
16、其缓考字段值更新为更新为False。那些没有参加考试的学生的缓考字段。那些没有参加考试的学生的缓考字段值没有被更新,仍然是值没有被更新,仍然是True。操作查询和SQL特定查询更新查询更新查询例例6.统计并更新各班学生人数。统计并更新各班学生人数。当当“学生学生”表中学生记录出现增减时,将引起学生表中学生记录出现增减时,将引起学生人数的变动。现在的要求是更新人数的变动。现在的要求是更新“班级班级”表中各班表中各班级相应的人数。级相应的人数。Access支持使用另一个表支持使用另一个表/查询中的数据来更新当前查询中的数据来更新当前表的操作。因此,可以先按表的操作。因此,可以先按“班级班级”对学生
17、人数进对学生人数进行分组计数,生成一个临时表。然后,用该临时表行分组计数,生成一个临时表。然后,用该临时表来更新班级表。来更新班级表。操作查询和SQL特定查询更新查询更新查询相应的两个语句如下:相应的两个语句如下:SELECT班级编号班级编号,Count(*)AS班级人数班级人数INTOAAAFROM学生学生GROUPBY班级编号班级编号本例的新表名为本例的新表名为AAA,其中包含班级编号和班级人数两个字段。,其中包含班级编号和班级人数两个字段。UPDATE班级班级,AAASET班级班级.班级人数班级人数=AAA.班级人数班级人数WHERE班级班级.班级编号班级编号=AAA.班级编号班级编号在
18、本句中两个相关表的名称都放在在本句中两个相关表的名称都放在UPDATE后,在后,在SET部分指出部分指出用用AAA.班级人数来更新班级班级人数来更新班级.班级人数,并且更新是在两个表中班级人数,并且更新是在两个表中具有相同班级编号值的记录间进行的。具有相同班级编号值的记录间进行的。操作查询和SQL特定查询删除查询删除查询删除查询使用删除查询使用DELETE语句,该语句用于从语句,该语句用于从FROM子句中所列出的一个或多个表中删除满子句中所列出的一个或多个表中删除满足指定条件的记录行。其一般格式为:足指定条件的记录行。其一般格式为:DELETEFROMWHERE删除查询将删除整个记录,并且执行
19、删除后,不能删除查询将删除整个记录,并且执行删除后,不能取消该操作。如果希望知道将要删除哪些记录,可取消该操作。如果希望知道将要删除哪些记录,可以先检查使用相同条件的以先检查使用相同条件的选择查询选择查询的结果,然后再的结果,然后再执行删除查询。执行删除查询。操作查询和SQL特定查询删除查询删除查询例例7.从学生表中删除学号为从学生表中删除学号为“200715006”的学的学生记录。生记录。DELETEFROM学生学生WHERE学号学号=200715006在执行时,系统将提示有多少记录将被删除,确认在执行时,系统将提示有多少记录将被删除,确认后完成删除操作。千万注意,如果不使用后完成删除操作。
20、千万注意,如果不使用WHERE子子句,或者句,或者WHERE中的条件总是成立,就会把表中全中的条件总是成立,就会把表中全部记录删除掉。部记录删除掉。操作查询和SQL特定查询删除查询删除查询例例8.从从“场次场次”表中删除那些没有安排考试的场表中删除那些没有安排考试的场次。次。有时为了操作方便,先预设了若干场次,以备安排有时为了操作方便,先预设了若干场次,以备安排考试时选用。在完成实际考试安排后,有部分场次考试时选用。在完成实际考试安排后,有部分场次并没有被选用,想删去,此时,应该根据并没有被选用,想删去,此时,应该根据“学生考学生考试试”安排的具体数据确定确实没有安排该场次考试安排的具体数据确
21、定确实没有安排该场次考试时,才能从时,才能从“场次场次”表中删除。表中删除。DELETEFROM场次场次WHERENOTEXISTS(SELECT*FROM学生考试学生考试WHERE场次场次=场次场次.场次场次)本例使用子查询来判断是否有学生在那个场次考试,本例使用子查询来判断是否有学生在那个场次考试,如果没有就把该场次删除。如果没有就把该场次删除。操作查询和SQL特定查询10.2SQL特定查询特定查询联合查询可合并两个或多个表中的数据,但具体方联合查询可合并两个或多个表中的数据,但具体方式与其他查询不同。大多数查询通过联接行来合并式与其他查询不同。大多数查询通过联接行来合并数据,而联合查询通
22、过追加行来合并数据。数据,而联合查询通过追加行来合并数据。传递查询不是由传递查询不是由Access附带的数据库引擎处理的,附带的数据库引擎处理的,它们被直接传递到远程数据库服务器并由该服务器它们被直接传递到远程数据库服务器并由该服务器执行处理,然后将结果传递回执行处理,然后将结果传递回Access。数据定义查询是一种特殊类型的查询,它不处理数数据定义查询是一种特殊类型的查询,它不处理数据,而是创建、删除或修改其他据,而是创建、删除或修改其他数据库对象数据库对象。子查询子查询。在查询的设计视图中,无法进行在查询的设计视图中,无法进行SQL特定查询设计,只特定查询设计,只能在能在SQL视图中打开或
23、运行它们。视图中打开或运行它们。在在Access中还提供了交叉表查询中还提供了交叉表查询。操作查询和SQL特定查询10.2.1联合查询联合查询联合查询与联接查询在构成结果集时所采用的联合查询与联接查询在构成结果集时所采用的方式完全不同。方式完全不同。联接查询从多个表或查询中获取并合并数据列,联接查询从多个表或查询中获取并合并数据列,生成查询结果集。生成查询结果集。联合查询则将合并两个或更多独立查询或表的联合查询则将合并两个或更多独立查询或表的结果,这时的合并是按行进行的。结果,这时的合并是按行进行的。图图10.1 10.1 联接查询示意图联接查询示意图图图10.2 10.2 联合查询示意图联合
24、查询示意图操作查询和SQL特定查询联合查询联合查询联合查询的语法:联合查询的语法:TABLEquery1UNIONALLTABLEquery2UNIONALLTABLEqueryn.其中其中query1-n表示表示SELECT语句,或者查询的名称,或语句,或者查询的名称,或前面有前面有TABLE关键字的表的名称。关键字的表的名称。可以在一个可以在一个UNION操作中以任意组合合并两个或更操作中以任意组合合并两个或更多查询、表和多查询、表和SELECT语句的结果。默认情况下,使语句的结果。默认情况下,使用用UNION操作时不会返回重复的记录;但可以包括操作时不会返回重复的记录;但可以包括ALL谓
25、词以确保返回所有记录。谓词以确保返回所有记录。操作查询和SQL特定查询联合查询联合查询例例9.假设已毕业学生的信息是保存在结构与假设已毕业学生的信息是保存在结构与“学学生生”表相同的表相同的“毕业学生毕业学生”表中,现需查询出商表中,现需查询出商务学院历年来自湖南的学生名单。务学院历年来自湖南的学生名单。SELECT学生学生.学号学号,学生学生.姓名姓名FROM学生学生WHERE地区地区=湖南湖南UNIONSELECT学号学号,姓名姓名FROM毕业学生毕业学生WHERE地区地区=湖南湖南ORDERBY学生学生.学号学号本例使用本例使用UNION将两个类似的查询结果联合在一起。将两个类似的查询结
26、果联合在一起。使用这些查询时,应注意所有的查询必须具有相同数使用这些查询时,应注意所有的查询必须具有相同数目的字段,但这些字段的大小或数据类型不必相同。目的字段,但这些字段的大小或数据类型不必相同。操作查询和SQL特定查询联合查询联合查询仅在第一个仅在第一个SELECT语句中使用别名,因为别名在任何语句中使用别名,因为别名在任何其他语句中将被忽略。其他语句中将被忽略。可以在最后一个可以在最后一个query参数的末尾使用参数的末尾使用ORDERBY子句子句以指定的顺序显示返回的数据。在以指定的顺序显示返回的数据。在ORDERBY子句中,子句中,指的是在第一个指的是在第一个SELECT语句中调用别
27、名所依据的字段。语句中调用别名所依据的字段。操作查询和SQL特定查询10.2.2数据定义查询数据定义查询数据定义查询是一种特殊类型的查询,它不处理数据定义查询是一种特殊类型的查询,它不处理数据,而是创建、删除或修改其他数据,而是创建、删除或修改其他数据库对象数据库对象。下面主要介绍其中的:下面主要介绍其中的:CREATETABLEALTERTABLEDROPTABLECREATEINDEXDROPINDEX操作查询和SQL特定查询创建新表创建新表CREATETABLE语句用以创建新表。语句用以创建新表。在在Access中,每个表最少应该有中,每个表最少应该有1个字段,最多个字段,最多可以有可以
28、有1024个字段。个字段。在在CREATETABLE语句中,应该对每个字段按语句中,应该对每个字段按一定的要求分别进行定义,各字段定义间用逗号一定的要求分别进行定义,各字段定义间用逗号分隔。分隔。操作查询和SQL特定查询创建新表创建新表定义字段的主要成分:定义字段的主要成分:字段名,要在新表中创建的字段的名称。字段名,要在新表中创建的字段的名称。数据类型,字段所具有的数据类型。数据类型,字段所具有的数据类型。在在CREATETABLE语句中常用的数据类型如下:语句中常用的数据类型如下:Char文本类型,用于保存字符;文本类型,用于保存字符;Integer整型;整型;Single单精度实数;单精
29、度实数;Double双精度实数;双精度实数;Money货币型;货币型;Datetime日期日期/时间型;时间型;Bit是是/否否(逻辑逻辑)型;型;OleObjecOLE对象。对象。操作查询和SQL特定查询创建新表创建新表定义字段的主要成分:定义字段的主要成分:字段大小,以字符为单位的字段大小。主要用于文本字段大小,以字符为单位的字段大小。主要用于文本字段,因为其它类型字段的大小基本上是固定的。字段,因为其它类型字段的大小基本上是固定的。NULL/NOTNULL,可选项目,定义相应字段是否允许,可选项目,定义相应字段是否允许为空值。为空值。PRIMARYKEY,可选项目,定义相应字段是否为主键
30、。,可选项目,定义相应字段是否为主键。操作查询和SQL特定查询创建新表创建新表 例例例例10.10.创建创建创建创建“ “教师情况教师情况教师情况教师情况” ”表,其中包括:教师编号、姓名、表,其中包括:教师编号、姓名、表,其中包括:教师编号、姓名、表,其中包括:教师编号、姓名、性别、出生日期、婚否、学院编号、职称、职务、政治性别、出生日期、婚否、学院编号、职称、职务、政治性别、出生日期、婚否、学院编号、职称、职务、政治性别、出生日期、婚否、学院编号、职称、职务、政治面貌、账号、基本工资、岗位津贴等字段。相应语句如面貌、账号、基本工资、岗位津贴等字段。相应语句如面貌、账号、基本工资、岗位津贴等
31、字段。相应语句如面貌、账号、基本工资、岗位津贴等字段。相应语句如下:下:下:下:CREATETABLE教师情况(教师情况(教师编号教师编号CHAR(8)PRIMARYKEY,姓名姓名CHAR(10)NOTNULL,性别性别CHAR(1)NOTNULL,出生日期出生日期DATETIME,婚否婚否Bit,学院编号学院编号CHAR(2),职称职称CHAR(10),职务职务CHAR(2),政治面貌政治面貌CHAR(10),账号账号CHAR(16)NOTNULL,基本工资基本工资MONEY,岗位津贴岗位津贴MONEY)操作查询和SQL特定查询修改表的结构修改表的结构ALTERTABLE语句针对指定的表可
32、以进行多种与字段相语句针对指定的表可以进行多种与字段相关的操作,各种操作通过可选子句来指定,这些子句如:关的操作,各种操作通过可选子句来指定,这些子句如:ADDCOLUMN向表中增加一个新字段向表中增加一个新字段ALTERCOLUMN修改指定字段的类型及大小修改指定字段的类型及大小DROPCOLUMN从表中删除一个字段从表中删除一个字段ADDCONSTRAINT可添加一个多字段索引可添加一个多字段索引DROPCONSTRAINT可删除多字段索引可删除多字段索引在使用在使用ALTERTABLE语句时,应注意一次只能涉及一个字段或索语句时,应注意一次只能涉及一个字段或索引,不能一次添加或删除多个字
33、段或索引。引,不能一次添加或删除多个字段或索引。操作查询和SQL特定查询修改表的结构修改表的结构例例11.在在“教师情况教师情况”表中增加一个表中增加一个“相片相片”字段,该字字段,该字段类型为段类型为OLE对象,可以用来保存图像。相应的对象,可以用来保存图像。相应的SQL语语句如下:句如下:ALTERTABLE教师情况教师情况ADDCOLUMN相片相片OleObjec在在ALTERTABLE语句使用语句使用ADDCOLUMN子句增加新字段时,对新字子句增加新字段时,对新字段的定义要求与段的定义要求与CREATETABLE语句相同。语句相同。例例12.将将“教师情况教师情况”表中的职务字段的大
34、小改为表中的职务字段的大小改为10。相。相应的应的SQL语句如下:语句如下:ALTERTABLE教师情况教师情况ALTERCOLUMN职务职务CHAR(10)注意,当使用注意,当使用ALTERTABLE修改字段类型或大小时,可能出现由修改字段类型或大小时,可能出现由于类型转换而产生的原有数据的变化,或者由于大小变化丢失部于类型转换而产生的原有数据的变化,或者由于大小变化丢失部分数据的问题。分数据的问题。操作查询和SQL特定查询修改表的结构修改表的结构例例13.删除删除“教师情况教师情况”表中的岗位津贴字段。相应的表中的岗位津贴字段。相应的SQL语句如下:语句如下:ALTERTABLE教师情况教
35、师情况DROPCOLUMN岗位津贴岗位津贴删除一个字段前应该确定该字段中的数据确实不需要了,因为删删除一个字段前应该确定该字段中的数据确实不需要了,因为删除字段的操作将使该字段连同相应的数据都被删除掉,并且是不除字段的操作将使该字段连同相应的数据都被删除掉,并且是不可恢复的。可恢复的。操作查询和SQL特定查询创建索引创建索引建立索引是加快查询速度的有效手段,用户可以建立索引是加快查询速度的有效手段,用户可以根据应用的需要,在基本表上建立一个或多个索根据应用的需要,在基本表上建立一个或多个索引,以加快对表中数据的查找速度。引,以加快对表中数据的查找速度。索引可以在创建新表时在索引可以在创建新表时
36、在CREATETABLE语句语句中建立,也可以利用中建立,也可以利用CREATEINDEX语句来建语句来建立。立。操作查询和SQL特定查询创建索引创建索引CREATEINDEX语句的完整格式为:语句的完整格式为:CREATEUNIQUEINDEX索引的名称索引的名称ON表的名称表的名称(字段名字段名1ASC|DESC,字段名,字段名2ASC|DESC,.)语句中的语句中的UNIQUE属于可选项,如果在属于可选项,如果在INDEX这个词之前加上保这个词之前加上保留字留字“UNIQUE”,表示创建的是唯一性索引,即此索引的每一个,表示创建的是唯一性索引,即此索引的每一个索引值只对应唯一的数据记录。
37、索引值只对应唯一的数据记录。ASC|DESC也是可选项,也是可选项,ASC表示升序,表示升序,DESC表示降序,当表示降序,当ASC或或DESC在某字段名后出现时,表示对该字段按升序或降序创建在某字段名后出现时,表示对该字段按升序或降序创建索引。如果不指明索引。如果不指明ASC或或DESC,则表示默认为,则表示默认为ASC。如果需要按多个字段建立索引,可以在字段列表中给出多个字段如果需要按多个字段建立索引,可以在字段列表中给出多个字段名,以及排序规则。名,以及排序规则。操作查询和SQL特定查询创建索引创建索引例例14.为为“教师情况教师情况”表按表按“账号账号”建索引,索引名称为建索引,索引名
38、称为“教师账号教师账号”。CREATEINDEX教师账号教师账号ON教师情况教师情况(账号账号)本例语句执行后,打开本例语句执行后,打开“教师情况教师情况”表,选择打开表,选择打开“索引索引”对话对话框。在该对话框中,可以看到基于该表所建的两个索引,一个是框。在该对话框中,可以看到基于该表所建的两个索引,一个是按按“教师编号教师编号”建立的主索引,另一个就是新建的名为建立的主索引,另一个就是新建的名为“教师账教师账号号”的索引。的索引。操作查询和SQL特定查询创建索引创建索引例例15.为为“学生考试学生考试”表按学号(升序)和课程表按学号(升序)和课程编号(降序)建名为编号(降序)建名为“学号
39、课程学号课程”的索引。的索引。CREATEINDEX学号课程学号课程ON学生考试(学号学生考试(学号,课程编号课程编号DESC)操作查询和SQL特定查询删除表或索引删除表或索引当数据库中的某个成员不再需要时,可以使用当数据库中的某个成员不再需要时,可以使用DROP命令把它删除掉,这种删除是将被删除对命令把它删除掉,这种删除是将被删除对象整体地从数据库中去掉,无论它的内容是什象整体地从数据库中去掉,无论它的内容是什么或包含什么数据,并且,么或包含什么数据,并且,这种删除是不可恢这种删除是不可恢复的复的。操作查询和SQL特定查询删除表或索引删除表或索引例例16.删除表删除表AAADROPTABLE
40、AAA删除表的语句为:删除表的语句为:DROPTABLE,在该语句中可以给,在该语句中可以给出一个表名,或用逗号分隔的多个表名,执行的效出一个表名,或用逗号分隔的多个表名,执行的效果是删除指出了名称的那些表。本例将删除名为果是删除指出了名称的那些表。本例将删除名为AAA的表。的表。例例17.从从“教师情况教师情况”表中删除名称为表中删除名称为“教师账教师账号号”的索引。的索引。DROPINDEX教师账号教师账号ON教师情况教师情况删除某个表中的索引,可以使用删除某个表中的索引,可以使用DROPINDEX语句,语句,在语句中应指出将删除的索引名,以及包含该索引在语句中应指出将删除的索引名,以及包
41、含该索引的表名。的表名。操作查询和SQL特定查询交叉表查询交叉表查询Access的新建查询向导中提供了交叉表查询向的新建查询向导中提供了交叉表查询向导。导。例例18.利用交叉表反映各地区男、女同学的人数。利用交叉表反映各地区男、女同学的人数。创建步骤如下:创建步骤如下:打开打开“交叉表查询向导交叉表查询向导”,选择将从中获取汇总数,选择将从中获取汇总数据的学生表;据的学生表;在字段列表中选择在字段列表中选择“地区地区”作为行标题;作为行标题;操作查询和SQL特定查询交叉表查询交叉表查询选择选择“性别性别”作为列标题;作为列标题;选择在交叉点出现的数据:对选择在交叉点出现的数据:对“学号学号”进
42、行计数进行计数;操作查询和SQL特定查询交叉表查询交叉表查询给本查询指定名称,然后,单击给本查询指定名称,然后,单击“完成完成”。生成生成基于基于“学生学生”表的交叉表查询结果。表的交叉表查询结果。操作查询和SQL特定查询交叉表查询交叉表查询相应的相应的SQL语句:语句:TRANSFORMCount(学生学生.学号学号)AS学号之计算学号之计算SELECT学生学生.地区地区,Count(学生学生.学号学号)AS总计总计学号学号FROM学生学生GROUPBY学生学生.地区地区PIVOT学生学生.性别性别TRANSFORM部分为对所选数据进行操作的部分为对所选数据进行操作的SQL聚合聚合函数;函数;SELECT部分为用来在查询的结果集中创建行标题和部分为用来在查询的结果集中创建行标题和总计列的分组查询;总计列的分组查询;PIVOT部分后为要用来在查询的结果集中创建列标题部分后为要用来在查询的结果集中创建列标题的字段或表达式的字段或表达式。操作查询和SQL特定查询