全面掌握MS ACCESS SQL(31)
时 间:2018-01-18 15:58:12
作 者:Big Young ID:252 城市:襄阳
摘 要: DELETE语句实例详解。
正 文:
第二节 Delete语句实例详解
伴随着大数据时代到来,数据将会越来越多,越来越复杂,我们都知道数据库是为数据而生的,那么Access作为最简单的数据库,怎么根据条件删除数据呢?下面我们就来学习如何使用Delete语句对数据库表中的记录进行删除操作。我们还是先创建一个示例数据库及示例数据表。
打开MS ACCESS 2016应用程序,在适当的目录下创建一个名为“删除记录示例”的数据库,然后创建建一个名为“学生成绩”的表并插入示例数据,表的数据如下:
考生号 姓名 语文 数学 英语 综合
10420601110127 方志超 117 145 142 190
10420601110128 孙红霞 110 143 141 167
10420601110129 张方方 127 140 130 188
10420601110130 胡一炳 119 146 137 160
10420601110131 邓林楠 119 145 131 197
10420601110132 刘国琼 125 146 138 194
10420601110133 孔明阳 121 139 134 196
10420601110134 赵一凡 118 136 132 182
10420601110135 史佳妮 132 133 138 181
10420601110136 韩雪娇 117 140 139 152
10420601110137 刘申 122 135 138 157
10420601110138 张艳辉 123 145 129 164
10420601110139 郭文涛 120 139 136 171
10420601110140 刘念晨 127 143 133 182
10420601110141 邹佳 123 136 133 170
10420601110142 周杰 117 136 146 183
10420601110143 熊戈尔 108 144 138 176
10420601110144 胡开宇 115 125 137 169
10420601110145 张正杨 121 132 131 178
10420601110146 崔楚蔚 119 140 129 172
10420601110147 王海章 113 132 140 187
10420601110148 许袁浩 125 123 116 169
10420601110149 吴曼丽 117 142 129 165
10420601110150 宋巧至 108 131 140 166
10420601110151 王秋蕊 126 140 126 175
10420601110152 吴婷颖 118 140 129 160
10420601110153 夏雨泽 123 132 138 180
10420601110154 杜赟 133 141 129 179
10420601110157 吴丹 117 128 138 186
准备工作就绪后,我们接下来就来探讨如何运用Delete语句删除指定的记录的问题。
一、删除一条记录
在学校中,学生也是经常性的变动的,如有的同学转学了,有的同学休学了,或有的不幸病故了,相应的我们的成绩表也要相应的作出修改。假如一我叫“吴丹”的同学转学了,我们就没有必要再记录其数据了,我们要将此删除,SQL语句如下:
Delete *
FROM 学生成绩
Where 姓名='吴丹';
此语句执行后我们再查看数据表,指定的相应记录不存在了。
二、删除多条记录
我们还是以“学生成绩”表为例,假如我们发现“考生号”的值大于“10420601110143”的考生都不是我们的学生,现在要将其删除,我们用SQL语句:
Delete *
FROM 学生成绩
Where VAL(考生号)> 10420601110143;
确认运行后数据表结果如下:
考生号 姓名 语文 数学 英语 综合
10420601110127 方志超 117 145 142 190
10420601110128 孙红霞 110 143 141 167
10420601110129 张方方 127 140 130 188
10420601110130 胡一炳 119 146 137 160
10420601110131 邓林楠 119 145 131 197
10420601110132 刘国琼 125 146 138 194
10420601110133 孔明阳 121 139 134 196
10420601110134 赵一凡 118 136 132 182
10420601110135 史佳妮 132 133 138 181
10420601110136 韩雪娇 117 140 139 152
10420601110137 刘申 122 135 138 157
10420601110138 张艳辉 123 145 129 164
10420601110139 郭文涛 120 139 136 171
10420601110140 刘念晨 127 143 133 182
10420601110141 邹佳 123 136 133 170
10420601110142 周杰 117 136 146 183
10420601110143 熊戈尔 108 144 138 176
与开始时相比,后面的十几条记录被删除了。
三、删除表中重复的记录
有时候我们的数据来源于不同的表合并而成,难免会有重复的数据记录,例如我们下列的“学生成绩”表:
考生号 姓名 语文 数学 英语 综合
10420601110127 方志超 117 145 142 190
10420601110128 孙红霞 110 143 141 167
10420601110129 张方方 127 140 130 188
10420601110130 胡一炳 119 146 137 160
10420601110131 邓林楠 119 145 131 197
10420601110132 刘国琼 125 146 138 194
10420601110133 孔明阳 121 139 134 196
10420601110134 赵一凡 118 136 132 182
10420601110142 周杰 117 136 146 183
10420601110131 邓林楠 119 145 131 197
10420601110131 邓林楠 119 145 131 197
10420601110132 刘国琼 125 146 138 194
10420601110133 孔明阳 121 139 134 196
10420601110134 赵一凡 118 136 132 182
10420601110142 周杰 117 136 146 183
现在我们要删除其中的重复记录,即重复的记录只保留一条,不存在重复的记录保持不变,那我们该如何实现呢?我们先备份下这个表,备份表名为“TEMP”,然后再作如下的操作:
Delete *
FROM 学生成绩
Where 考生号
IN (Select 考生号 FROM 学生成绩 GROUP BY 考生号 HAVING COUNT(考生号) > 1);
执行号我们再打开“学生成绩”表查看,情况如下:
考生号 姓名 语文 数学 英语 综合
10420601110127 方志超 117 145 142 190
10420601110128 孙红霞 110 143 141 167
10420601110129 张方方 127 140 130 188
10420601110130 胡一炳 119 146 137 160
这表明它把重复的记录全删除了,这不是我们想要的结果,我们想要的是重复的记录只保留一条,多余的删除。现在我们从备份中恢复数据,另作处理。
四、重复记录只保留一条,删除多余重复记录
要实现只保留一条重复的记录,把其它重复多余的记录删除,在ACCESS SQL查询视图中用一条语句很难做到,我们可以分步骤实现。
第一步,为表增加的自动编号的列,这里我们为表“学生成绩”新增一个名为“ID”的字段,用以下SQL语句实现:
Alter TABLE 学生成绩
ADD COLUMN [ID] COUNTER;
执行后我们打开表查看,情况如下:
考生号 姓名 语文 数学 英语 综合 ID
10420601110127 方志超 117 145 142 190 1
10420601110128 孙红霞 110 143 141 167 2
10420601110129 张方方 127 140 130 188 3
10420601110130 胡一炳 119 146 137 160 4
10420601110131 邓林楠 119 145 131 197 5
10420601110132 刘国琼 125 146 138 194 6
10420601110133 孔明阳 121 139 134 196 7
10420601110134 赵一凡 118 136 132 182 8
10420601110142 周杰 117 136 146 183 9
10420601110131 邓林楠 119 145 131 197 10
10420601110131 邓林楠 119 145 131 197 11
10420601110132 刘国琼 125 146 138 194 12
10420601110133 孔明阳 121 139 134 196 13
10420601110134 赵一凡 118 136 132 182 14
10420601110142 周杰 117 136 146 183 15
第二步,我们就可以利用新增加的自动编号字段“ID”来实现重复记录只保留一条的删除操作了,具体SQL语句如下所示:
Delete *
FROM 学生成绩
Where ID NOT IN (Select MIN(ID) FROM 学生成绩 GROUP BY 考生号;);
这样就会删除多余的重复记录,只把重复记录中“ID”号最小的一个留下了,执行后的效果如下:
考生号 姓名 语文 数学 英语 综合 ID
10420601110127 方志超 117 145 142 190 1
10420601110128 孙红霞 110 143 141 167 2
10420601110129 张方方 127 140 130 188 3
10420601110130 胡一炳 119 146 137 160 4
10420601110131 邓林楠 119 145 131 197 5
10420601110132 刘国琼 125 146 138 194 6
10420601110133 孔明阳 121 139 134 196 7
10420601110134 赵一凡 118 136 132 182 8
10420601110142 周杰 117 136 146 183 9
第三步,接下来我们就要删除先前增加的自动编号字段“ID”,恢复原来的表的结构,删除字段的语句如下:
Alter TABLE 学生成绩
Drop COLUMN [ID];
这样,能过三步的操作我们就实现了把多记录删除时只保留一条的任务。当然这也不是唯一的方法步骤,实现方式可以多样,如,我们也可以利用临时表也可以实现,这里就不理一一列举了。
Access软件网QQ交流群 (群号:54525238) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- Access对子窗体数据进行批...(10.30)
- 最精简的组合框行来源数据快速输...(10.25)
- Access仿平台的多值选择器...(10.24)
- 【Access日期区间段查询】...(10.22)
- 【Access源码示例】VBA...(10.12)
- Access累乘示例,Acce...(10.09)
- 数值8.88,把整数8去掉,转...(10.08)
- 【Access自定义函数】一个...(09.30)
- 【Access选项卡示例】Ac...(09.09)
学习心得
最新文章
- 高效率在导入数据前删除记录(11.10)
- Access系统自带的日期选择器不...(11.08)
- 分享一下Access工程中的acw...(11.07)
- Access快速开发平台--让有权...(11.04)
- Access快速开发平台--审批选...(11.01)
- ACCESS两张表先各自排序,然后...(10.31)
- Access对子窗体数据进行批量+...(10.30)
- SqlServer中如何用SQL命...(10.29)
- Access报表中的分组功能用代码...(10.28)
- 用Access计算库存结余的一个方...(10.26)