MySQL 临时表复制表元数据

Posted 两掺豆腐脑丶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL 临时表复制表元数据相关的知识,希望对你有一定的参考价值。

mysql 临时表、复制表、元数据

MySQL 临时表

MySQL 临时表在我们需要保存一些临时数据时是非常有用的。
– 临时表只在当前连接可见,当关闭连接时,Mysql会自动删除表并释放所有空间
– TEMPORAR暂时

CREATE TEMPORARY TABLE SalesSummary (
     product_name VARCHAR(50) NOT NULL, 
		 total_sales DECIMAL(12,2) NOT NULL DEFAULT 0.00, 
		 avg_unit_price DECIMAL(7,2) NOT NULL DEFAULT 0.00, 
		 total_units_sold INT UNSIGNED NOT NULL DEFAULT 0
);

– 查询表

select * from SalesSummary;

– 查看表结构

show COLUMNs FROM SalesSummary;

– 向临时表添加数据

 INSERT INTO SalesSummary(product_name, total_sales, avg_unit_price, total_units_sold) VALUES('cucumber', 100.25, 90, 2);
 INSERT INTO SalesSummary(product_name, total_sales, avg_unit_price, total_units_sold) VALUES('cucumber01', 90.25, 89, 2);

– 删除临时表

DROP TABLE SalesSummary;

– 当你使用 SHOW TABLES命令显示数据表列表时,你将无法看到 SalesSummary表
show tables
– 在MySQL命令控制台上也查询不到 select * from SalesSummary;

– 用查询直接创建临时表的方式: TEMPORARY(temporary暂时的)

CREATE TEMPORARY TABLE 临时表名 AS
(
    SELECT *  FROM 旧的表名
    LIMIT 0,10000
		
);

– 复制表

需要完全的复制MySQL的数据表,包括表的结构,索引,默认值等。 如果仅仅使用CREATE TABLE … SELECT 命令,是无法实现的
– 使用 SHOW CREATE TABLE 命令获取创建数据表(CREATE TABLE) 语句,该语句包含了原数据表的结构,索引等。
– 复制以下命令显示的SQL语句,修改数据表名,并执行SQL语句,通过以上命令 将完全的复制数据表结构。
– 如果你想复制表的内容,你就可以使用 INSERT INTO … SELECT 语句来实现。

CREATE  TABLE runoob_tbl  (
     product_name VARCHAR(50) NOT NULL, 
		 total_sales DECIMAL(12,2) NOT NULL DEFAULT 0.00, 
		 avg_unit_price DECIMAL(7,2) NOT NULL DEFAULT 0.00, 
		 total_units_sold INT UNSIGNED NOT NULL DEFAULT 0
);
 INSERT INTO runoob_tbl (product_name, total_sales, avg_unit_price, total_units_sold) VALUES('cucumber', 100.25, 90, 2);
 INSERT INTO runoob_tbl (product_name, total_sales, avg_unit_price, total_units_sold) VALUES('cucumber01', 90.25, 89, 2);
select * FROM runoob_tbl;

SHOW CREATE TABLE runoob_tbl;
create table clone_tbl(
 product_name VARCHAR(50) NOT NULL, 
		 total_sales DECIMAL(12,2) NOT NULL DEFAULT 0.00, 
		 avg_unit_price DECIMAL(7,2) NOT NULL DEFAULT 0.00, 
		 total_units_sold INT UNSIGNED NOT NULL DEFAULT 0
)CHARSET=utf8;
INSERT INTO clone_tbl (product_name, total_sales, avg_unit_price, total_units_sold) VALUES('cucumber', 100.25, 90, 2);
 INSERT INTO clone_tbl (product_name, total_sales, avg_unit_price, total_units_sold) VALUES('cucumber01', 90.25, 89, 2);

– 查看表数据

 select * from clone_tbl;

– 拷贝数据表的数据你可以使用 INSERT INTO… SELECT 语句来实现

INSERT INTO (复制表的表名)table_name (cloumn_name) 
select cloumn_name 
from (被复制表的表名)table_name;
 INSERT INTO clone_tbl (product_name, total_sales, avg_unit_price, total_units_sold)
     SELECT product_name, total_sales, avg_unit_price, total_units_sold
     FROM runoob_tbl;

– 完整的复制表的内容,包括表结构及表数据
– 表结构 复制表和原表结构一样

show COLUMNS from clone_tbl;
show COLUMNS from runoob_tbl;
 

– 第一、只复制表结构到新表

create table 新表 select * from 旧表 where 1=2
– OR
– create table 新表 like 旧表

– 第二、复制表结构及数据到新表 – -- create table新表 select * from 旧表

– MySQL 元数据 – MySQL以下三种信息:
– -- 查询结果信息: SELECT, UPDATE 或 DELETE语句影响的记录数。
– 数据库和数据表的信息: 包含了数据库及数据表的结构信息。
– MySQL服务器信息: 包含了数据库服务器的当前状态,版本号等。

SELECT VERSION( ); 服务器版本信息
SELECT DATABASE( ); 当前数据库名 (或者返回空)
SELECT USER( ); 当前用户名
SHOW STATUS; 服务器状态
SHOW VARIABLES; 服务器配置变量

以上是关于MySQL 临时表复制表元数据的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 临时表复制表元数据

在java中从mysql获取表元数据

当使用 32 位版本的 MySQL 的 .net 连接器连接到 64 位版本的 MySQL 时,我得到“等待表元数据锁定”

mysql-10临时表复制表

MySQL-表复制;序列

“无法获取表元数据”“从 NDBCLUSTER 收到错误 157‘未知错误代码’”