全面掌握MS ACCESS SQL(33)
时 间:2018-01-19 11:16:53
作 者:Big Young ID:252 城市:襄阳
摘 要: SELECT...INTO语句实例详解。
正 文:
第二节 Select...INTO语句实例详解
在实际的应用中,需求是多方面的,备份有时也要根据现实的不同需要采取不同的备份方式,例如有时只需要备份总价数据,有时需要备份整个表,有时只需要表的结构等等。下面我们分几种情况分别来说明Select...INTO语句的具体用法。
一、备份整个表,包括数据与结构
备份整个表的语法可以描述成如下的结构:
Select * INTO new_table_name
FROM old_tablename;
这里new_table_name是将要生成的新的目标表的名称,old_tablename是需要备份的源表的名称。下面来看具体有实例:
例如我们有一个保存学生信息的示例数据库,库中有一个名为“学生成绩”的表,内容如下所示:
考生号 姓名 语文 数学 英语 综合
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
此表的“考生号”与“姓名”两个字段的类型为字符型,另外的字段都为整数类型。现在我们要将此表整体备份到一个名为“成绩备份”的表中,备份时带有结构与数据。我们可以使用以下的SQL语句:
Select * INTO 成绩备份
FROM 学生成绩;
此语句执行后,则会生成一张与“学生成绩”表结构及数据一样的备份“成绩备份”表。我们可以打开些新生成的备份表与原表对照,发现除了表名其它全部一样。
实际上,语句也可以写成这样:
Select *
INTO 成绩备份
FROM 学生成绩
Where TRUE;
二、只备份部分列的数据及汇总的数据
备份部分列的SQL语法结构:
Select field1[, field2[, ...]] INTO new_table_name
FROM old_tablename;
此处的field1[, field2[, ...]]为要备份的字段列表,new_table_name是将要生成的新的目标表的名称,old_tablename是需要备份的源表的名称。
假如我们上面利用的“学生成绩”表是一个市的中考成绩,现在要用于高中的执行录取,我们录取的依据是总分,同时我们也不想让录取学校知道每个学生的单科的成绩,我们就要生成一个新的数据表,假如新表名为“录取用成绩表”,实现这一要求的SQL语句如下:
Select 考生号,姓名,语文+数学+英语+综合 AS 总分
INTO 录取用成绩表
FROM 学生成绩;
SQL语句执行完成后,打开“录取用成绩表”,数据如下:
考生号 姓名 总分
10420601110127 方志超 594
10420601110128 孙红霞 561
10420601110129 张方方 585
10420601110130 胡一炳 562
10420601110131 邓林楠 592
10420601110132 刘国琼 603
10420601110133 孔明阳 590
10420601110134 赵一凡 568
10420601110135 史佳妮 584
10420601110136 韩雪娇 548
10420601110137 刘申 552
10420601110138 张艳辉 561
10420601110139 郭文涛 566
10420601110140 刘念晨 585
10420601110141 邹佳 562
10420601110142 周杰 582
10420601110143 熊戈尔 566
10420601110144 胡开宇 546
10420601110145 张正杨 562
10420601110146 崔楚蔚 560
10420601110147 王海章 572
10420601110148 许袁浩 533
10420601110149 吴曼丽 553
10420601110150 宋巧至 545
10420601110151 王秋蕊 567
10420601110152 吴婷颖 547
10420601110153 夏雨泽 573
10420601110154 杜赟 582
10420601110157 吴丹 569
三、只备份符合条件的部分记录
备份整个表的语法可以描述成如下的结构:
Select * INTO new_table_name
FROM old_tablename
Where criterion;
这里new_table_name是将要生成的新的目标表的名称,old_tablename是需要备份的源表的名称,criterion为筛选条件。
在对学生考试成绩的分析中,有时会根据总成绩划分优、良、中、差等次,要把不同等次的学生成绩信息放入不同的表中。例如我们要生成一个部分在580分以上的成绩优异的学生信息表,我们就把表名命名为“580以上”,生成表查询语句如下:
Select *
INTO 580以上
FROM 学生成绩
Where (语文+ 数学+ 英语+ 综合) >= 580;
运行些语句后我们打开新生成的“580以上”数据表,内容如下:
考生号 姓名 语文 数学 英语 综合
10420601110127 方志超 117 145 142 190
10420601110129 张方方 127 140 130 188
10420601110131 邓林楠 119 145 131 197
10420601110132 刘国琼 125 146 138 194
10420601110133 孔明阳 121 139 134 196
10420601110135 史佳妮 132 133 138 181
10420601110140 刘念晨 127 143 133 182
10420601110142 周杰 117 136 146 183
10420601110154 杜赟 133 141 129 179
表中只有总分在580及以上的学生信息了。
四、只备份表结构到新表(只有结构无数据)
有时候我们只想要一个的结构,并不需要表内的任何数据,这时我们该如何操作呢?其实这用SQL语句实现起来比较简单。其语法结构如下:
Select *
INTO 新表
FROM 旧表
Where 1=2;
这里的*(星号)表明选择所有的列,新表就是将生成的目标表的名字,旧表就是源表的名字,筛选条件“1=2”,这里只要中永远不能成立的等式就可以了,就是结果为假的逻辑表达式,表示没有符合条件的记录。
下面我们就来把“学生成绩”表的结构备份一份,名为“结构备份”,SQL语句为:
Select *
INTO 结构备份
FROM 学生成绩
Where 1=2;
打开新生成表我们会发现,只是一个空表,结构与源表是一样的,只是没有记录。
其实SQL语句也可以这样写,效果是一样的:
Select *
INTO 结构备份
FROM 学生成绩
Where FALSE;
关于备份到外部数据库中的相关内容将放在与外部数据库交换数据部分再进行详细说明。
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)
学习心得
最新文章
- Access快速开发平台--对上传...(11.22)
- Access快速开发平台企业版--...(11.18)
- 不会用多表联合查询,多表查询没结果...(11.16)
- 【案例分享】主键字段值含有不间断空...(11.16)
- Access快速开发平台--后台D...(11.14)
- 微软Access邀测新Monaco...(11.12)
- Access列表框左右互选、列表框...(11.11)
- 高效率在导入数据前删除记录(11.10)
- Access报价单转订单示例代码(11.08)
- Access系统自带的日期选择器不...(11.08)