Mesas temporales
Las tablas temporales de MySQL son muy útiles cuando se almacenan algunos datos temporales. Las tablas temporales solo son visibles en la conexión actual. Cuando se cierra la conexión, Mysql eliminará automáticamente la tabla y liberará todo el espacio.
Ejemplo
# 创建临时表
mysql> 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
);
Query OK, 0 rows affected (0.00 sec)
# 在临时表中插入数据
mysql> INSERT INTO SalesSummary
-> (product_name, total_sales, avg_unit_price, total_units_sold)
-> VALUES
-> ('cucumber', 100.25, 90, 2);
# 在临时表中查找数据
mysql> SELECT * FROM SalesSummary;
+--------------+-------------+----------------+------------------+
| product_name | total_sales | avg_unit_price | total_units_sold |
+--------------+-------------+----------------+------------------+
| cucumber | 100.25 | 90.00 | 2 |
+--------------+-------------+----------------+------------------+
1 row in set (0.00 sec)
Use CREAR TABLA TEMPORAL para crear tablas temporales;
Cuando utilice el comando MOSTRAR TABLAS para mostrar la lista de tablas de datos, no podrá ver la tabla Resumen de ventas;
Si sale de la sesión actual de MySQL y usa el comando SELECT para leer los datos de la tabla temporal creada anteriormente, encontrará que la tabla no existe en la base de datos, porque la tabla temporal se destruyó cuando salió.
tabla temporal de descenso
De forma predeterminada, las tablas temporales se destruyen automáticamente cuando se desconecta la conexión a la base de datos. Por supuesto, también puede usar el comando DROP TABLE en la sesión actual de MySQL para eliminar manualmente las tablas temporales.
# 手动删除临时表的实例:
mysql> DROP TABLE SalesSummary;
Copiar tabla
Si necesita replicar completamente la tabla de datos de MySQL, incluida la estructura de la tabla, los índices, los valores predeterminados, etc.
Esto no es posible con solo el comando CREAR TABLA ... SELECCIONAR . A continuación se describe cómo copiar completamente las tablas de datos de MySQL.Los pasos son los siguientes:
- Utilice el comando SHOW CREATE TABLE para obtener la sentencia CREATE TABLE , que contiene la estructura, índices, etc. de la tabla de datos original.
- Copie la instrucción SQL que muestra el siguiente comando, modifique el nombre de la tabla de datos y ejecute la instrucción SQL. El comando anterior copiará completamente la estructura de la tabla de datos.
- Si desea copiar el contenido de la tabla, puede utilizar la sentencia INSERT INTO... SELECT para hacerlo.
Ejemplo
paso uno:
Obtenga la estructura completa de la tabla de datos, mostrando los detalles de cuándo se creó la tabla.
mysql> SHOW CREATE TABLE source_tbl \G;
*************************** 1. row ***************************
Table: source_tbl
Create Table: CREATE TABLE `source_tbl` (
`source_id` int(11) NOT NULL auto_increment,
`source_title` varchar(100) NOT NULL default '',
`source_author` varchar(40) NOT NULL default '',
`submission_date` date default NULL,
PRIMARY KEY (`source_id`),
UNIQUE KEY `AUTHOR_INDEX` (`source_author`)
) ENGINE=InnoDB
1 row in set (0.00 sec)
Paso 2:
Modifique el nombre de la tabla de datos de la instrucción SQL y ejecute la instrucción SQL para crear una nueva tabla clonada target_tbl en la base de datos.
mysql> CREATE TABLE `target_tbl` (
-> `target_id` int(11) NOT NULL auto_increment,
-> `target_title` varchar(100) NOT NULL default '',
-> `target_author` varchar(40) NOT NULL default '',
-> `submission_date` date default NULL,
-> PRIMARY KEY (`target_id`),
-> UNIQUE KEY `AUTHOR_INDEX` (`target_author`)
-> ) ENGINE=InnoDB;
Query OK, 0 rows affected (1.80 sec)
Paso 3:
Si desea copiar los datos de la tabla de datos, puede usar la instrucción INSERT INTO... SELECT para lograrlo.
mysql> INSERT INTO target_tbl (target_id,
-> target_title,
-> target_author,
-> submission_date)
-> SELECT source_id, source_title,
-> source_author, submission_date
-> FROM source_tbl;
Query OK, 3 rows affected (0.07 sec)
Records: 3 Duplicates: 0 Warnings: 0
Después de realizar los pasos anteriores, el contenido de la tabla se copiará por completo, incluida la estructura de la tabla y los datos de la tabla.
Otras formas de copiar tablas:
CREATE TABLE targetTable LIKE sourceTable;
INSERT INTO targetTable SELECT * FROM sourceTable;
Algunos de estos campos en una tabla se pueden copiar:
CREATE TABLE targetTable AS
(
SELECT username, password FROM sourceTable
)
Puede cambiar el nombre de los campos de la tabla recién creada:
CREATE TABLE targetTable AS
(
SELECT id, username AS uname, password AS pass FROM sourceTable
)
Parte de los datos se pueden copiar:
CREATE TABLE targetTable AS
(
SELECT * FROM sourceTable WHERE LEFT(username,1) = 's'
)
La información de campo en la tabla se puede definir al crear la tabla:
CREATE TABLE targetTable
(
id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY
)
AS
(
SELECT * FROM sourceTable
)