MySQL sorgularında backtick (`) kullanmanın faydaları?


25

MySQL'de backtick ( `) sembolüyle veya onsuz sorgular oluşturabiliriz . Örnek:

  1. SELECT * FROM TEST;
  2. SELECT * FROM `TEST`;

Her ikisi de mysql konsolunda iyi çalışıyor.

Aralarında herhangi bir teknik fark var mı?

`Basit sorgular üzerinden ( ) kullanmanın faydası var mı ?

Yanıtlar:


32

Bunlara alıntı tanımlayıcıları denir ve ayrıştırıcıya aralarındaki metni değişmez bir dize olarak kullanmalarını söylerler. Anahtar kelime veya boşluk içeren bir sütun veya tablonuz olduğunda bunlar kullanışlıdır. Örneğin, aşağıdaki işe yaramaz:

CREATE TABLE my table (id INT);

Ancak aşağıdakiler olacaktır:

CREATE TABLE `my table` (id INT);

Ayrıca, COUNTayrılmış bir anahtar kelime olduğundan , aşağıdakiler bir hata alır :

SELECT count FROM some_table

Ancak aşağıdakiler doğru şekilde ayrıştırılır:

SELECT `count` FROM some_table

Umarım bu sana yardımcı olur.


24

Nesne tanımlayıcıları etrafında bir şey kullanmak istiyorsanız, en azından standart çift tırnak kullanın: "

Bu MySQL, PostgreSQL, SQL Server, Oracle vb. Gibi yerlerde çalışır. MySQL için varsayılan yapılandırmaya bağlı olarak , SQL modu ansi_quotes seçeneğine ihtiyacınız olabilir :

SET sql_mode = 'ANSI_QUOTES';

Backticks `sadece MySQL'de kullanılır, başka bir DBMS markasında işe yaramayacak bir SQL türü öğrenirsiniz.


6

Tablo isimlerinde boşluklara sahip olabileceğiniz anlamına gelir. Tabii ki, özel çekici değil. SQL Server'ın [] ile aynı.


3

Ayrılmış bir isim içeren bir kolonunuz varsa,

örneğin: Böyle bir ifadeyi sorgulayabilirsiniz:

select * from tablename group by `group`;

1

Benim açımdan, @ Mr.Brownstone cevabı sadece kısmen doğrudur.

Backtick `, MySQL'de tanımlayıcıları temsil eden değişmezleri (dizeleri değil) sınırlandırmak için kullanılır.

Bu, tanımlayıcı olarak genellikle boşluk, ayrılmış sözcük vb. Gibi kabul edilmeyen karakterleri kullanmanızı sağlar. Örneğin:

SELECT * FROM `Strange table name`;

Ayrıca önemli olan, ayrıştırıcının varolmayan bir sütunu seçmek gibi yanlış bir şey yaptığınızı bilmesini de sağlamasıdır. Örneğin:

SELECT notexistingcolumn FROM atable;

Varsa atableancak notexistingcolumnsütun yoksa, "notexistingcolumn" değişmez dizgisini bir değer olarak seçerek (ve muhtemelen bir uyarı yayarak) değişmez dizgisi olarak yorumlanacaktır.

Bunun yerine, kullanırsanız:

SELECT `notexistingcolumn` FROM `atable`;

Bunun notexistingcolumnvar olmayan bir sütunun adı olduğunu ve bir hata attığını anlar.

Bence tanımlayıcıları takma adları da dahil olmak üzere backtick'lerle çevrelemek ve tanımlayıcılar için ayrılmış sözcükler ve garip karakterler kullanmaktan kaçınmaya çalışmak her zaman tercih edilir.

MySQL'in backtick'i hakkında daha fazla bilgiyi https://dev.mysql.com/doc/refman/8.0/en/identifiers.html adresinde bulabilirsiniz .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.