如何用sql語句復制一張表
這個應該介紹的很詳細了。
1、復制表結構及數據到新表
CREATE TABLE 新表 SELECT * FROM 舊表
這種方法會將oldtable中所有的內容都拷貝過來,當然我們可以用delete from newtable;來刪除。
不過這種方法的一個最不好的地方就是新表中沒有了舊表的primary key、Extra(auto_increment)等屬性。需要自己用"alter"添加,而且容易搞錯。
2、只復制表結構到新表
CREATE TABLE 新表 SELECT * FROM 舊表 WHERE 1=2
或CREATE TABLE 新表 LIKE 舊表
3、復制舊表的數據到新表(假設兩個表結構一樣)
INSERT INTO 新表 SELECT * FROM 舊表
4、復制舊表的數據到新表(假設兩個表結構不一樣)
INSERT INTO 新表(字段1,字段2,。。.) SELECT 字段1,字段2,。。 FROM 舊表
5、可以將表1結構復制到表2
SELECT * INTO 表2 FROM 表1 WHERE 1=2
6、可以將表1內容全部復制到表2
SELECT * INTO 表2 FROM 表1
7、show create table 舊表;
這樣會將舊表的創建命令列出。我們只需要將該命令拷貝出來,更改table的名字,就可以建立一個完全一樣的表
如何復制表
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
擴展資料:
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語句復制表-sql語句復制表結構-sql復制表數據
復制表和所有的數據以及表結構。
缺點就是主鍵和默認值都會沒有需要重新設置select * into [新表名] from [舊表名] 注釋:要帶上原表的前綴 dbo.復制表(及數據)create table [新表名] as select * from [舊表名] 復制表結構create table [新表名] as select * from [舊表名] where 1=2sql復制表數據insert into [新表名] select * from [舊表名] 注釋:前提就是舊表和新表都需要在這是百度空間地址: http://**goodhyj/blog/item/*。
求sql語句,一個表復制到另一個表
由于表111和222 兩張表的結構不同,要將表222復制到表111里面,編寫一個能成功運行的SQL語句須要考慮很多因素:
1)字段數要匹配。插入和被插入的字段數要相同,例如表111 只5個字段而表222卻有6個 字段,全部復制就會失敗;
2)對應字段的類型要相同或者兼容。假如表111 字段a的類型為數值,表222 字段f的類型為文本,當字段f下有不兼容的值如"A3“插入字段a時系統就會報錯;
3)被插入的字段是否允許空值。例如表111 字段b不允許空值且未設定默認值,當碰到表222 字段f下有空值插入表111 字段a時,系統就會報錯;
4)插入的值必須符合被插入字段的有效性規則。例如表111 字段b只允許插入1到1000之間的整數,而當表222 的對應字段含有不在該范圍的記錄時,插入就會失敗;
5)當然還有其他很多因素,比如字段的大小是否足夠容納被插入的值否則可能遭受截斷、觸發器限制、運行權限等等這里不再一一列舉。
如果你能提供那兩張表的詳細結構、有效性規則,我可以為你編寫出正確的SQL代碼
SQL語句 怎么把一個表的數據復制到另外一個表里面
1、復制舊表的數據到新表(假設兩個表結構一樣)
INSERT INTO 新表 SELECT * FROM 舊表
2、復制舊表的數據到新表(假設兩個表結構不一樣)
INSERT INTO 新表(字段1,字段2,。。.) SELECT 字段1,字段2,。。 FROM 舊表
3、復制表結構及數據到新表
select * into 目標表名 from 源表名(要求目標表不存在,因為在插入時會自動創建)
4、只復制表結構到新表
CREATE TABLE 新表 SELECT * FROM 舊表 WHERE 1=2 即:讓WHERE條件不成立.
擴展資料
基本SQL語句
1、數據表的建立
CREATE TABLE 數據表名稱(字段1 類型1(長度),字段2 類型2(長度) …… )
2、 數據記錄篩選
sql="select * from 數據表 where字段名=字段值 order by字段名[desc]"
3、更新數據記錄
sql="update 數據表 set字段名=字段值 where 條件表達式"
4、刪除數據記錄
sql="delete from 數據表 where 條件表達式"
5、 添加數據記錄
sql="insert into 數據表 (字段1,字段2,字段3 …) values (值1,值2,值3 …)"
參考資料來源:搜狗百科-SQL
如何用sql,復制一個數據庫
SQL六種數據移動方法 1. 通過工具DTS的設計器進行導入或導出 DTS的設計器功能強大,支持多任務,也是可視化界面,容易操作,但知道的人一般不多,如果只是進行SQL Server數據庫中部分表的移動,用這種方法最好,當然,也可以進行全部表的移動。
在SQL Server Enterprise Manager中,展開服務器左邊的+,選擇數據庫,右擊,選擇All tasks/Import Data。(或All tasks/Export Data。)
,進入向導模式,按提示一步一步走就行了,里面分得很細,可以靈活的在不同數據源之間復制數據,很方便的。而且可以另存成DTS包,如果以后還有相同的復制任務,直接運行DTS包就行,省時省力。
也可以直接打開DTS設計器,方法是展開服務器名稱下面的Data Transformation Services,選Local Packages,在右邊的窗口中右擊,選New Package,就打開了DTS設計器。值得注意的是:如果源數據庫要拷貝的表有外鍵,注意移動的順序,有時要分批移動,否則外鍵主鍵,索引可能丟失,移動的時候選項旁邊的提示說的很明白,或者一次性的復制到目標數據庫中,再重新建立外鍵,主鍵,索引。
其實建立數據庫時,建立外鍵,主鍵,索引的文件應該和建表文件分開,而且用的數據文件也分開,并分別放在不同的驅動器上,有利于數據庫的優化。 2. 利用Bcp工具 這種工具雖然在SQL Server7的版本中不推薦使用,但許多數據庫管理員仍很喜歡用它,尤其是用過SQL Server早期版本的人。
Bcp有局限性,首先它的界面不是圖形化的,其次它只是在SQL Server的表(視圖)與文本文件之間進行復制,但它的優點是性能好,開銷小,占用內存少,速度快。有興趣的朋友可以查參考手冊。
3. 利用備份和恢復 先對源數據庫進行完全備份,備份到一個設備(device)上,然后把備份文件復制到目的服務器上(恢復的速度快),進行數據庫的恢復操作,在恢復的數據庫名中填上源數據庫的名字(名字必須相同),選擇強制型恢復(可以覆蓋以前數據庫的選項),在選擇從設備中進行恢復,瀏覽時選中備份的文件就行了。這種方法可以完全恢復數據庫,包括外鍵,主鍵,索引。
4. 直接拷貝數據文件 把數據庫的數據文件(*.mdf)和日志文件(*.ldf)都拷貝到目的服務器,在SQL Server Query Analyzer中用語句進行恢復: EXEC sp_attach_db @dbname = 'test ', @filename1 = 'd:\mssql7\data\test_* ', @filename2 = 'd:\mssql7\data\test_* ' 這樣就把test數據庫附加到SQL Server中,可以照常使用。如果不想用原來的日志文件,可以用如下的命令: EXEC sp_detach_db @dbname = 'test ' EXEC sp_attach_single_file_db @dbname = 'test ', @physname = 'd:\mssql7\data\test_* ' 這個語句的作用是僅僅加載數據文件,日志文件可以由SQL Server數據庫自動添加,但是原來的日志文件中記錄的數據就丟失了。
5. 在應用程序中定制 可以在應用程序(PB、VB)中執行自己編寫的程序,也可以在Query Analyzer中執行,這種方法比較靈活,其實是利用一個平臺連接到數據庫,在平臺中用的主要時SQL語句,這種方法對數據庫的影響小,但是如果用到遠程鏈接服務器,要求網絡之間的傳輸性能好,一般有兩種語句: 1> select 。 into new_tablename where 。
2> insert (into) old_tablename select 。 from 。
where 。 區別是前者把數據插入一個新表(先建立表,再插入數據),后者是把數據插入已經存在的一個表中,我個人喜歡后者,因為在編程的結構上,應用的范圍上,第二條語句強于前者。
6. SQL Server的復制功能 SQL Server提供了強大的數據復制功能,也是最不易掌握的,具體應用請參考相關資料,值得注意的是要想成功進行數據的復制工作,有些條件是必不可少的: 1> SQL Server Agent必須啟動,MSDTC必須啟動。 2> 所有要復制的表必須有主鍵。
3> 如果表中有text或image數據類型,必須使用with log選項,不能使用with no_log選項。 另外max text repl size選項控制可以復制的文本和圖像數據的最大規模,超過這個限制的操作將失敗。
4> 在要進行復制的計算機上,應該至少是隱含共享,即共享名是C$或D$…。 5> 為SQL Server代理使用的Windows NT帳號不能是一個本地的系統帳號,因為本地的系統帳號不允許網絡存取。
6> 如果參與復制的服務器在另外的計算機域中,必須在這些域之間建立信任關系。
如何用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 '*ver',@srvid OUT IF @err0 GOTO lb_Err--連接服務器 IF ISNULL(@UserName,N'')=N'' --使用 Windows 身份登錄 BEGIN EXEC @err=sp_oasetproperty @srvid,'loginsecure',-1 IF @err0 GOTO lb_Err EXEC @err=sp_oamethod @srvid,'connect',NULL,@servername END ELSE EXEC @err=sp_oamethod @srvid,'connect',NULL,@servername,@UserName,@pwd IF @err0 GOTO lb_Err--獲取數據庫集 EXEC @err=sp_oagetproperty @srvid,'databases',@Dbid OUT IF @err0 GOTO lb_Err--選擇源數據庫 EXEC @err=sp_oamethod @Dbid,'item',@S_dbid OUT,@Source_DB IF @err0 GOTO lb_Err--選擇目標數據庫 EXEC @err=sp_oamethod @Dbid,'item',@D_dbid OUT,@Des_DB IF @err0 GOTO lb_Err--設置復制的對象 EXEC @err=sp_oacreate '*er',@TransferID OUT IF @err0 GOTO lb_Err--設置目標服務器信息 EXEC @err=sp_oasetproperty @TransferID,'DestServer',@ServerName IF @err0 GOTO lb_Err --設置連接用戶 IF ISNULL(@UserName,N'')=N'' --使用 Windows 身份登錄 BEGIN EXEC @err=sp_oasetproperty @TransferID,'DestUseTrustedConnection',1 IF @err0 GOTO lb_Err END ELSE BEGIN EXEC @err=sp_oasetproperty @TransferID,'DestLogin',@UserName IF @err0 GOTO lb_Err EXEC @err=sp_oasetproperty @TransferID,'DestPassword',@pwd IF @err0 GOTO lb_Err END --設置復制對象信息 EXEC @err=sp_oasetproperty @TransferID,'DestDatabase',@Des_DB IF @err0 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'CopyAllStoredProcedures' 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 @err0 GOTO lb_Err FETCH tb INTO @src END CLOSE tb DEALLOCATE tb--復制對象 EXEC @err=sp_oamethod @S_dbid,'Transfer',null,@TransferID IF @err0 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 article (id,class,title,content) select id,'2',title,content from article where class='1'如果id為自動編號,就把改為:insert into article (class,title,content) select '2',title,content from article where class='1'如果class為數字類型,則去掉單引號。
.。