#查询数据放到临时表,再更新,删除和插入一样
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;