MySql临时表,索引的简单介绍

本文介绍MySQL中如何利用临时表进行数据处理,避免同时更新表时出现的错误,并探讨了临时表与常规表的区别。此外,还详细讲解了索引的创建、使用及维护方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#查询数据放到临时表,再更新,删除和插入一样
CREATE TEMPORARY TABLE tmpTable SELECT age FROM `user` WHERE id in('5','6','7','8')

#当你在一张表里查出来,同时要更新数据的时候它会报错,说你不能同时操作更新这个表
#这个时候需要用到临时表的操作
INSERT INTO userb(age) SELECT * FROM mytmp

INSERT INTO mytmp(age) VALUE('11')

UPDATE userb b ,tmpTable a set b.age=a.age WHERE b.id=a.id
# TEMPORARY 字段的作用和 create table temp as 的区别 都可以创建临时表
# 1.引擎只能是MyISAM、Memory、Merge or Innodb
# 2.它不能自引用 ,不能inset UPDATE
# 3.创建的时候,你会发现他是不显示的,使用show 也不会有,而create table可以显示,且可以inset UPDATE
# 4.不支持rename 但可以alter table
 
CREATE TABLE tt AS SELECT * FROM userb WHERE id in('5','6','7','8','9')

DELETE FROM userb WHERE id in(SELECT id FROM tt)

CREATE TABLE mytmp as SELECT age FROM `user` WHERE id in('9','10','11','12')

UPDATE userb b,mytmp m SET b.age=m.age WHERE b.id=m.id

#删除临时表,临时表在你关连接的时候,他会帮你删除放空间出来
DROP TABLE tempuser

#ALTER TABLE <表名> ADD INDEX (<字段>); 创建索引语句
#索引的创建一般是你经常查询的字段,或者被其他表引用关联的字段,再者是主键
#索引一般不会乱创建,他需要维护,你测试的时候会发现 插入和更新慢,是因为mysql自己去维护了索引
#索引创建的类型有8种,具体看自己的使用
#所以,索引有好有坏,创建需谨慎,当然在公司,一般都是db在搞,不需要你来操作这方便的事情。
ALTER TABLE `user` ADD INDEX idx_age(`age`)

SELECT age FROM `user` WHERE idx_age='51'

#显示索引
SHOW INDEX FROM `user`

#删除索引,删除主键把名称换一下就好
ALTER TABLE `user` DROP INDEX `idx_age`

#创建表
CREATE TABLE `userb` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `adress` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8;

CREATE TABLE `user` (
  `name` varchar(255) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `adress` varchar(255) DEFAULT NULL,
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `createtime` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `idx_age` (`age`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值