Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > Access数据库-查询/SQL语句

全面掌握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交流群 (群号:483923997)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助