Duplicare una tabella e dati
Gli argomenti di questa pagina
|
Prima di iniziare
Una volta che abbiamo delle tabelle è possibile iniziare.
In questa pagina vedremo:
- Duplicare una tabella solo struttura: CREATE TABLE ... LIKE
- Duplicare una tabella con dati: INSERT INTO e subquery
- Esempi di Query per copiare i dati da una tabella ad un'altra
Innanzitutto verificare che esista il file che contiene i dati di connessione al DB.
In questo file verranno indicate le sole quattro variabili necessarie a stabilire la connessione al DB prima di compiere qualsiasi azione ed è questo file che includeremo in tutte le pagine che debbono lavorare col DB. Questi dati vengono forniti dall'host che abbiamo scelto per il nostro sito.
1
|
<?php
|
Questo che segue è un frammento di codice che sarà necesario per eseguire la connessione al DB ed alla esecuzione delle Query.
1
|
<?php
|
Se si apre una connessione a MySQL all'interno del file PHP è possibile chiuderla con la funzione mysql_close(). Anche se non tutti i programmatori usano chiudere esplicitamente la connessione perchè lo trovano inutile, in quanto le connessioni MySQL sono solitamente chiuse per default alla fine dello script, è buona norma fare in modo che tutte le risorse vengano liberate dopo l'utilizzo del DB, usando la funzione mysql_close(). Ciò assicurerà che la connessione venga chiusa nella linea esatta nello script in cui si dice di chiudere.
1
|
<?php
|
A scopo puramente semplificativo, negli script degli esempi di questa pagina viene usata sia la connessione al DB estesa che quella tramite questa semplice funzione che viene richiamata con: $Link = db_connect()
1
|
<?php
|
Duplicare una tabella solo struttura: CREATE TABLE ... LIKE
Alle volte può tornare utile poter avere la possibilità di duplicare una tabella. Un caso tipico in cui questa possibilità è particolarmente utile è quando abbiamo una tabella con dati e vogliamo agire su questa tabella in maniera drastica e, magari, distruttiva.
L'operazione non è molto complessa ed altrettanto semplice è la query da utilizzare, come visibile nel frammento di codice qui sotto.
La Query chiede di creare la tabella desiderata usando (LIKE) la tabella esistente.
Col codice mostrato qui sotto si genera una tabella con la struttura uguale all'originale ma vuota. Se volessimo trasferire nella nuova tabella anche i dati contenuti nella tabella originale il precedente codice potrebbe essere modificato come quello che segue immediatamente sotto.
1
|
<?php
|
Duplicare una tabella con dati: INSERT INTO e subquery
Oltre alla struttura è possibile copiare anche i dati prelevandoli dalla tabella originale. Ma l'azione deve avvenire in due tempi ed usando due Query:
La prima query è come la precedente e serve per creare la tabella e la sua struttura.
La seconda query per l'inserimento è intuitiva: nella istruzione INSERT INTO nella nuova tabella segue, al posto dei soliti valori, una SubQuery SELECT sulla vecchia tabella per selezionare i record desiderati: INSERT INTO sql_rubrica_nuova (SELECT * from sql_rubrica).
1
|
<?php
|
Esempi di Query per copiare i dati da una tabella ad un'altra
Qui sopra è stato anticipato uno dei metodi da usare per copiare tutti i dati da una tabella ad un'altra. Ma ne possiamo usare tanti altri. Gli unici limiti sono le nostre necessità e la nostra fantasia.
Ma può capitare che in una tabella si vogliano copiare solo parte dei dati prelevandoli da un'altra tabella.
Qui sotto abbiamo quattro Query di esempio:
- la prima Query copia tutti i campi di tutti i record da una tabella ad un'altra
- la seconda Query copia solo alcuni campi di tutti i record ordinandoli per citta
- la terza Query copia alcuni campi dei soli record di una determinata prov
- la quarta Query copia alcuni campi dei record che hanno la provincia BO oppure CH usando l'operatore di appartenenza IN. In questo caso viene usato l'operatore IN per verificare l'appartenenza di un valore ad una lista di valori invece di una serie di espressioni OR.
L'operatore di appartenenza IN permette di specificare un elenco di criteri da indicare nel filtro di una clausola WHERE. L'elenco va racchiuso in parentesi tonda e separato da virgola.
Un esempio è visibile nel quarto esempio qui in basso per indicare che vogliamo estrarre tutti i record con provincia 'BO' o 'CH'.
Ovviamente potremmo scrivere una dichiarazione che utilizza una serie di espressioni OR. ma in questi casi è molto più semplice e rapido è quello di fornire l'elenco dei criteri desiderati utilizzando la clausola IN.
1
|
<?php
|