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 临时表复制表元数据的主要内容,如果未能解决你的问题,请参考以下文章
当使用 32 位版本的 MySQL 的 .net 连接器连接到 64 位版本的 MySQL 时,我得到“等待表元数据锁定”