Base de datos relacional (11): tablas temporales y replicadas en MySQL

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
)  

Supongo que te gusta

Origin blog.csdn.net/weixin_43145427/article/details/124190583
Recomendado
Clasificación