① sql语句实现一个表数据直接复制到新表
原表存在的话这样用:
insert into a select * from b
原表不存在的话这样用:
select * into a from b
这是SqlServer的用法,Oracle还有却别的,下面是Oracle的用法
原表存在的话这样用:
insert into a select * from b
原表不存在的话这样用:
create table a as select * from b
以上,希望对你有所帮助!
② 如何用SQL语句复制表的结构,复制整个数据库
1.复制表结构:只能复制表的字段,不能复制主键、索引等
select top 0 * into 新表名 from 原表名
2.复制整个数据库结构及数据:
create datebase Test --创建目标数据库
exec P_CopyDB @Source_DB='aspnet',@Des_DB='test' --把源数据库整个复制到目标数据库
P_CopyDB存储过程创建过程如下
-----------------------创建存储过程开始--------------------
create proc P_CopyDB
@Des_DB sysname, --目标数据库
@Obj_Type nvarchar(4000)=N'',--复制的对象类型,可以是下列字符串行表:
-- O 所有对象,D 默认值,R 规则,P 存储过程
-- T 表,TR 触发器,DT 用户定义数据类型
-- V 视图,DATA 数据,DEL 删除目标对象
@Source_DB sysname=N'', --源数据库
@ServerName sysname=N'', --服务器名
@UserName sysname=N'', --用户名,不指定则表示使用 Windows 身份登录
@pwd sysname=N'' --密码
AS
SET NOCOUNT ON
DECLARE @srvid int,@Dbid int,@S_dbid int,@D_dbid int,@TransferID int,
@err int,@src varchar(255), @desc varchar(255)
IF ISNULL(@ServerName,N'')=N'' SET @ServerName='.'--默认为本地数据库
IF ISNULL(@Source_DB,N'')=N'' SET @Source_DB=DB_NAME()
--创建sqldmo对象·
EXEC @err=sp_oacreate 'sqldmo.sqlserver',@srvid OUT
IF @err<>0 GOTO lb_Err
--连接服务器
IF ISNULL(@UserName,N'')=N'' --使用 Windows 身份登录
BEGIN
EXEC @err=sp_oasetproperty @srvid,'loginsecure',-1
IF @err<>0 GOTO lb_Err
EXEC @err=sp_oamethod @srvid,'connect',NULL,@servername
END
ELSE
EXEC @err=sp_oamethod @srvid,'connect',NULL,@servername,@UserName,@pwd
IF @err<>0 GOTO lb_Err
--获取数据库集
EXEC @err=sp_oagetproperty @srvid,'databases',@Dbid OUT
IF @err<>0 GOTO lb_Err
--选择源数据库
EXEC @err=sp_oamethod @Dbid,'item',@S_dbid OUT,@Source_DB
IF @err<>0 GOTO lb_Err
--选择目标数据库
EXEC @err=sp_oamethod @Dbid,'item',@D_dbid OUT,@Des_DB
IF @err<>0 GOTO lb_Err
--设置复制的对象
EXEC @err=sp_oacreate 'SQLDMO.Transfer',@TransferID OUT
IF @err<>0 GOTO lb_Err
--设置目标服务器信息
EXEC @err=sp_oasetproperty @TransferID,'DestServer',@ServerName
IF @err<>0 GOTO lb_Err
--设置连接用户
IF ISNULL(@UserName,N'')=N'' --使用 Windows 身份登录
BEGIN
EXEC @err=sp_oasetproperty @TransferID,'DestUseTrustedConnection',1
IF @err<>0 GOTO lb_Err
END
ELSE
BEGIN
EXEC @err=sp_oasetproperty @TransferID,'DestLogin',@UserName
IF @err<>0 GOTO lb_Err
EXEC @err=sp_oasetproperty @TransferID,'DestPassword',@pwd
IF @err<>0 GOTO lb_Err
END
--设置复制对象信息
EXEC @err=sp_oasetproperty @TransferID,'DestDatabase',@Des_DB
IF @err<>0 GOTO lb_Err
DECLARE tb CURSOR FAST_FORWARD LOCAL
FOR
SELECT Name FROM(
SELECT KeyWord=N',D,', Name=N'CopyAllDefaults' UNION ALL
SELECT KeyWord=N',O,', Name=N'CopyAllObjects' UNION ALL
SELECT KeyWord=N',R,', Name=N'CopyAllRules' UNION ALL
SELECT KeyWord=N',P,', Name=N'CopyAllStoredProceres' UNION ALL
SELECT KeyWord=N',T,', Name=N'CopyAllTables' UNION ALL
SELECT KeyWord=N',TR,', Name=N'CopyAllTriggers' UNION ALL
SELECT KeyWord=N',DT,', Name=N'CopyAllUserDefinedDatatypes' UNION ALL
SELECT KeyWord=N',V,', Name=N'CopyAllViews' UNION ALL
SELECT KeyWord=N',DATA,',Name=N'CopyData' UNION ALL
SELECT KeyWord=N',DEL,', Name=N'DropDestObjectsFirst'
)A WHERE CHARINDEX(KeyWord,
CASE WHEN ISNULL(@Obj_Type,N'')='' THEN ',O,DATA,' ELSE @Obj_Type END)>0
OPEN tb
FETCH tb INTO @src
WHILE @@FETCH_STATUS=0
BEGIN
EXEC @err=sp_oasetproperty @TransferID,@src,1
IF @err<>0 GOTO lb_Err
FETCH tb INTO @src
END
CLOSE tb
DEALLOCATE tb
--复制对象
EXEC @err=sp_oamethod @S_dbid,'Transfer',null,@TransferID
IF @err<>0 GOTO lb_Err
--结束
SET @err=0
GOTO lb_Exit
--错误处理
lb_Err:
EXEC sp_oageterrorinfo NULL, @src OUT, @desc OUT
RAISERROR(N'错误编号 %#x, 错误源 "%s", 错误描述 "%s"',16,1,@err,@src,@desc)
RETURN -1
lb_Exit:
EXEC sp_OADestroy @Dbid
EXEC sp_OADestroy @srvid
EXEC sp_OADestroy @TransferID
RETURN @err
GO
-----------------------创建存储过程结束--------------------
③ sql,如何在同一个表中复制一条记录
insert into tablename (这里列出除了ID的所有列) (select 这里列出除了ID的所有列 from tablename where id = 指定复制的ID)
④ SQL SERVER 数据库的表怎么复制
方式一、如果写代码
select * into [目标数据库B].DBO.表名 from. [源数据库A].DBO.表名
方式二、如果不写代码,可以用导入的方式
复制表结构(如果目标数据库已经存在,此步跳过)
1、打开并连接Sql Server,在源数据库DATA_A(源数据库名称)上右键,然后依次点击“编写表脚本为”→“CREATE到”→“新查询编辑器窗口”。
2、在第1步产生的编辑器中按”crtl+a“组合键全选内容,然后右键“复制“(或按"crtl+c"键)。
3、新建查询,然后右键“粘贴”(或ctrl+v);如图所示,将代码中DATA_A(源数据库名)改为DATA_B(目标数据库名)。接着右键单击”执行“执行代码。
4、在目标数据库的表结构中就可以看到被复制过来的表了。
表的数据内容复制
选中目标数据库DATA_B然后点击”任务“→”导入数据“。
进入”SQL Server导入导出向导“,根据提示步骤操作。
选择数据源(源数据库)。
选择目标(目标数据库)、指定表复制或查询。
选择源表和源视图:设置源表和目标表后,单击“编辑映射”按钮,在弹出窗口中选中“启用标识插入”。(否则后面会出错)
一直点击“下一步”至最后完成操作。
⑤ sql表复制,怎么把一个表中的数据复制到另一个表中
Insert into 目标表(字段列表) select 字段列表 from 原始表
⑥ SQL 同一表中复制数据
一楼答案基本是正确的不知道楼主理解了没有
格式是这个样子的
insert into 表(月份,字段2,字段3,字段4...)
select '201007',字段2,字段3,字段4...
from 表
where 表.月份='201006'
思想就是先把满足条件的数据(其中月份字段不取)取出来然后和你要的日期一起插入原来的表中
楼主可以试试,不行再细细解释给你
⑦ 如何复制表SQL
1、既复制表结构也复制表内容的SQL语句:
CREATE TABLE tab_new AS SELECT * FROM tab_old;
2、只复制表结构不复制表内容的SQL语句:
CREATE TABLE tab_new AS SELECT * FROM tab_old WHERE 1=2;
3、不复制表结构,只复制内容的sql语句:
SELECT vale1, value2 into Table2 from Table1
(7)sql复制表数据扩展阅读:
SQL中常用的语句:
1、说明:创建数据库
CREATE DATABASE database-name
2、说明:删除数据库
drop database dbname
3、说明:创建新表
create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)
根据已有的表创建新表:
A:create table tab_new like tab_old (使用旧表创建新表)
B:create table tab_new as select col1,col2… from tab_old definition only
4、说明:删除新表
drop table tabname
5、说明:增加一个列
Alter table tabname add column col type
6、说明:添加主键
Alter table tabname add primary key(col)
7、说明:删除主键
Alter table tabname drop primary key(col)
8、说明:创建索引
create [unique] index idxname on tabname(col….)
9、删除索引
drop index idxname
⑧ 如何用sql语句复制一张表
1、原表存在的话这样用:insert into a select * from b
2、原表不存在的话这样用:select * into a from b
⑨ sql中怎么把一个表的数据复制到另一个表中
不同的数据库语法不同(SQL Server和Oracle为例),且复制包括目标表已存在和目标表不存在的情况,分别回答:
SQL Server中,如果目标表存在:
1
insert into 目标表 select * from 原表;
SQL Server中,,如果目标表不存在:
1
select * into 目标表 from 原表;
Oracle中,如果目标表存在:
1
2
insert into 目标表 select * from 原表;
commit;
Oracle中,如果目标表不存在:
1
create table 目标表 as select * from 原表;