在利用數(shù)據(jù)庫(kù)開(kāi)發(fā)時(shí),常常會(huì)將一些表之間的數(shù)據(jù)互相導(dǎo)入。當(dāng)然可以編寫(xiě)程序?qū)崿F(xiàn),但是,程序常常需要開(kāi)發(fā)環(huán)境,不方便。最方便是利用sql語(yǔ)言直接導(dǎo)入。既方便而修改也簡(jiǎn)單。以下就是導(dǎo)入的方法。
10多年專注成都網(wǎng)站制作,成都定制網(wǎng)站,個(gè)人網(wǎng)站制作服務(wù),為大家分享網(wǎng)站制作知識(shí)、方案,網(wǎng)站設(shè)計(jì)流程、步驟,成功服務(wù)上千家企業(yè)。為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù),專注于成都定制網(wǎng)站,高端網(wǎng)頁(yè)制作,對(duì)成都集裝箱等多個(gè)領(lǐng)域,擁有豐富的網(wǎng)站營(yíng)銷經(jīng)驗(yàn)。
1、 表結(jié)構(gòu)相同的表,且在同一數(shù)據(jù)庫(kù)(如,table1,table2)
Sql :
復(fù)制代碼代碼如下:
insert into table1 select * from table2 (完全復(fù)制)
insert into table1 select distinct * from table2(不復(fù)制重復(fù)紀(jì)錄)
insert into table1 select top 5 * from table2 (前五條紀(jì)錄)
2、不在同一數(shù)據(jù)庫(kù)中(如,db1 table1,db2 table2)
sql:
[code]
insert into db1.table1 select * from db2.table2 (完全復(fù)制)
insert into db1.table1 select distinct * from db2table2(不復(fù)制重復(fù)紀(jì)錄)
insert into tdb1.able1 select top 5 * from db2table2 (前五條紀(jì)錄)
3、表結(jié)構(gòu)不同的表或復(fù)制部分紀(jì)錄(如,dn_user,dn_user2)
a. 建一個(gè)新表[DN_UserTemp](在老表dn_user上增加一列)
復(fù)制代碼代碼如下:
CREATE TABLE [DN_UserTemp] ( [Num] [numeric](18, 0) IDENTITY (1, 1) NOT NULL)
[Id] [idtype] NOT NULL ,
[Name] [fntype] NOT NULL ,
[Descript] [dstype] NULL ,
[LogonNm] [idtype] NOT NULL ,
[Password] [idtype] NULL ,
[Gender] [char] (1) NULL ,
[Quited] [booltype] NOT NULL,
[OffDuty] [booltype] NOT NULL ,
[Stopped] [booltype] NOT NULL,
[OSBind] [booltype] NOT NULL,
[Domain] [idtype] NULL ,
[EMail] [fntype] NULL ,
[UnitId] [idtype] NULL ,
[BranchId] [idtype] NULL ,
[DutyId] [idtype] NULL ,
[LevelId] [idtype] NULL ,
[ClassId] [idtype] NULL ,
[TypeId] [idtype] NULL ,
[IP] [varchar] (15) COLLATE Chinese_PRC_CI_AS NULL ,
[ExpireDT] [datetime] NULL ,
[Sort] [int] NOT NULL ,
[AllowDel] [booltype] NOT NULL,
[UnitChief] [booltype] NOT NULL,
[BranchChief] [booltype] NOT NULL ,
[UnitDeputy] [booltype] NOT NULL ,
[BranchDeputy] [booltype] NOT NULL ,
[Num] [numeric](18, 0) IDENTITY (1, 1) NOT NULL
) ON [PRIMARY]
b. 將dn_uer2的數(shù)據(jù)拷入dn_usertemp
sql:insert into dn_usertemp select * from dn_user2
c.將dn_usertemp 拷入dn_user
sql:
復(fù)制代碼代碼如下:
declare @i int
declare @j int
declare @Name fntype
set @i=1
select @j=count(*) from dn_usertemp
while @i@j 1
begin
select @Name=Name from dn_usertemp where Num=@i
print @Name
insert into dn_user (Name) values (@Name) where Num=@i
select @i=@i 1
end
MySql數(shù)據(jù)庫(kù)復(fù)制表數(shù)據(jù)
將 production 數(shù)據(jù)庫(kù)中的 mytbl 表快速?gòu)?fù)制為 mytbl_new,2個(gè)命令如下:
復(fù)制代碼代碼如下:
CREATE TABLE mytbl_new LIKE production.mytbl;
INSERT mytbl_new SELECT * FROM production.mytbl;
第一個(gè)命令是創(chuàng)建新的數(shù)據(jù)表 mytbl_new ,并復(fù)制 mytbl 的數(shù)據(jù)表結(jié)構(gòu)。
第二個(gè)命令是講數(shù)據(jù)表 mytbl 中的數(shù)據(jù)復(fù)制到新表 mytbl_new 。
注:production.mytbl是指定要復(fù)制表的數(shù)據(jù)庫(kù)名稱為 production 。它是可選的。
假如沒(méi)有production. ,MySQL數(shù)據(jù)庫(kù)將會(huì)假設(shè)mytbl在當(dāng)前操作的數(shù)據(jù)庫(kù)。
另外:在mysql數(shù)據(jù)庫(kù)中復(fù)制數(shù)據(jù)為:
復(fù)制代碼代碼如下:
select * into desTable from sourceTable在mssql中支持,在mysql中不支持
insert into desTable select * from sourceTable
這個(gè)確實(shí)簡(jiǎn)單
mysql支持這種復(fù)制
語(yǔ)法:
insert
into
`tb`(`field1`,`field2`..)
select
`field1`,`field2`..
from
`tb`;
注意修改為你自己的表名和字段名
兩個(gè)字段列表(`field1`,`field2`..)數(shù)量要相同
你要全字段復(fù)制,就把除了自增字段之外的所有字段都列出來(lái)
可用update語(yǔ)句來(lái)更改,但要注意,兩列的屬性及長(zhǎng)度應(yīng)盡量保持一致,或被更改的列的長(zhǎng)度大于另一列的長(zhǎng)度,否則在update過(guò)程中容易報(bào)錯(cuò)。
1、創(chuàng)建測(cè)試表,插入數(shù)據(jù):
create?table?test
(id?int,
name?varchar(10),
name1?varchar(10))
insert?into?test?values?(1,'a','s')
insert?into?test?values?(2,'b','w')
insert?into?test?values?(3,'c','x')
數(shù)據(jù)如下:
2、現(xiàn)在要將name1的內(nèi)容更改為name中的內(nèi)容,可用如下語(yǔ)句:
update?test?set?name1=name;
3、更改后的結(jié)果如圖(此時(shí)name和name1列的內(nèi)容就相同了):
你建表復(fù)制就可以了,例如CREATE TABLE aa AS SELECT * FROM tree;這是完全復(fù)制tree表的數(shù)據(jù)及表結(jié)構(gòu)到aa表中。假如要復(fù)制某些字段的話,如:insert into 表名user(表中字段sal) select sal from emp;插入某一列sal到user表中,從emp表中獲取sal的數(shù)據(jù)信息。最后提醒下,Oracle和MySql復(fù)制表建表 一樣,可以自己建表結(jié)構(gòu),再?gòu)?fù)制數(shù)據(jù);也可以復(fù)制部分列和部分?jǐn)?shù)據(jù),分開(kāi)操作。 但要保證數(shù)據(jù)類型一致,插入指定列數(shù),列數(shù)要相同,列的長(zhǎng)度空間大就可以了。
看不出你上面究竟是怎樣效果,復(fù)制前后A列、B列是什么,你是用什么符號(hào)分隔,希望自己多琢磨提問(wèn)的技巧。
修改一個(gè)表的所有列的內(nèi)容,可以使用下面的SQL語(yǔ)句:
UPDATE 表名 SET B列名=CONCAT(B列名,",",A列名)
上面表示把原來(lái)B列、逗號(hào)、A列三個(gè)內(nèi)容聯(lián)合起來(lái)賦予B列
mysql里如何最快速度從一張表里取3列的值復(fù)制到另一張表里,有1億條數(shù)據(jù)
一、復(fù)制表里面的一條記錄并插入表里面
① insert into article(title,keywords,desc,contents) select title,keywords,desc,contents from article where article_id = 100;
二、復(fù)制表里的多條數(shù)據(jù)/記錄,并插入到表里面
① INSERT INTO `power_node`(title,type,status) SELECT title,type,status FROM power_node WHERE id 5;
② INSERT into jiaban (num,overtime) SELECT num,overtime from jiaban where id IN(1,3,5,6,7,9);
三、在創(chuàng)建表時(shí),就插入另一張表里面的某些數(shù)據(jù)
① create table user AS select * from member where id 10