资源描述
第3章查询,本章学习要点,查询的功能 创建选择查询的各种方法 查询【设计视图】的用法 查询向导的用法 条件查询的建立 参数查询、交叉表查询的创建 操作查询的创建 SQL查询的创建 解除Access对查询的阻止,3.1 查询的功能,查询就是以数据库表中的数据为数据源,根据给定的条件从指定的表或查询中检索出用户要求的数据,形成一个新的数据集合。查询的结果可以随着数据表中的数据变化而变化。 查询还具备以下几项功能。 作为创建窗体报表的数据源。 用来生成新的数据表。 筛选和排序只能对一个数据表进行操作,而利用查询可以对几个数据表一起操作。 批量地向数据表中添加、删除或修改数据。,3.1 查询的功能,查询的六大家族为: 选择查询 生成表查询 追加查询 更新查询 交叉表查询 删除查询,3.2 创 建 查 询,简单选择查询 交叉表查询 查找重复项查询 查找不匹配项查询 用设计视图创建查询 查询及字段的属性设置 设置查询条件,3.2.1 简单选择查询,利用选择查询,可以实现如下事情。 对一个或多个数据表进行检索查询。 生成新的查询字段并保存结果。 对记录进行总计、计数、平均值以及其他类型的数据计算。,3.2.1 简单选择查询,在“查询示例.accdb”数据库中,以“采购订单”表和“采购订单明细”表作为数据源,建立“采购信息”查询。,第一步:启动Access 2007,打开“查询示例.accdb”数据库。单击【创建】选项卡下【其他】组中的【查询向导】按钮,弹出【新建查询】对话框,如下图所示。,第二步:在对话框中选择【简单查询向导】选项,单击【确定】按钮,弹出【简单查询向导】对话框,如下图所示。,选择相应字段,添加到列表框中。,3.2.1 简单选择查询,在“查询示例.accdb”数据库中,以“采购订单”表和“采购订单明细”表作为数据源,建立“采购信息”查询。,第三步:单击【表/查询】下拉列表框,选择要建立查询的数据源,在本例中我们选择“采购订单”表,然后分别选择“采购订单ID”、“供应商ID”、“付款额”和“运费”字段,单击【添加】按钮,将选中的字段添加到右边的【选定字段】列表框中。,第四步:单击【表/查询】下拉列表框,重新选择“采购订单明细”表,然后分别选择添加“产品ID”、“数量”和“单位成本”字段到【选定字段】中,如下图所示。,第五步:单击【下一步】按钮,弹出如下图所示的对话框。在对话框中选择是采用明细查询还是建立【汇总查询】。 本例中我们选择采用明细查询,如下图所示。,3.2.1 简单选择查询,在“查询示例.accdb”数据库中,以“采购订单”表和“采购订单明细”表作为数据源,建立“采购信息”查询。,第六步:单击【下一步】按钮,弹出为查询命名的对话框,输入查询的名称为“采购订单数额查询”。选中【打开查询查看信息】单选按钮,最后单击【完成】按钮,如下图所示。,这样,系统就为我们建立了查询,并将查询结果以数据表的形式显示,如下图所示。,3.2.2 交叉表查询,交叉表查询主要用于显示某一个字段数据的统计值,比如求和、计数、求平均值等。它将数据分组放在查询表中,一组列在数据表的左侧,一组列在数据表的上部。这样可以让用户更容易地看出数据的规律和趋势,更加方便地分析数据。 关于交叉表的各种操作步骤,我们将在3.3节中作详细介绍。,3.2.3 查找重复项查询,查找“采购订单”表中各个供货商的供货信息。,第一步:打开“查询示例.accdb”数据库,单击【创建】选项卡下【其他】组中的【查询向导】按钮,弹出【新建查询】对话框,如下图所示。,第二步:选择【查找重复项查询向导】选项,单击【确定】按钮,弹出【查找重复项查询向导】对话框,如下图所示。,3.2.3 查找重复项查询,查找“采购订单”表中各个供货商的供货信息。,第三步:【视图】区域中提供了三种显示方式,即只显示“表”,只显示“查询”和两者都显示。我们选择“表”视图,在下拉列表框中选择“采购订单”表作为查询对象,单击【下一步】按钮,弹出提示用户选择查找目标字段的对话框,如下图所示。,第四步:在【可用字段】列表框中选择“供应商ID”作为要进行查找重复项查询的字段。单击【下一步】按钮,弹出提示用户选择其他显示字段的对话框,如下图所示。,3.2.3 查找重复项查询,查找“采购订单”表中各个供货商的供货信息。,第五步:选择“采购订单ID”、“状态ID”、“运费”和“付款额”4个字段作为要显示的其他字段,单击【下一步】按钮,弹出提示用户输入查询名的对话框,输入查询的名称为“查找 采购订单 的重复项”,如下图所示。,第六步:单击【完成】按钮,这样就建立了一个查找重复项的查询,如下图所示。用户可以很直观地查看某一个供货商如“佳佳乐”的所有的采购订单、采购数额和运费等信息。,3.2.4 查找不匹配项查询,以“采购订单”表和“采购订单明细”表中的“采购订单ID”字段为查询条件,建立查找不匹配项查询。 由于示例数据库中的所有记录都是相符合的,为了演示的方便,先打开“采购订单明细”表,删除该表中的任意一些记录,以使两者中的数据记录不完全匹配。 注意不要删除“采购订单”表中的数据,否则由于两者建立了表关系且设置了实施参照完整性,删除“采购订单”表中记录的同时也会删除“采购订单明细”表中相关的记录。,第一步:打开“查询示例.accdb”数据库,单击【创建】选项卡下【其他】组中的【查询向导】按钮,弹出【新建查询】对话框,如下图所示。,第二步:选择【查找不匹配项查询向导】选项,单击【确定】按钮,弹出【查找不匹配项查询向导】对话框,如下图所示。 本例中我们选择“采购订单”表作为查询的数据源,如下图所示。,3.2.4 查找不匹配项查询,第三步:单击【下一步】按钮,弹出选择要进行比较的表的对话框,我们选择“采购订单明细”表,如下图所示。,以“采购订单”表和“采购订单明细”表中的“采购订单ID”字段为查询条件,建立查找不匹配项查询。 由于示例数据库中的所有记录都是相符合的,为了演示的方便,先打开“采购订单明细”表,删除该表中的任意一些记录,以使两者中的数据记录不完全匹配。 注意不要删除“采购订单”表中的数据,否则由于两者建立了表关系且设置了实施参照完整性,删除“采购订单”表中记录的同时也会删除“采购订单明细”表中相关的记录。,第四步:单击【下一步】按钮,弹出选择“对比字段”的对话框。这里的两张对比表就是我们上两步选择的两张表。我们选择两张表的“采购订单ID”作为要进行对比的字段,并按下中间的【对比】符号,如下图所示。,3.2.4 查找不匹配项查询,以“采购订单”表和“采购订单明细”表中的“采购订单ID”字段为查询条件,建立查找不匹配项查询。 由于示例数据库中的所有记录都是相符合的,为了演示的方便,先打开“采购订单明细”表,删除该表中的任意一些记录,以使两者中的数据记录不完全匹配。 注意不要删除“采购订单”表中的数据,否则由于两者建立了表关系且设置了实施参照完整性,删除“采购订单”表中记录的同时也会删除“采购订单明细”表中相关的记录。,第五步:单击【下一步】按钮,弹出提示选择查询结果中要显示的相关字段的对话框,单击【全部选择】按钮,选择所有字段,如下图所示。,第六步:单击【下一步】按钮,弹出提示用户输入查询名的对话框,输入查询的名称为“采购订单与采购订单明细 不匹配”,如下图所示。,3.2.4 查找不匹配项查询,以“采购订单”表和“采购订单明细”表中的“采购订单ID”字段为查询条件,建立查找不匹配项查询。 由于示例数据库中的所有记录都是相符合的,为了演示的方便,先打开“采购订单明细”表,删除该表中的任意一些记录,以使两者中的数据记录不完全匹配。 注意不要删除“采购订单”表中的数据,否则由于两者建立了表关系且设置了实施参照完整性,删除“采购订单”表中记录的同时也会删除“采购订单明细”表中相关的记录。,第七步:单击【完成】按钮,这样就建立了一个查找不匹配项的查询,如下图所示。用户可以看到那些在“采购订单”表中存在,但是在“采购订单明细”表中不存在的记录。,3.2.5 用设计视图创建查询,查询的【设计视图】如下图所示。 查询设计网格中的各个行的含义分别如下。 字段】:用于选择要进行查询的表中的字段。 【表】:包含选定的字段的表。 【排序】:选择是按升序、降序还是不进行排序显示。 【显示】:控制该字段是否为可显示字段,当在显示行中有小对号时,该字段可以显示,否则表明进行了查询,但是不进行显示。 【条件】:设定查询条件,通过设定查询条件,进行详细的查询。关于条件的详细设置,我们在以后将作进一步介绍。 【或】:逻辑“或”,是用于查询的第二个条件。,3.2.5 用设计视图创建查询,在“查询示例.accdb”数据库中,由“采购订单”表和“采购订单明细”表,建立“采购信息”查询。,第一步:打开“查询示例.accdb”数据库,单击【创建】选项卡下【其他】组中的【查询设计】按钮,弹出【设计视图】和【显示表】对话框,如右上图所示。,第二步:选择要作为查询数据源的表。选中“采购订单”表和“采购订单明细”表作为数据源,单击【添加】按钮,将选定的表添加在查询【设计视图】的上半部分,如下图所示。,3.2.5 用设计视图创建查询,在“查询示例.accdb”数据库中,由“采购订单”表和“采购订单明细”表,建立“采购信息”查询。,第三步:双击“采购订单”表中的“采购订单ID”字段,或者直接将该字段拖动到【字段】行中,这样就在【表】行中显示了该表的名称“采购订单”,【字段】行中显示了该字段的名称“采购订单ID”,如下图所示。,第四步:和第3步的操作类似,分别将“供应商ID”、“运费”、“付款额”、“产品ID”、“数量”和“单位成本”字段加入【字段】行中,得到的【设计视图】如下图所示。,3.2.5 用设计视图创建查询,在“查询示例.accdb”数据库中,由“采购订单”表和“采购订单明细”表,建立“采购信息”查询。,第五步:单击工具栏上的【保存】按钮,这时弹出一个【另存为】对话框,输入要取的查询名称“采购信息”,如下图所示。,第六步:单击【确定】按钮,保存该查询。单击【设计】选项卡下【结果】组中的【视图】按钮或者【运行】按钮,则可以看到查询的运行结果,如下图所示。,3.2.5 用设计视图创建查询,联接属性的设置方法如下。,当添加两个表到【设计视图】中时,两个表中间会有一条联接线。双击该联接线,则将弹出如下图所示的【联接属性】对话框。,3.2.5 用设计视图创建查询,在【联接属性】对话框中有三个不同的单选按钮,各个按钮选择的查询方式是不同的。 默认的选择为如图所示的第一个选择,【只包含两个表中联接字段相等的行】,也就是只有两个表中都有的“采购订单ID”才能够被查询和显示。 如果选择第二个,则查询显示“采购订单”表中的所有记录和“采购订单明细”表中联接字段相等的记录。也就是那些存在于“采购订单”表中的所有记录都将被查询,对于“采购订单明细”中没有的记录,相应的字段将显示为空白;而只存在于“采购订单明细”中的记录则不能够被查询。 如果选择第三个,则结果和第二个相反,那些只存在于“采购订单”表中的记录不能够被查询。所有“采购订单明细”表中的记录都将被查询,而不管“采购订单”表中有没有相应的记录。,3.2.6 查询及字段的属性设置,利用查询的【属性表】窗格,可以改变查询的默认视图,也可以对查询的排序、筛选、显示最大记录数以及子数据表的名称等进行设置。,在屏幕左边的导航窗格中,右击我们要进行设置的查询,并在右键菜单中选择【设计视图】选项,进入查询的【设计视图】。然后单击【设计】选项卡【显示/隐藏】组中的【属性表】按钮,则弹出【属性表】窗格,如下图所示。,3.2.7 设置查询条件,查询条件类似于一种公式,它是可能由引用的字段、运算符和常量组成的字符串。 下表列举了几个查询条件的例子。,3.2.7 设置查询条件,查询中含有各种运算符,既有算术运算符,又有逻辑运算符等,例如下面常用的各种运算符。,,=,=,Is,In,And,Or,Not,Like,下面我们继续介绍几个查询的例子,大家可以在使用时作为参考,如下表所示。,3.3 创建高级查询,参数查询 交叉表查询,3.3.1 参数查询,通过输入某一个同学的姓名,查询出他的学号、性别、宿舍号、宿舍电话和所在院系等信息。,第一步:打开“查询示例.accdb”数据库。单击【创建】选项卡下【其他】组中的【查询设计】按钮,弹出【设计视图】和【显示表】对话框,如下图所示。,第二步:选择 “学生信息表”,单击【添加】按钮,将该表添加到【设计视图】的上半部分,如下图所示。,3.3.1 参数查询,通过输入某一个同学的姓名,查询出他的学号、性别、宿舍号、宿舍电话和所在院系等信息。,第三步:双击“学生信息表”中的“姓名”字段,或者直接将该字段拖动到【字段】行中,这样【表】行中就显示了该表的名称“学生信息表”,【字段】行中显示了该字段的名称“姓名”。,第四步:和第三步的操作类似,分别将“学号”、“性别”、“宿舍”、“联系电话”和“所在院系”字段添加到【字段】行中,得到的设计视图如下图所示。,第五步:在“姓名”字段的【条件】行中,输入一个带方括号的文本“请输入学生姓名:”作为参数查询的提示信息,如下图所示。,3.3.1 参数查询,通过输入某一个同学的姓名,查询出他的学号、性别、宿舍号、宿舍电话和所在院系等信息。,第六步:保存该查询。单击【设计】选项卡下【结果】组中的【视图】按钮,或者【运行】按钮,弹出【输入参数值】对话框,如下图所示。,第七步:输入要查询的学生姓名,例如输入“张三”并单击【确定】按钮,得到的查询结果,如下图所示。,3.3.2 交叉表查询,利用查询向导建立交叉表查询 统计每一个员工的销售情况。交叉表的左侧显示员工的姓名,上面显示了各个月份,行列交叉处显示了员工在各个月份的销售情况。,第一步:打开“查询示例.accdb”数据库,单击【创建】选项卡下【其他】组中的【查询向导】按钮,在弹出的【新建查询】对话框中选择【交叉表查询向导】选项,如下图所示。,第二步:单击【确定】按钮,弹出【交叉查询向导】对话框。在该对话框中选择一个表或者一个查询作为交叉表查询的数据源。 在本例中选择“销售分析”查询作为数据源,如下图所示。,3.3.2 交叉表查询,利用查询向导建立交叉表查询 统计每一个员工的销售情况。交叉表的左侧显示员工的姓名,上面显示了各个月份,行列交叉处显示了员工在各个月份的销售情况。,第三步:单击【下一步】按钮,弹出提示选择行标题的对话框。在该对话框中选择作为“行标题”的字段,行标题最多可以选择3个。 本例中,选择“员工”字段,并将其添加到【选定字段】列表框中,作为行标题,如下图所示。,第四步:单击【下一步】按钮,在弹出的对话框中选择作为“列标题”的字段,该字段将显示在查询的上部,该字段只能选择一个。 本例中选择“月份名”作为列标题,如下图所示。,3.3.2 交叉表查询,利用查询向导建立交叉表查询 统计每一个员工的销售情况。交叉表的左侧显示员工的姓名,上面显示了各个月份,行列交叉处显示了员工在各个月份的销售情况。,第五步:单击【下一步】按钮,弹出选择对话框,在此对话框中选择要在交叉点显示的字段,以及该字段的显示函数。 本例中选择“销售”字段,并选择显示【函数】为“汇总”,如下图所示。,第六步:单击【下一步】按钮,在弹出的对话框中输入该查询的名称,单击【完成】按钮,完成该查询的创建。完成后的交叉表查询如下图所示。,3.3.2 交叉表查询,利用设计视图建立交叉表查询 统计该学院学生在各个省的学生数。交叉表的左侧显示各个省份,上面显示了各个系,行列交叉处显示了各专业在全国招生的人数统计情况。,第一步:打开“查询示例.accdb”数据库。单击【创建】选项卡下【其他】组中的【查询设计】按钮,弹出【设计视图】和【显示表】对话框,如下图所示。,第二步:选择“学生信息表”,单击【添加】按钮,将该表添加到【设计视图】的上半部分,关闭【显示表】对话框。此时进入查询的【设计视图】,但是默认的【设计视图】是选择查询的,单击【查询类型】组中的交叉表按钮,进入交叉表【设计视图】,如下图所示。,3.3.2 交叉表查询,利用设计视图建立交叉表查询 统计该学院学生在各个省的学生数。交叉表的左侧显示各个省份,上面显示了各个系,行列交叉处显示了各专业在全国招生的人数统计情况。,第三步:直接拖动“省份”字段到【设计视图】的下半部分的设计网格中的【字段】行中,并选择【交叉表】行中为“行标题”选项,这样就选定了交叉表的行标题,如下图所示。,第四步:按照同样的方法,将“所在院系”和“姓名”字段添加到设计网格中,并分别设定为“列标题”和“值”。为了统计各省的总人数,添加一项“人数总计”列,并选定为“行标题”。最终的设计效果如下图所示。,3.3.2 交叉表查询,利用设计视图建立交叉表查询 统计该学院学生在各个省的学生数。交叉表的左侧显示各个省份,上面显示了各个系,行列交叉处显示了各专业在全国招生的人数统计情况。,第五步:保存该查询,单击【设计】选项卡下的【运行】按钮,弹出交叉表查询的运行结果,如下图所示。,3.4 操 作 查 询,更新查询 追加查询 删除查询 生成表查询,3.4.1 更新查询,将“订单”表中“客户”字段的值为“森通”的记录改为“祥通”。,第一步:打开“查询示例.accdb”数据库。单击【创建】选项卡下的【查询设计】按钮,在弹出的【显示表】对话框中选择“订单”表,单击【添加】按钮将该表添加进【设计视图】。,第二步:单击【查询类型】组中的【更新】按钮,如下图所示。,进入更新查询【设计视图】,其查询设计网格如左图所示。,第三步:双击“客户ID”字段,或者直接将该字段拖动到【字段】行,将“客户ID”字段添加到查询设计网格中。,第四步:设定更新条件。打开“客户”表,可以看到“客户ID”字段为数字型,且“森通”的“客户ID”为“6”,“祥通”的“客户ID”为“9”,如下图所示。,在设计网格的【更新到】行中输入要更新到的“客户ID”为“9”。【条件】行中输入需要进行更新的“客户ID”为“6”,如左图所示。,3.4.1 更新查询,将“订单”表中“客户”字段的值为“森通”的记录改为“祥通”。,第五步:单击如下图所示的【结果】组中的【视图】按钮,可以预览将要更新的数据,而如果单击【运行】按钮,则直接执行更新查询。,预览将要更新的记录如下图所示。,第六步:单击【运行】按钮,执行更新查询,打开“订单”表,可以看到所有记录为“森通”的记录已被替换为“祥通”按下CtrlZ键,看到更新过的记录是无法复原的。,3.4.2 追加查询,运用“订单”表作为数据源表,将“订单状态”字段值为“新增”的订单追加到一个“新增状态订单” 表中。,第一步:打开“查询示例.accdb”数据库,单击【创建】选项卡下的【表设计】按钮,进入表的【设计视图】,新建一个“新增状态订单”表,各个字段设置如下图所示。,第二步:单击【创建】选项卡下的【查询设计】按钮,弹出查询的【设计视图】和【显示表】对话框。选择“订单”表和“客户”表,单击【添加】按钮将表添加进查询的【设计视图】中,如下图所示。,3.4.2 追加查询,运用“订单”表作为数据源表,将“订单状态”字段值为“新增”的订单追加到一个“新增状态订单” 表中。,第三步:单击【查询类型】中的【追加】按钮,弹出如下图所示的【追加】对话框,在【表名称】下拉列表框中选择“新增状态订单”作为目标表。,第四步:单击【确定】按钮,返回查询的【设计视图】,在下面的查询设计网格中设置要追加的数据源表。本例中选择“订单”表的“订单ID”和“客户ID”字段和“客户”表的“城市”、“地址”和“业务电话”和“公司”字段,如下图所示。,最后一列的“状态ID”字段作为判断条件,如“订单状态”表中所定义的,该字段为“数字”型,“新增”状态对应的数字为“0”,即只把该字段值为“0”的记录追加到查询中,如下图所示。,3.4.2 追加查询,运用“订单”表作为数据源表,将“订单状态”字段值为“新增”的订单追加到一个“新增状态订单” 表中。,第五步:单击如下图所示的【结果】组中【视图】按钮,可以预览将要追加到目标表中的记录,而如果单击【运行】按钮,则直接执行追加查询。,单击【视图】按钮,预览要追加的数据如下图所示。,第六步:退出预览视图,直接单击【运行】按钮,运行该追加查询。,第七步:在导航窗格中打开“新增状态订单”表,可以看到追加查询已经把“新增”状态的订单加到了该表中,如下图所示。,3.4.3 删除查询,删除查询根据它所涉及的表与表之间的关系,可以简单地划分为以下3种类型。 删除一个表或者一对一关系表中的记录。 在一对多关系的表中,通过对“一”端的删除查询,删除“多”端的记录。 在一对多关系的表中,通过对两端的删除查询,删除两端的记录。,3.4.3 删除查询,删除“订单”表中所有关于“李芳”的记录。,第一步:打开“查询示例.accdb”数据库。单击【创建】选项卡下的【查询设计】按钮,弹出【设计视图】和【显示表】选择对话框,如下图所示。,第二步:选择“订单”表,并单击【添加】按钮将该表添加进【设计视图】中。,第三步:单击【查询类型】组中的【删除】按钮,进入删除查询【设计视图】,可以看到,该视图和上面的交叉表【设计视图】又有一点区别,如下图所示。,3.4.3 删除查询,删除“订单”表中所有关于“李芳”的记录。,第四步:双击“订单”表中的“员工ID”字段,或者直接将该字段拖动到【字段】行中,将“员工ID”字段添加到查询设计网格中,用同样的方法将“订单”表中的星号“*”添加到网格中。,第五步:设定删除条件。在【条件】行中输入要进行删除查询的条件。由于“员工ID”字段为数字型,并且李芳的员工ID为“3”,因此在本例中我们输入删除条件为:“=3”,如下图所示。,第六步:单击【结果】组中的【视图】按钮,预览要删除的记录,结果如下图所示。,第七步:单击【运行】按钮,执行删除查询,打开“订单”表,我们看到所有记录为“李芳”的记录已经删除了。按下CtrlZ键,看到删除的记录是无法复原的。,3.4.4 生成表查询,“订单”表作为数据源表,将“订单状态”为“关闭”的订单单独保存到一个“关闭状态订单”表中。,第一步:打开“查询示例.accdb”数据库。单击【创建】选项卡下的【查询设计】按钮。,第二步:弹出查询的【设计视图】和【显示表】对话框,选择“订单”表和“客户”表,单击【添加】按钮将表添加进查询的【设计视图】中,如下图所示。,第三步:关闭【显示表】对话框,单击【查询类型】中的【生成表】按钮,弹出如下图所示的【生成表】对话框,在【表名称】下拉列表中选择“关闭状态订单”作为要生成的表。,3.4.4 生成表查询,“订单”表作为数据源表,将“订单状态”为“关闭”的订单单独保存到一个“关闭状态订单”表中。,第四步:单击【确定】按钮,返回查询的【设计视图】,在下面的查询设计网格中设计要生成的数据源表。本例中选择“订单”表的“订单ID”和“客户ID”字段和“客户”表的“城市”、“地址”、“业务电话”和“公司”字段,如下图所示。,最后一列的“状态ID”字段作为判断条件。如“订单状态”表中所定义的,该字段为“数字”型,“关闭”状态对应的数字为“3”,即只把该字段值为“3”的记录生成到新的表中,如下图所示。,第五步:单击【结果】组中的【视图】按钮,预览要生成的数据表,如下图所示。,3.4.4 生成表查询,“订单”表作为数据源表,将“订单状态”为“关闭”的订单单独保存到一个“关闭状态订单”表中。,第六步:退出【预览视图】,单击【运行】按钮,运行该生成表查询。,第七步:在导航窗格中可以看到已经生成的“关闭状态订单”表,打开该表,如下图所示。,该表是一个独立的数据表。如果对生成表查询进行了修改,修改完成的查询再次运行该生成表查询时,会弹出提示删除已有表的对话框,如下图所示。,单击【是】按钮,即可删除已经建立的“关闭状态订单”表,重新建立一个新的“关闭状态订单”表。,3.5 SQL特定查询,SQL语言基本语法 联合查询 传递查询 数据定义查询,3.5.1 SQL语言基本语法,SQL基本语句主要有以下几种。 Select语句。用于按照一定的规则选择记录。 Insert语句。用于在数据表中插入记录。 Delete语句。用于删除数据表中的记录。 Create Table语句。用来建立一个新的数据表。 Create Form语句。用来建立一个新的窗体。 Create Index语句。用来建立一个索引。 Drop语句。用来撤销Create语句建立的对象。,3.5.1 SQL语言基本语法,SQL常用的函数主要有以下几个。 Count(*):计算元组的个数。 Sum:计算数值型数据的总和。 Avg:计算数值型数据的算术平均值。 Max:筛选出数据的最大值。 Min:筛选出数据的最小值。 Stdev:计算标准差。 Stdevp:计算标准差的估计值。 Var:计算方差。 Varp:计算方差的估计值。,3.5.1 SQL语言基本语法,Select语句 语法如下: “Select字段from表” “Select * from 学生信息表”:从“学生信息表”中筛选出所有的记录。 “Select top5* from 学生信息表”:从“学生信息表”中筛选出前5个记录。 “Select * from 学生信息表where班级=一步0503303”:从“学生信息表”筛选出0503303班的信息。 “Select * from 学生信息表 where 姓名=王坤”:从“学生信息表”中筛选出“王坤”的所有信息。 “Select * From 学生信息表 order by 学号 ASC”:从表中显示所有记录信息,并将信息按“学号”的升序排列。ASC(Ascending)表示各列按升序排列,而当需要按降序排列时(如学生成绩、销售额),只要用DESC(Descending)代替上例中的ASC就可以了。,3.5.1 SQL语言基本语法,Insert语句 语法如下: “Insert表(字段1,字段2,)Values(字段1值,字段2值,)” “Insert into 产品信息表(编号,名称,产地,等级,价格)Values(“ZP23”,“诺基亚5200”,“北京”,“正品”,“1099”)”,3.5.2 联合查询,在“查询示例.accdb”数据库中,建立一个基于“产品订单数”查询和“产品采购订单数”查询的“产品事务”联合查询。,第一步:打开“查询示例.accdb”数据库。单击【创建】选项卡下的【查询设计】按钮。,第二步:在查询的【设计视图】中建立简单选择查询,查询各个字段的设置如下图所示。,第三步:将该选择查询保存为“产品订单数”查询,并用相同的方法建立“产品采购订单数”。“产品采购订单数”查询的设计视图如下图所示。,3.5.2 联合查询,在“查询示例.accdb”数据库中,建立一个基于“产品订单数”查询和“产品采购订单数”查询的“产品事务”联合查询。,第四步:单击【创建】选项卡下的【查询设计】按钮,在弹出的【显示表】对话框中不选择任何表,进入空白的查询【设计视图】。,第五步:单击【查询类型】中的【联合】按钮,进入查询的【SQL视图】,此时视图如下图所示。,第六步:在视图的空白区域输入如下的SQL代码。 SELECT 产品 ID, 订单日期, 客户 ID, 状态 ID, 数量 FROM 产品订单数 UNION SELECT 产品 ID, 创建日期, 供应商 ID, 状态 ID, 数量 FROM 产品采购订单数 ORDER BY 订单日期 DESC;,此时的【SQL视图】如下图所示。,3.5.2 联合查询,在“查询示例.accdb”数据库中,建立一个基于“产品订单数”查询和“产品采购订单数”查询的“产品事务”联合查询。,第七步:保存该查询名称为“产品事务”。双击执行该查询,查询结果如下图所示。,3.5.3 传递查询,在【SQL视图】中,输入SQL代码的步骤。 输入“SELECT”,“SELECT”后跟要包含在查询中的第一个表中的字段列表。使用方括号将字段名括起来,并用逗号分隔。输入字段名称后,按下Enter键。 输入“FROM”,后跟要包含在查询中的第一个表的名称。按下Enter键。 输入“UNION”,此为联合查询的关键字段。 输入“SELECT”,“SELECT”后跟要包含在查询中的第二个表中的字段列表。从此表中选择出的字段应与从第一个表中选择出的字段相对应,并且顺序应当相同。应使用方括号将字段名括起来,并用逗号分隔。输入字段名称后,按下Enter键。 输入FROM,后跟要包含在查询中的第二个表的名称,按下Enter键。 输入分号“;”,以指示查询结束。,3.5.3 传递查询,SQL传递查询主要用在以下几种场合。 需要在后台服务器上运行SQL语句。 Access或者ODBC驱动程序对该SQL代码的支持效果不好,需要发送一个优化格式到后端数据库。 要联接存在于数据库服务器上的多个表。,3.5.3 传递查询,SQL查询主要有以下的缺点。 当切换后端服务器时需要重写所有的SQL语句。 从传递查询返回的结果不能更新。 将查询发送到后端数据库服务器之前,不做任何语法检查。,3.5.3 传递查询,在“查询示例.accdb”数据库中,建立传递查询。,第一步:打开“查询示例.accdb”数据库,单击【创建】选项卡下的【查询设计】按钮。,第二步:在弹出的【显示表】对话框中不选择任何表,进入空白的查询【设计视图】。,第三步:在弹出的【显示表】对话框中不选择任何表,进入空白的查询【设计视图】。,3.5.3 传递查询,在“查询示例.accdb”数据库中,建立传递查询。,第四步:在视图的空白区域输入供后端数据库使用的SQL语句。,第五步:单击【显示/隐藏】组中的【属性表】按钮,弹出【属性表】窗口,如下图所示。,第六步:单击【ODBC连接字符串】行右边的【省略号】按钮,弹出【选择数据源】对话框,如下图所示。,第七步:设置好数据源以后,单击【确定】按钮。然后单击【结果】组中的【运行】按钮,运行传递查询。,3.5.4 数据定义查询,数据定义查询能够创建或删除索引,或者创建、更改、删除数据表。 Create Table:创建数据表。 Alter Table:修改数据表。 Drop Table:删除数据表。 传递查询就是将查询命令直接传递给SQL数据库服务器,如Microsoft SQL Server,使服务器能够接受命令。可以使用传递查询来检索或更改服务器中的数据。 Create Index:创建索引。 Drop Index:删除索引。,3.5.4 数据定义查询,在“查询示例.accdb”数据库中,用数据定义查询建立一个“学生基本信息”表。,第一步:打开“查询示例.accdb”数据库,单击【创建】选项卡下的【查询设计】按钮。,第二步:在弹出的【显示表】对话框中不选择任何表,进入空白的查询【设计视图】。,第三步:单击【查询类型】中的【数据定义】按钮,进入查询的【SQL视图】,此时视图如下图所示。,3.5.4 数据定义查询,在“查询示例.accdb”数据库中,用数据定义查询建立一个“学生基本信息”表。,第四步:在【SQL视图】的空白区域输入如下的SQL代码。 Create Table 学生基本信息 (学号 char(10),姓名 char(10), 联系电话 char(10), 所在院系 char(10) 此时的【SQL视图】如下图所示。,这是创建一个“学生基本信息”数据表,保存该数据定义查询,并将该查询命名为“新建表”。单击【结果】组中的【运行】按钮,得到的运行结果如下图所示。,第五步:创建一个新的数据定义查询,在【SQL视图】中输入如下所示的代码。 Insert into 学生基本信息(学号,姓名,联系电话,所在院系) Values(050330303,罗夕林,84890829,航空宇航制造工程系) 此时的【SQL视图】如下图所示。,这是给刚才建立的“学生基本信息”表插入数据记录,保存该数据定义查询名称为“插入记录”。单击【结果】组中的【运行】按钮,得到运行结果如下图所示。,3.6 解除阻止查询,在Access 2007数据库中,启用被阻止的内容。,第一步:在如下所示的【消息】栏上,单击【选项】按钮。,第二步:系统弹出【Microsoft Office 安全选项】对话框,如下图所示。,第三步:选中【启用此内容】单选按钮,然后单击【确定】按钮。,第四步:再次运行查询。,3.6 解除阻止查询,在数据库的“信任中心”中进行数据库的安全设置。,第一步:单击Access 2007左上角的Microsoft Windows徽标,在弹出的菜单中单击【Access选项】按钮,如下图所示。,第二步:弹出【Access选项】对话框,在左边的导航栏中选择【信任中心】按钮,出现视图如下所示。,3.6 解除阻止查询,在数据库的“信任中心”中进行数据库的安全设置。,第三步:单击【信任中心设置】按钮,打开【信任中心】设置对话框。用户可以在这里设置受信任的发布者、受信任位置、加载项、宏、消息栏等,如下图所示。,也可以直接单击【Microsoft Office 安全选项】对话框的【打开信任中心】链接,进入Access的【信任中心】对话框。,第四步:单击【受信任位置】选项,弹出如下图所示的【受信任位置】对话框。,3.6 解除阻止查询,在数据库的“信任中心”中进行数据库的安全设置。,第五步:单击【添加新位置】按钮,在弹出的对话框中输入受信任的文件夹地址,然后单击【确定】按钮,完成受信任位置的添加,如下图所示。,
展开阅读全文