我有一个数据表mytable,里面包含20个字段,装了三百条记录。在用VC编程的时候,应该用什么方法最快地创建一个表yourtable,它的内容与表mytable相同。请教!谢谢!
解决方案 »
- 是C++编译器调用Windows API函数,还是Windows API函数里面封装了C/C++函数
- 程序突然变得特别慢
- 用RegEnumValue读取的注册表的值名和数据不知道如何用MFC输出
- 帮忙下载pudn上的资料,谢谢!
- 我问一个简单的问题(关于构造函数的问题)
- 使用Win32 SDK如何往Edit控件中添加一行文字?
- ATL组件如何响应菜单选择消息?
- 我不想在button显示字符,用图片代替,不知该怎么做?
- 过两个月就要当爸爸了,名字还没想好,特此有分征名,两天内结帐
- sizeof(struct) pragma pack(16)
- unistd.h头文件找不到?请高手来看一下!!万分感谢!
- 新手超简单问题,送分
SELECT...INTO 语句
创建制表检索.语法
SELECT field1[, field2[, ...]]INTO新表[IN外部数据库]
FROM源SELECT...INTO 语句可分为以下几个部分:部分 说明
field1, field2 欲复制至新表的字段的名称。
NewTable 欲创建的表的名称。它应遵循标准命名公约.如果 NewTable 的名称与现存表的名称相同时,将会发生可以捕捉到的错误。
Externaldatabase 进入外部数据库的路径。有关路径的描述,请参阅 IN 子句。
source 从其中选择记录的现存表的名称。它可以是单一表或多重表或一个查询。
说明
可以使用生成表查询来存档记录、生成表的复制备份、或生成输出至另一个数据库的表的副本、或用作定期显示数据的报表的依据。例如,可以每月运行一次同样的生成表查询,生成地区的销售月报。
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[yourtable]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[yourtable]然后再复制同样格式及内容的表,并改名为yourtable:
select * into into dbo.yourtable from mytable这两个sql语句即可完成。
(只复制结构,源表名:a 新表名:b)
SQL: select * into b from a where 1<>1说明:拷贝表(拷贝数据,源表名:a 目标表名:b)
insert into b(a, b, c) select d,e,f from a;
select * into dbo.yourtable from mytable另外说明一下,上面的第一句是判断数据库中是否已存在一个名叫yourtable的表,如果存在(例如你前面执行了一次select * into dbo.yourtable from mytable),如果存在是要先删除的,否则执行第二句将失败,因为新建表不能覆盖已存在的表。这样就必须先将它删除,然后才能重新新建。
还有以下二种方法也可以实现你想要的复制表数据目的:
第一种:将上面的第一句,先判断再删除改为不判断,不管数据库有无此表均执行删除:drop table [dbo].[yourtable],但是不作错误检测,因为第一次新建时是不存在这个yourtable表的,如果执行删除,肯定要失败,所以我们可以不管它的执行结果,反正如果存在就会被删除,当然你也可以一开始使用时就先手动创建一个叫yourtable的表,这样第一次执行删除时也不会出错了。
然后select * into dbo.yourtable from mytable就OK了。第二种,在系统开始使用前用select * into dbo.yourtable from mytable 创建一个叫yourtable的与mytable相同结构的表,里面有无数据无所谓。然后在软件里采用插入数据的方法实现:
先删除yourtable里的数据:
delete * from yourtable
再全面插入mytable里面的数据:
insert into yourtable select * from mytable
也OK...如果你的mytable表里的数据每次都是新增的而不存在更改,例如操作记录,那么这就表示以前插入过的数据是可以保留的没必要先删除,这样可以提高处理效率:
insert into yourtable select * from mytable where ID not in(select ID from yourtable)(注:其中ID字段是你的mytable表的主键或唯一识别号,例如你是以userID为主键,则上面的ID,就改为userID)
这样就可以只插入yourtable里没有记录了.在VC里的具体实现就不用说了吧?跟运行别的SQL命令一样的。祝成功。