mysql 有没有copy fro命令m

mysql 有没有copy fro命令m,第1张

在利用数据库开发时,常常会将一些表之间的数据互相导入。当然可以编写程序实现,但是,程序常常需要开发环境,不方便。最方便是利用sql语言直接导入。既方便而修改也简单。以下就是导入的方法。

1、 表结构相同的表,且在同一数据库(如,table1,table2)

Sql :

复制代码代码如下:

insert into table1 select *from table2 (完全复制)

insert into table1 select distinct * from table2(不复制重复纪录

insert into table1 select top 5 * from table2 (前五条纪录)

2、不在同一数据库中(如,db1 table1,db2 table2)

sql:

[code]

insert into db1.table1 select *from db2.table2 (完全复制)

insert into db1.table1 select distinct * from db2table2(不复制重复纪录)

insert into tdb1.able1 select top 5 * from db2table2 (前五条纪录)

3、表结构不同的表或复制部分纪录(如,dn_user,dn_user2)

a. 建一个新表[DN_UserTemp](在老表dn_user上增加一列)

复制代码代码如下:

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的数据拷入dn_usertemp

sql:insert into dn_usertemp select * from dn_user2

c.将dn_usertemp 拷入dn_user

首先,两个大表做join *** 作,速度肯定不会太快。

其次查查两个表的number字段是不是有索引。

再次你没有做limit,最终结果集会非常大,大量数据从服务端传到客户端会非常耗时。

最后看看服务器配置以及mysql的配置文件,是不是缓冲区开得太小了。

FOR UPDATE 是一种行级锁,又叫排它锁。仅适用于 InnoDB ,并且必须开启事务,在 BEGIN 与 COMMIT 之间才生效。

开启两个 MySQL 命令窗口

当 命令窗口1 执行完 SELECT ... FOR UPDATE 后(此时事务还未结束), 命令窗口2 执行 SELECT ... FOR UPDATE 语句时将会阻塞在那,直到 命令窗口1 中的事务结束(执行完 COMMIT )。

其中一个使用场景是用于修改订单状态,修改订单状态往往需要两个步骤:

当有两个任务同时请求时,有可能出现如下情况:

其中,任务B将订单状态改为3的前提是订单状态为1,但是上述情况下任务B修改订单时订单状态已变成2了,并不符合预期,通过 SELECT ... FRO UPDATE 就可以解决上述问题。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8549372.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-17
下一篇 2023-04-17

发表评论

登录后才能评论

评论列表(0条)

保存