Ho scoperto che esiste un client da riga di comando per MariaDB (e MySQL) con l'auto-completion: MyCLI!

Solo che installarlo è stato più complicato del previsto, in quanto non è presente nei repo di Debian 8 (al contrario di quello che dicono tutte le guide che ho letto).

Per monitorare un database MariaDB (e MySQL ovviamente) ci sono diversi strumenti a disposizione.

Il primo in assoluto è ovviamente mysqladmin, che fa parte dei tools di base di MariaDB.

Solo che non è facilissimo da usare, nel senso che bisogna conoscere molto bene dove andare a prelevare i dati, le query, ecc.

Ho deciso di eseguire il porting di un mio vecchio programma scritto in Java, da Swing a JavaFX.

Uno dei problemi che ho riscontrato è come rimpire una TableView da database.

Ovviamente le tabelle funzionano in maniera completamente diverse da Swing.

Qua vediamo proprio questo; però tenete in considerazione che:

  • come db uso SQLite (anche se cambia poco)
  • non spiegherò per filo e per segno come usare e installare il driver JDBC per SQLite; vi posterò direttamente il codice

Cominciamo dal db; la tabella che interroghiamo ha questa struttura:

0|id|INTEGER|1||1
1|title|VARCHAR|1||0
2|released|VARCHAR|0||0
3|genre|VARCHAR|0||0
4|director|VARCHAR|0||0
5|writer|VARCHAR|0||0
6|actors|VARCHAR|0||0
7|plot|VARCHAR|0||0
8|poster|VARCHAR|0||0
9|runtime|VARCHAR|0||0
10|imdb_id|VARCHAR|0||0

Facendo dei test, mi sono ritrovato con tutti questi utenti di root nella mia installazione di MariaDB (valido anche per MySQL):

root % No USAGE
root 127.0.0.1 Sì  ALL PRIVILEGES  
root ::1 Sì  ALL PRIVILEGES
root localhost Sì  ALL PRIVILEGES

Quando si parla di database e query, per tabelle pivot si intende traslare i dati ed incolonnarli in maniera differente dallo standard della tabella.

In pratica, facendo un esempio reale, ho questa query:

SELECT
IF (mov_tipo = "E", "ENTATE", "USCITE") tipo, YEAR(mov_data) anno, 
SUM(mov_valore) sum_val
FROM movimenti
WHERE mov_utente_fk = 1 
GROUP BY tipo, anno
ORDER BY anno DESC, tipo