mysql临时表

//mysql从a表复制数据,创建并插入b表
create table b select * from a;

create temporary table b select * from zou;

//创建临时表(如果临时表的表名和正常表一样,插入数据时,优先并且只插入临时表。同名临时表不能共存)
create temporary table yang(
id int auto_increment,
name varchar(50),
pwd varchar(50),
primary key(id)
);

创建普通表
create table yang(
id int auto_increment,
name varchar(50),
pwd varchar(50),
index indexpwd(pwd),
primary key(id)
);

//查看表
explain yang;

temporary table与normal table为何允许同时存在

在网上的帖子看到的各高手根据mysql源码验证的了,临时表和正常表是存储在不同的位置的,所以允许共存。
temporary table保存在thd->temporary_table队列中,而normal table是保存在全局的队列中的,这样同名的normal table与temporary table就可以共存。
并且,temporary table是相对于session的,因为session结束后相应的线程就被回收了,那么对应于该线程的temporary table也就被释放了。更进一步,从temporarytable的命名规则我们可以看到,每个temporary table都对应着独特的客户端线程id,那么显然各个Client之间同名的temporary table是允许共存的。
而normal table显然是在任何情况下都不允许的。

explain format=json select SQL_BUFFER_RESULT * from t1;

mysql查看版本号命令
select version();

mysql导出
1.这个路径是使用show variables like ‘%secure%’;这个命令查看,secure_file_priv表示了可以存储的路径
SELECT * FROM zou INTO OUTFILE ‘C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/zou.txt’;

2.修改my.ini配置文件,添加或者修改secure-file-priv="",这样存储路径就可以任意了。
SELECT * FROM zou INTO OUTFILE ‘e:/zou.txt’;

mysql表合并
create table a(
id int,
deal_amount int,
deal_type int
) char set utf8;
insert into a(id,deal_amount,deal_type) values(1,10,0);
insert into a(id,deal_amount,deal_type) values(1,40,0);
insert into a(id,deal_amount,deal_type) values(1,15,1);
insert into a(id,deal_amount,deal_type) values(2,15,0);
insert into a(id,deal_amount,deal_type) values(2,10,0);
insert into a(id,deal_amount,deal_type) values(2,10,0);
insert into a(id,deal_amount,deal_type) values(3,10,1);

create table b(
id int,
sum_amount int,
deal_times int
)char set utf8;
insert into b(id,sum_amount,deal_times) values(1,10,8);
insert into b(id,sum_amount,deal_times) values(2,10,9);

//临时表
create temporary table tmp(
id int,
deal_sum_amount int,
deal_times int,
index(id)
) char set utf8;

insert into tmp select id, sum(deal_amount), count(id) from A where deal_type = 0 group by id;

update B,tmp t set B.sum_amount = t.deal_sum_amount,B.deal_times = t.deal_times where B.id = t.id;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值