| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1376 人关注过本帖
标题:关于“INSERT”命令的用法
只看楼主 加入收藏
XQXOXQX
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-10-14
结帖率:100%
收藏
 问题点数:0 回复次数:3 
关于“INSERT”命令的用法
把A表的一个字段变量,可以用“INSERT”命令赋值到B表的尾部吗?如果可以,我想要它的详细用法。
2012-10-15 00:48
cxzbzgz
Rank: 8Rank: 8
来 自:云南楚雄
等 级:贵宾
威 望:24
帖 子:297
专家分:808
注 册:2012-6-15
收藏
得分:0 
INSERT - SQL 命令详解

INSERT INTO dbf_name [(FieldName1 [, FieldName2, ...])]
   VALUES (eExpression1 [, eExpression2, ...])
 
INSERT INTO dbf_name FROM ARRAY ArrayName | FROM MEMVAR | FROM NAME ObjectName
 
INSERT INTO dbf_name [(FieldName1 [, FieldName2, ...])]
   SELECT SELECTClauses [UNION UnionClause SELECT SELECTClauses ...]

参数
INSERT INTO dbf_Name
指定要添加新记录的表名。dbf_Name 可以包含路径,也可以是一个名称表达式。
[( FieldName1 [, FieldName2 [,?...]])]
指定要插入值的新记录中的字段名。
VALUES (eExpression1 [, eExpression2 [,?...]])
   指定插入新记录中的字段值。若省略字段名,则必须用表结构定义的顺序指定字段值。若 eExpression 是一个字段名,则其必须包含表别名。若 SET NULL 为 ON,则 INSERT 试图在任何 VALUES 子句中没有指定的字段中插入空白值(null)。
FROM Source
   指定插入的数据来自数组、内存变量、还是 Visual FoxPro 对象。下面为 Source 列出了可用项:
ARRAY
   ArrayName 指定数组,数组的数据被插入到新记录。 从第一个元素开始,数组元素的内容被插入到记录的相应字段。第一个数组元素的内容被插入到新记录的第一个字段;第二个数组元素的内容被插入到第二个字段,以此类推。 当包含 FROM ARRAY 子句时,Visual FoxPro 忽略任何字段默认值。
MEMVAR
   MEMVAR 指定将内存变量的内容插入到与变量同名的字段中。若不存在与字段同名的内存变量,则该字段为空(empty)。
NAME *NEW ObjectName 指定一个有效的 Visual FoxPro 对象,其属性名与表中的字段名匹配,从而使您可以插入包含对象属性值的新记录。可以指定任何有效的 Visual FoxPro 对象,您可以用 SCATTER...NAME 命令创建它。更多的信息,请参见 SCATTER 命令。 若不存在与对象属性相匹配的字段,则 Visual FoxPro 忽略此字段,并且像使用 APPEND BLANK 命令一样将其置为空。 若对象属性的类型与表中字段类型不匹配,则 Visual FoxPro 产生一条数据类型不匹配的消息。 注意:
   当指定的对象派生于 Visual FoxPro 类时,应小心使用,因为许多固有属性可能与字段的类型不同,而且不能改变。
 
   若表中存在自动增量字段,除非为数据工作期设置 SET AUTOINCERROR 命令为 OFF,否则不能存在匹配自动增量字段的对象属性。否则,Visual FoxPro 将产生一条错误。若在 SET AUTOINCERROR 设置为 ON 时使用 SCATTER...NAME 创建对象,则可以使用 REMOVEPROPERTY( ) 函数移去任何自动增量属性,从而避免产生错误。更多的信息,请参见 SET AUTOINCERROR 命令 和REMOVEPROPERTY( ) 函数。
   数组、内存变量、或对象在 Visual FoxPro OLE DB 提供程序中不被支持。
SELECT SELECTClauses [UNION UnionClause SELECT SELECTClauses?...]
   为了插入另一个表或临时表,使用一条或多条 SQL SELECT 语句,从一张表或临时表中获取数据。但是,SELECT 语句不能包含任何非 SQL 语句,比如:INTO、TO、和 PREFERENCE 子句;NOFILTER、READWRITE、NOCONSOLE、PLAIN、和 NOWAIT 选项。想要第一条 SQL SELECT 语句结合另外的 SQL SELECT 语句,可以使用 UNION 子句。有关包含 UNION 子句的 SQL SELECT 命令的语法,请参见 SELECT - SQL 命令。 注意:*NEW
当使用包含 SELECT 语句的 SQL INSERT 命令时,应确保插入的数据与被插入的表中的数据类型相同。Visual FoxPro 试图将用 SQL SELECT 创建的临时表中的数据类型,转换为插入数据的对应表或临时表的列的数据类型。如果插入的数据不兼容,则可能丢失数据的精度,或日期型数据转换为字符型数据,等等。 

说明
如果指定表打开了,则 SQL INSERT 添加新记录到表中。如果表在非当前工作区中打开,则添加记录后也不会选择该工作区;当前工作区一直保持选中。

如果指定表没有打开,则 Visual FoxPro 在新工作区中打开它,并添加新记录到表中。新工作区不被选中;当前工作区一直保持选中。

执行 SQL INSERT 命令期间,当前工作区变为要插入新记录的工作区。换句话说,执行 SQL INSERT 命令时,不管发出命令之前的工作区是哪个,执行期间的工作区都是要插入新记录的表所在的工作区。

执行 INSERT 命令之后,Visual FoxPro 将记录指针定位在新记录上。

若包含 SQL SELECT 语句,则 Visual FoxPro 用插入的行数更新 _TALLY 系统内存变量。更多的信息,请参见 _TALLY 系统内存变量。

示例 1
下例打开 Employee 表,并添加一条记录。

USE employee
INSERT INTO employee (emp_no, fname, lname, officeno) ;
   VALUES (3022, "John", "Smith", 2101)

示例 2
下例用 USE 命令打开数据库 TestData.dbc 中的 Customer 表,然后用 SCATTER 命令将当前记录的内容复制到内存变量中。用 COPY STRUCTURE 将表结构复制到名为 Cust2 的新表。

用 INSERT 命令从内存变量中插入新记录到 Cust2 表。用 SELECT 命令从 Cust2 表重新中获得数据,然后用 BROWSE 显示新记录。

清理,用没有指定表名的 USE 命令关闭当前工作区中的表,然后用 DELETE 删除 Cust2。

CLOSE DATABASES
CLEAR
OPEN DATABASE (HOME(2) + 'Data\TestData')
USE Customer
SCATTER MEMVAR
COPY STRUCTURE TO Cust2
INSERT INTO Cust2 FROM MEMVAR
SELECT CUST2
BROWSE
USE
DELETE FILE cust2.dbf

示例 3
下例用 SELECT 语句返回的 Orders 表的结果,将数据插入到 OrdersArchive 表。

  复制代码
INSERT INTO OrdersArchive (order_id, order_date, ship_name) ;
   SELECT order_id, order_date, ship_name FROM Orders ;
      WHERE order_date >= (DATE()-30)

学习交流VFP,QQ:248561326。
2012-10-15 08:39
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:0 
楼主的口气象是技校里天天抄作业的小霸王。
2012-10-15 14:06
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
建议楼主遇到问题先看看帮助文件,可能收效会更快些。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2012-10-15 21:12
快速回复:关于“INSERT”命令的用法
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018870 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved