创建临时表只需在table前面加temporary
CREATE TEMPORARY TABLE mytable#创建临时表,在断开数据库连接时销毁 ( ID INT NOT NULL, username VARCHAR(16) NOT NULL, index usernameIndex (username)#创建表的时候创建索引 ); insert into mytable(ID,username) VALUES(1,'呵呵'); select * from mytable; drop table mytable;#删除临时表 SELECT * from mytable;
创建临时表也可以通过查询其他表来创建如下:
CREATE TEMPORARY TABLE mytable as ( SELECT * from users LIMIT 0,3 ); select * from mytable; drop table mytable;
复制表:完整复制表结构和数据
show create table users;#查询信息然后复制粘贴在下方 CREATE TABLE `cloneusers` (#修改表名称 `user_id` int(10) unsigned NOT NULL AUTO_INCREMENT, `user_password` varchar(100) NOT NULL, `class_id` int(11) DEFAULT NULL, `uname` varchar(100), PRIMARY KEY (`user_id`) ) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=utf8; insert into cloneusers(user_id,user_password,class_id,uname) SELECT user_id,user_password,class_id,uname from users;#插入查询到的表数据
另一种方法
create table clonetable like users;#可以快速完整的复制表结构 INSERT into clonetable SELECT * from users;#快速复制表数据
元数据的获取:
SELECT VERSION();#获取服务器版本信息 SELECT DATABASE();#获取数据库名称 SELECT USER();#获取用户名 SHOW STATUS;#获取服务器状态 SHOW VARIABLES;#获取服务器配置变量
获取最后插入的ID:
SELECT LAST_INSERT_ID();#获取最后插入的id
SELECT @@identity;#查询最后插入的值的id
重置序列:
alter table users drop user_id;#删除表的主键列 alter table users add id int UNSIGNED not null auto_increment FIRST,#添加一列无符号整型非空自动增长的id列 add PRIMARY key (id);#设置主键
设置自动增长
create table newtable like users; INSERT into newtable SELECT * from users; alter table newtable auto_increment=100;#设置自动增长的起始值为100,可以在创建表的时候在末尾加上auto_increment=100来设置
插入相同的值
INSERT IGNORE into newtable(id,user_password) VALUES(101,'刘德华');#插入时使用IGNORE会忽略表中已经存在的数据 REPLACE into newtable(id,user_password,uname) VALUES(101,'刘德华','');#插入时使用REPLACE会删除表中已经存在的数据然后替换上去
删除重复数据:
select count(*) as 总和,user_password as 用户名 FROM newtable GROUP BY user_password HAVING 总和>1;#查询用户名重复的项 select DISTINCT user_password from newtable;#过滤重复的项 SELECT user_password from newtable GROUP BY user_password;#读取不重复的数据 CREATE table clonetable SELECT id,user_password,uname,class_id from newtable GROUP BY (user_password) ORDER BY id ;#复制一个新表,表结构请看之前的设计 DROP table newtable;#删除旧表 alter table clonewtable RENAME TO newtable;#改名