03/05/2011
MySQL: identificare la tabella da cui provengono i dati ricavati mediante una UNION di due SELECT
Qualche giorno fa, mentre scrivevo del codice server-side per un piccolo CRM homemade, ho avuto la necessità di ricavare dei dati mediante la UNION di due SELECT. In particolare, il codice SQL che ho utilizzato è il seguente:
SELECT 'Entrata' AS NomeTabella, O.ID, O.NumeroOperazione, E.Descrizione, E.Tipo, O.Importo, O.DataInserimento, O.DataOperazione FROM entrata AS E, riguarda AS R, operazione AS O WHERE O.ID = R.IDOperazione AND R.IDEntrata = E.ID AND (E.Tipo = 'Cassa' OR E.Tipo = 'Banca') UNION SELECT 'Uscita' AS NomeTabella, O.ID, O.NumeroOperazione, U.Descrizione, U.Tipo, O.Importo, O.DataInserimento, O.DataOperazione FROM uscita AS U, riguarda AS R, operazione AS O WHERE O.ID = R.IDOperazione AND R.IDUscita = U.ID AND (U.Tipo = 'Cassa' OR U.Tipo = 'Banca') ORDER BY DataInserimento
Ora, come potete notare le due SELECT vengono applicate su diversi JOIN ed hanno come obiettivo quello di restituire alcuni informazioni importanti, quali il numero dell'operazione finanziaria, la descrizione dell'operazione stessa, il suo importo, ecc. Ovviamente, affinchè i risultati non venissero ripetuti più volte ho utilizzato solo l'operatore UNION (che prevede un DISTINCT implicito) senza la direttiva ALL. Inoltre, per distinguere la tabella di provenienza dei record selezionati, ho creato un ulteriore campo temporaneo, a cui è stato associato l'alias NomeTabella. Così facendo, la struttura della tabella risultante è diventata la seguente:
Nometabella, ID, NumeroOperazione, Descrizione, Tipo, Importo, DataInserimento, DataOperazione
Da quel momento è stato possibile distinguere piuttosto banalmente la tabella di appartenenza dei record visualizzati.
Bye.
NB: affinchè la UNION possa essere applicata è necessario che le due SELECT riguardino lo stesso numero (e tipologie compatibili) di campi.
19:38
Scritto da: nazarenolatella
in Database | Link permanente | Commenti (0)
|
Segnala
| Tag: mysql, union all, union, select, alias | OKNOtizie |
Facebook
03/05/2010
Pillole Mysql Part 1
Esistono diversi strumenti che facilitano la vita ai programmatori/DBA. Uno su tutti è certamente PHPMyAdmin, che con la sua interfaccia user-friendly consente di effettuare modifiche sul database in maniera semplice ed intuitiva.
Spesso, però, accade che sia disponibile solo l'interfaccia a linea di comando del nostro DBMS, ragion per cui è bene ricordare alcuni comandi utili:
1) USE nomedb;
ci consente di selezionare il database.
2) SHOW TABLES;
ci consente di visualizzare tutte le tabelle relative al database selezionato;
3) DESCRIBE nometabella;
ci permette di visualizzare la struttura della tabella specificata;
Un altro comando utile riguarda il reset dei campi di auto-increment. Per fare ciò basta digitare:
ALTER TABLE nometabella AUTO_INCREMENT = 1;
Ovviemente, per visualizzare il contenuto di una tabella, per cancellare determinate righe o per modificare la struttura della tabella stessa (o di una sua entry), basta usare la pura e semplice sintassi SQL.
Ad esempio:
1) SELECT * FROM nometabella;
visualizza tutte le righe di una tabella;
2) DELETE FROM nometabella;
cancella tutti i record contenuti in una tabella;
3) DELETE FROM nometabella WHERE ID = '1';
cancella dalla tabella il record avente ID pari a 1;
4) DROP TABLE nometabella;
cancella la tabella;
5) INSERT INTO nometabella (campo1, campo2) VALUES ('valore1', 'valore2');
inserisce nella tabella i valori "valore1" e "valore2" rispettivamente per "campo1" e "campo2";
6) UPDATE nometabella SET campo1 = 'valore1', campo2 = 'valore2' WHERE ID = '1';
aggiorna il contenuto di "campo1" e "campo2" rispettivamente a "valore1" e "valore2" per la entry che possiede ID pari a 1.
Inutile dire che quelli da me elencati sono solo alcuni dei comandi che MySQL ci mette a disposizione. Morale della favola: meglio non abusare di PHPMyAdmin :D
A presto.
19:08
Scritto da: nazarenolatella
in Database | Link permanente | Commenti (1)
|
Segnala
| Tag: mysql, sql, database | OKNOtizie |
Facebook
06/10/2009
Effetture il dump di un database sotto Linux con MySQL
Il dump di un database non è altro che un file di testo in cui sono contenute delle istruzioni SQL. Tali istruzioni hanno come scopo quello di riprodurre fedelmente il database esportato, in modo che possa essere caricato su un altra macchina continuando a funzionare correttamente.
Per effettuare il dump del database MySQL direttamente da linea di comando occorre digitare (da shell):
mysqldump nome_del_database -u root -p > nome_del_file_dump.pl
dove la flag -u indica l'utente (ovvero root), la flag -p richiede l'inserimento della password di root ed il simbolo > indica che il risultato del comando dovrà essere salvato all'interno del file di destinazione (nome_del_file.pl).
Successivamente, per importare sulla macchina di destinazione il file appena creato è necessario usare i seguenti comandi (sempre da shell):
mysqladmin drop nome_del_database -u root -p
mysqladmin create nome_del_database -u root -p
mysql nome_del_database -u root -p < nome_del_file_dump.pl
Il primo comando ci consente di eliminare eventuali database già presenti nella macchina di destinazione e che possiedono lo stesso nome di quello che stiamo per importare; il secondo comando, invece, ci permette di creare un database vuoto. Infine, l'ultimo comando serve all'importazione vera e propria delle informazioni.
Il post termina qui, a presto.
21:20
Scritto da: nazarenolatella
in Database | Link permanente | Commenti (0)
|
Segnala
| Tag: mysql, sql, database, db, dump | OKNOtizie |
Facebook
29/04/2008
Installazione e sicurezza di base per MySQL
MySQL è uno dei DBMS più efficienti in circolazione, oltre a rappresentare una valida alternativa ai sistemi proprietari di gestione dei database (vedi Oracle). Esso, ovviamente, è un software libero e proprio questa sua caratteristica comporta numerosi vantaggi quali la possibilità di poterlo adattare completamente alle proprie necessità, sempre nei limiti della licenza GPL, oppure la grande mole di guide ed howto (ufficiali e non) reperibili in rete.
Vediamo adesso come installare tale DBMS e quali sono i comandi per garantire una sicurezza di base.
Apriamo dunque la nostra shell e digitiamo:
nightfly@nightbox:~$ sudo apt-get install mysql-server
Appena l'installazione verrà completata, il demone mysql verrà attivato in automatico. Potete verificare che ciò sia effettivamente avvenuto digitando:
nightfly@nightbox:~$ ps aux | grep mysql
In caso contrario, possiamo avviare il demone manualmente mediante il seguente comando:
nightfly@nightbox:~$ sudo /etc/init.d/mysql start
Ora passiamo alla sicurezza di base. E' bene notare che l'amministratore di mysql è identificato come root, da non confondere con l'utente root della nostra linux box. Impostiamo dunque la password per l'admin:
nightfly@nightbox:~$ sudo mysqladmin -u root password 'password' (tra gli apici)
Definiamo la password anche per l'utente root che si collega da locale:
nightfly@nightbox:~$ sudo mysqladmin -u root -h localhost password 'password'
Infine eliminiamo gli utenti anonimi (si tratta di una semplice istruzione in SQL):
nightfly@nightbox:~$ mysql -u root -p mysql
DELETE FROM user WHERE User=' ';
FLUSH PRIVILEGES;
dove la flag -p indica il database sul quale si vuole operare (mysql nella fattispecie).
La mini guida termina qui, a presto!
21:54
Scritto da: nazarenolatella
in Database | Link permanente | Commenti (0)
|
Segnala
| OKNOtizie |
Facebook
















