Database
 sql >> Database >  >> RDS >> Database

Come creare una tabella temporanea in SQL?

Come creare tabelle temporanee in SQL

Introduzione alle tabelle temporanee

  • La tabella temporanea è una tabella utilizzata per memorizzare dati temporanei che possono essere utilizzati ulteriormente nella stessa sessione client.
  • Per impostazione predefinita, la tabella temporanea viene rimossa una volta terminata la sessione client.
  • La tabella temporanea può essere rimossa in modo esplicito utilizzando l'istruzione "DROP TABLE". Questa tabella è accessibile solo al suo creatore.
  • Può esistere più di una tabella temporanea nella stessa sessione, ma devono contenere nomi diversi se si trovano nella stessa sessione. Ma se le tabelle temporanee si trovano in sessioni diverse, le tabelle possono esistere con gli stessi nomi.
  • Le tabelle temporanee possono avere lo stesso nome di quelle normali all'interno dello stesso database. Se esiste tale condizione, dopo la creazione della tabella temporanea tutte le query eseguite faranno ora riferimento alla tabella temporanea anziché alla tabella normale. Ma una volta rimossa questa tabella temporanea creata con lo stesso nome, la tabella normale è accessibile e ora le query faranno riferimento alla tabella normale.
  • Creazione di una tabella temporanea

Sintassi:

CREATE TEMPORARY TABLE TABLENAME (nome_colonna1 tipo di dati (dimensione), nome_colonna2 tipo di dati (dimensione), nome_colonnaN tipo di dati (dimensione));

Esempio:

Abbiamo già un database con il nome "employeedb" e una tabella con il nome "employee" in quel database. Ora creeremo una tabella temporanea con lo stesso nome "dipendente".

 mysql> USE employeedb;
 Database changed
 mysql> CREATE TEMPORARY TABLE employee(Emp_ID INT, Emp_Name VARCHAR(20),Emp_Salary INT);
 Query OK, 0 rows affected (0.32 sec)
 mysql> SELECT *FROM employee;
 Empty set (0.00 sec)
 mysql> INSERT INTO employee VALUES(1,"Mayuri",45000);
 Query OK, 1 row affected (0.08 sec)
 mysql> INSERT INTO employee VALUES(2,"Sakshi",50000);
 Query OK, 1 row affected (0.04 sec)
 mysql> SELECT *FROM employee;
 +--------+----------+------------+
 | Emp_ID | Emp_Name | Emp_Salary |
 +--------+----------+------------+
 |      1 | Mayuri   |      45000 |
 |      2 | Sakshi   |      50000 |
 +--------+----------+------------+
 2 rows in set (0.00 sec) 
  • Ora abbiamo creato una nuova tabella denominata "employee" nel database "employeedb".
  • Quindi, subito dopo la creazione di una tabella temporanea quando stiamo cercando di recuperare i dati dalla tabella dei dipendenti, abbiamo ottenuto un set di risultati vuoto. Ciò accade perché ora la tabella dipendente specificata nella query SELECT fa riferimento alla tabella temporanea appena creata "employee" e non alla tabella esistente "employee".
  • Dopodiché, quando abbiamo eseguito la query INSERT sulla tabella dipendente, anche questa query viene eseguita sulla tabella temporanea "employee" perché stiamo eseguendo questa query dopo la creazione della tabella temporanea.
  • Rilascia una tabella temporanea

Sintassi:

DROP TABLE TABLENAME;

Esempio:

Ora elimineremo una tabella temporanea denominata "dipendente".

 mysql> SELECT *FROM employee;
 +--------+----------+------------+
 | Emp_ID | Emp_Name | Emp_Salary |
 +--------+----------+------------+
 |      1 | Mayuri   |      45000 |
 |      2 | Sakshi   |      50000 |
 +--------+----------+------------+
 2 rows in set (0.00 sec)
 mysql> DROP TABLE employee;
 Query OK, 0 rows affected (0.08 sec)
 mysql> SELECT *FROM employee;
 +--------+----------+------------+
 | Emp_ID | Emp_Name | Emp_Salary |
 +--------+----------+------------+
 |      1 | Mayuri   | 40000      |
 |      2 | Mayuri   | 40000      |
 |      3 | Mayuri   | 40000      |
 |      4 | Mayuri   | 40000      |
 |      5 | Mayuri   | 40000      |
 +--------+----------+------------+
 5 rows in set (0.09 sec) 
  • Quando eseguiamo la query SELECT, otteniamo due record come output perché abbiamo eseguito questa query dopo la creazione di una tabella temporanea. Quindi, questa query SELECT viene eseguita sulla tabella temporanea.
  • Dopo di che abbiamo eseguito la query di rilascio. Utilizzando il comando DROP, la tabella dei dipendenti appena creata (tabella temporanea) verrà eliminata.
  • Ancora una volta, quando eseguiamo la query SELECT, ora verrà operata sulla nostra tabella dipendenti (tabella originale) non sulla tabella temporanea perché la tabella temporanea è già stata rimossa dal database.