2012-04-26 11 views
10

Ho una breve domanda sulla query mysql.Le virgolette attorno a tabelle e colonne in una query MySQL sono davvero necessarie?

Che cosa è corretto?

SELECT * FROM Persons WHERE Year='1965' 

O

SELECT * FROM `Persons` WHERE `Year` = '1965' 

Si tratta di una scelta personale o si tratta di qualcosa di ciò che è veramente sbagliato?

+0

Grazie per tutte le risposte e per il montaggio. Quindi, se posso, accetterò una risposta (ma quale risposta dovrei accettare?) – JochemQuery

+0

Tendo a non usare i backtick a meno che non abbia chiamato una tabella qualcosa come "table" (che altrimenti causerebbe un errore). Rende la query più pulita. L'eccezione si verifica quando si utilizzano nomi tabella/colonna generati dinamicamente. – HappyTimeGopher

risposta

6

Che cosa succede se si dispone di una tabella denominata table, o una colonna denominata where. Queste sono parole chiave riservate. Se hai usato quelli nelle tue query senza apici inversi, avrebbero generato una query non valida (ovviamente, usare le parole chiave riservate è una cattiva pratica).

SELECT something FROM table WHERE where = 1; 

vs.

SELECT something FROM `table` WHERE `where` = 1; 
+1

Tutte le risposte sono abbastanza buone. Ma questo è il migliore per me! Grazie. – JochemQuery

7

Entrambi sono corretti, ma il secondo sarà SEMPRE accettato, anche quando si utilizzano parole chiave o funzioni come while e NOW() che normalmente sarebbero visti come operatori.

2

Entrambi i metodi sono corrette, la singola virgoletta indica inizio e la fine di una stringa.

Pertanto, se ad esempio si utilizza un alias di colonna con uno spazio come Birth year, sarà necessario utilizzare la virgoletta singola come questa;

... WHERE `Birth year` = `1965` 

Tuttavia, non è consigliabile utilizzare solo più di una parola negli alias.

E come @Cody Caughlan ha detto anche quando si utilizza MySQL reserved words.

Problemi correlati