数据库
首页 > 数据库> > 2021-7-30 MySql进阶2

2021-7-30 MySql进阶2

作者:互联网

创建临时表只需在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;#改名

 

标签:进阶,30,newtable,user,table,password,id,SELECT,2021
来源: https://www.cnblogs.com/WH5212/p/15078185.html