Mai mult
Folosind backticks în jurul valorii de câmpul nume
După ce a citit câteva răspunsuri și comentarii la unele întrebări SQL aici, și, de asemenea, a auzit că un prieten de-al meu lucrează într-un loc care are o politică care interzice ei, am'm întrebam dacă nu's ceva în neregulă cu ajutorul backticks în jurul valorii de câmpul nume din MySQL.
Asta este:
SELECT `id`, `name`, `anotherfield` ...
-- vs --
SELECT id, name, anotherfield ...
171
11
Folosind backticks vă permite să utilizați caractere alternative. În query scris de l's nu e o problemă, dar dacă cineva presupune că puteți folosi doar backticks, cred că te lasă să scapi cu ridicole chestii de genul
Care este, desigur, de a genera prost numit mese.
Daca're doar a fi concis nu't vedea o problema cu ea, te'll notă dacă executați interogarea ca atare
Generate de avertizare care vine din spate va avea back-căpușe și calificat pe deplin numele de masă. Deci, dacă te're folosind generație de interogare caracteristici și automat re-scrierea de interogări, backticks ar face orice pentru parsarea codul mai puțin confuz.
Cred cu toate acestea, în loc de mandatare dacă este sau nu puteți utiliza backticks, acestea ar trebui să aibă un standard pentru nume. Se rezolvă mai 'real' probleme.
Singura problema cu backticks este că ei nu sunt ANSI-SQL compatibil, de exemplu, ei nu't de muncă în SQL Server.
Dacă există o șansă ar fi să port SQL la o altă bază de date, utilizați ghilimele duble.
Mi se face o mulțime de sens să le folosească în orice moment atunci când se ocupă cu nume de câmp.
Backticks nu't o parte din standard ANSI SQL. De la mysql manual:
Deci, dacă utilizați backticks și apoi decide să se mute departe de MySQL, ai o problemă (deși probabil că aveți o mulțime de probleme mai mari, precum și)
Nu e't nimic rău, dacă vă păstrați folosind MYSQL, cu excepția, poate, vizual fuziness de interogări. Dar ele nu permit utilizarea de cuvinte cheie rezervate sau încorporate spații de masă și coloana nume. Acesta este un nu-nu și cu cele mai multe motoare de baze de date și va preveni orice migrației la o dată ulterioară.
Ca pentru o citire ușoară, mulți oameni folosesc capace pentru SQL cuvinte cheie, de exemplu.
Dacă vă întreb pentru mine, backticks ar trebui să fie întotdeauna utilizate. Dar există unele motive pentru care o echipa poate prefera să nu le folosească.
Avantaje:
Dezavantaje:
L's mult mai ușor pentru a căuta cod-bază pentru ceva în backticks. Spune că ai un tabel numit "eveniment".
grep -r "eveniment" *
ar putea reveni sute de rezultate.grep -r "\
caz`" *` va reveni nimic, probabil corelarea bazei de date.Ei bine, din câte știu, în scopul de a utiliza backticks este astfel încât să puteți utiliza numele pe care coincide cu cuvinte cheie rezervate. Deci, dacă numele e't coliziune cu un cuvânt cheie rezervat, nu't vedea nici un motiv pentru a utiliza backticks. Dar, ca's nici un motiv să le interzică, fie.
Lucru simplu despre backtick ` este utilizat pentru a desemna identificator ca database_name, table_name etc, și singur citat '', citat dublu "" pentru literali șir, în timp ce "" utilizați pentru a imprima valoarea ca este si '' print valoarea variabilă continuu sau într-un alt caz imprima textul lui au.
dacă utilizați un nume de domeniu implicit mysql sau mssql valorile de exemplu "starea", va trebui să utilizați backticks ( "selectați "stare" din table_name" sau "select id from table_name unde "stare" =1" ). deoarece mysql returnează erori sau nu funcționează interogare.
Principala utilizare a backticks (`) în SQL este de a le folosi în situații în care aveți de gând pentru a apela din nou în viitoarea clauze. De fiecare dată este recomandat să utilizați ghilimele duble("").
De exemplu
În declarația de mai sus vezi cum Persoana și de Locație este folosit din nou în `GROUP BY clauza.
În loc de a folosi
Am folosit
Numai atunci când apar astfel de situații, este util de a folosi backticks. În toate celelalte momente, folosind ghilimele duble este recomandat.