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

全面掌握MS ACCESS SQL(27)

时 间:2018-01-15 16:27:04
作 者:Big Young   ID:252  城市:襄阳
摘 要:    用INSERT INTO实现多记录追加查询。
正 文:

第三节 用Insert INTO实现多记录追加查询

ACCESS SQL中使用Insert INTO语句不仅可以一次插入一条记录,而且还可以借助Select…FROM子查询语句来从已存在的表中将记录追加进来,实现一次插入多条记录的操作。

一、从其它表中获取记录

在前面的用Insert INTO实现一次插入一条记录的示例中,我们创建了一个名为员工的数据库表,并向其中插入了三条记录,下面为了说明从一个表向另一个表一次追加多条记录,我们再创建一个与前例员工表结构一样的表,名为员工备份SQL语句如下:

Create TABLE 员工备份

(

  员工号    TEXT(4) PRIMARY KEY,

  姓名      TEXT(8),

  性别      TEXT(1),

  出生日期  DATETIME,

  部门      TEXT(25)

);

运行此查询,我们就创建好了与员工表结构一样的员工备份表,接下来我们创建如下SQL查询:

Insert INTO 员工备份

Select *

FROM 员工;

运行后,系统会提示将向员工备份表中追加三条记录,确认后操作完成,这时我们打开员工备份表,会看到如下内容:

员工号  姓名    性别    出生日期    部门

0001    李丽婷    1992/2/4 星期二 人力资源部

0002    杨星梦    1996/4/22 星期一    财务部

0003    罗贤兴    1995/3/25 星期六    办公室

这表明我们的追加记录查询正确无误的被执行了。当然,我们也可以书写完整的追加查询语句,如:

Insert INTO 员工备份

(

  员工号,

  姓名,

  性别,

  出生日期,

  部门

)

Select 员工号,姓名,性别,出生日期,部门

FROM 员工;

我们先删除前面向员工备份表中插入的数据,然后执行上面的插入语句,效果与前面的插入效果相同。

二、利用Insert INTO语句插入多条非表中的记录

上面是一次插入多条记录,记录来源是在一个表中。如果数据还没有录入到表中,那我们能否利用子查询语句来实现一次插入多条记录呢?下面我们来试一下,先创建一个这样的查询语句:

Insert INTO 员工

(

  员工号,

  姓名,

  性别,

  出生日期,

  部门

)

Select '0004','张三峰','',#1994-10-08#,'后期保障部';

执行,系统向表中插入了一条新的记录,这说明这样没FROMSelect子句是正确的,可以使用,只不过这有点类似于VALUES子句,并没有扩展什么功能。我们再为拓展一下,把SQL语句变成这样:

Insert INTO 员工

(

  员工号,

  姓名,

  性别,

  出生日期,

  部门

)

Select DISTINCTROW *

FROM (Select '0005' AS 员工号,'李玉珊' AS 姓名,'' AS 性别,#1993-01-18# AS 出生日期,'物资供应部' AS 部门 FROM MSysObjects UNION

      Select '0006' AS 员工号,'刘和珍' AS 姓名,'' AS 性别,#1994-09-23# AS 出生日期,'人力资源部' AS 部门 FROM MSysObjects UNION

      Select '0007' AS 员工号,'赵心和' AS 姓名,'' AS 性别,#1991-07-28# AS 出生日期,'后期保障部' AS 部门 FROM MSysObjects UNION

      Select '0008' AS 员工号,'孙小雨' AS 姓名,'' AS 性别,#1996-03-28# AS 出生日期,'物资供应部' AS 部门 FROM MSysObjects UNION

      Select '0009' AS 员工号,'周正龙' AS 姓名,'' AS 性别,#1991-12-26# AS 出生日期,'人力资源部' AS 部门 FROM MSysObjects UNION

      Select '0010' AS 员工号,'尚丰硕' AS 姓名,'' AS 性别,#1992-09-29# AS 出生日期,'人力资源部' AS 部门 FROM MSysObjects) AS temp;

运行这条语句,发现成功了,可以一次插入多条数据了,打开员工表查看是这表的:

员工号  姓名    性别    出生日期    部门

0001    李丽婷    1992/2/4 星期二 人力资源部

0002    杨星梦    1996/4/22 星期一    财务部

0003    罗贤兴    1995/3/25 星期六    办公室

0004    张三峰    1994/10/8 星期六    后期保障部

0005    李玉珊    1993/1/18 星期一    物资供应部

0006    刘和珍    1994/9/23 星期五    人力资源部

0007    赵心和    1991/7/28 星期日    后期保障部

0008    孙小雨    1996/3/28 星期四    物资供应部

0009    周正龙    1991/12/26 星期四   人力资源部

0010    尚丰硕    1992/9/29 星期二    人力资源部

这表明语句正确,操作结果也没问题,达到了我们的目的。需要说明的是:MsysObjects 是系统表,只要创建对象,此表中就一定有记录,此表也可以用其它表代替,不过要保证表中至少有一条记录,至于记录的内容在此无关紧要。

也可以把SQL语句写成这样,效果是一样的:

Insert INTO 员工

Select *

FROM (Select TOP 1 '0011' AS 员工号,'张三' AS 姓名,'' AS 性别,#1993-01-18# AS 出生日期,'物资供应部' AS 部门 FROM MSysObjects UNION

      Select TOP 1 '0012' AS 员工号,'李四' AS 姓名,'' AS 性别,#1994-09-23# AS 出生日期,'人力资源部' AS 部门 FROM MSysObjects UNION

      Select TOP 1 '0013' AS 员工号,'王五' AS 姓名,'' AS 性别,#1991-07-28# AS 出生日期,'后期保障部' AS 部门 FROM MSysObjects UNION

      Select TOP 1 '0014' AS 员工号,'孙六' AS 姓名,'' AS 性别,#1996-03-28# AS 出生日期,'物资供应部' AS 部门 FROM MSysObjects UNION

      Select TOP 1 '0015' AS 员工号,'赵七' AS 姓名,'' AS 性别,#1991-12-26# AS 出生日期,'人力资源部' AS 部门 FROM MSysObjects UNION

      Select TOP 1 '0016' AS 员工号,'吴八' AS 姓名,'' AS 性别,#1992-09-29# AS 出生日期,'人力资源部' AS 部门 FROM MSysObjects) AS temp;



Access软件网QQ交流群 (群号:54525238)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

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