Nomi di tabelle e campi in MySQL

MySQL
di Risorse.net

Nella puntata SQL di base all'interno di questa guida a MySQL, abbiamo visto che SQL è a tutti gli effetti un linguaggio. In quanto tale, ha regole grammaticali e strutturali che vanno rispettate, così da interagire alla perfezione con il database.

Tra queste regole, come per quasi tutti i linguaggi, esistono nomi riservati che non possono essere utilizzati:

ALTER
AND
AS
CREATE
CROSS JOIN
DELETE
DROP
FROM
FULL JOIN
GROUP BY
INSERT
INTO
JOIN
LEFT JOIN
LIKE
LIMIT
ON
OR
ORDER BY
RIGHT JOIN
SELECT
SET
UPDATE
WHERE

Altri consigli nell'assegnazione dei nomi
Quando andiamo assegnare i nomi delle nostre tabelle e dei nostri campi, esistono altre piccole regole che è meglio seguire. E' bene evitare caratteri particolari all'interno dei nomi. Per un migliore funzionamento, è bene utilizzare solo: E nient'altro. E' bene quindi evitare altri simboli ( ? , . ` ' " @ ù à ò ì è é + * ecc.), utilizzare il carattere di spaziatura o anche il semplice trattino ( - ).
Questo ultimo simbolo, merita un approfondimento a parte. Se ci trovassimo di fronte a un campo dal nome:

voti-totali

Per estrarlo, magari dalla tabella "voti", dovremmo fare:

SELECT `voti-totali` FROM voti

Questo perché la presenza del trattino ( - ) ci impone l'utilizzo del simbolo ` per raggruppare il nome del campo (o della tabella).

Migliorare la leggibilità delle query
Una pratica che seguo da molto tempo per migliorare la leggibilità delle query SQL (con MySQL o altri database) è quella di utilizzare i comandi in maiuscolo e i nomi dei campi in minuscolo. Questo mi è molto utile quando devo scrivere query più strutturate, ad esempio:

SELECT * FROM fornitori WHERE id_prodotto IN (SELECT id_prodotto FROM prodotti_spediti AS o, mezzo_di_trasporto AS s WHERE s.mezzo_di_trasporto LIKE 'gomma%' AND s.mezzo_di_trasporto=o.mezzo_usato)

Casi particolari: gli escape
Esistono casi in cui è necessario applicare gli escape ad alcuni caratteri. Ammettiamo di voler realizzare una query simile:

SELECT * FROM nomeTabella WHERE titolo = 'L'utilità di MySQL';

In questo caso, avremo un errore perché non è possibile usare l'apice sigolo ( ' ) quando abbiamo già usato gli apostrofi come delimitatori del valore del campo. E' necessario quindi applicare l'escape al carattere apostrofo, come segue:

SELECT * FROM nomeTabella WHERE titolo = 'L\'utilità di MySQL';

Un altro carattere che va obbligatoriamente sottoposto a escape è la backslash ( \ ). Come segue:

INSERT INTO nomeTabella VALUES('La backslash (\\) va sottoposta a escape con il segno \\');

Funzioni automatiche per gli escape
Spesso MySQL viene utilizzato nel Web associato ad un linguaggio di sviluppo, come PHP, oppure a una tecnologia lato server come ASP.
Per effettuare gli escape dei caratteri quindi, si possono usare funzioni predefinite:

PHP
Con PHP è possibile sfruttare alcune funzioni predefinite, come ad esempio: PHP comunque, ha molte altre funzioni dedicate a MySQL, disponibili nella documentazione ufficiale.

ASP
Le ASP non prevedono funzioni già realizzate ma sarebbe utile farsene una.

Ad esempio qualcosa tipo:

Function PerSQL(info)
    PerSQL = Replace(Replace(info,"\","\\"),"'","\'")
End Function


© Risorse.net (www.risorse.net)
pagina in versione stampabile:
http://www.risorse.net /mysql/regole_nomi.asp?print=ok