it-swarm-eu.dev

Výhody použití backtick (`) v MySQL dotazech?

V MySQL můžeme vytvářet dotazy s backtickem nebo bez něj (`) symbol. Příklad:

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

Oba fungují dobře v konzole mysql.

Existuje nějaký technický rozdíl mezi nimi?

Existuje nějaká výhoda při používání (`) přes jednoduché dotazy?

26
Satish Pandey

Nazývají se citované identifikátory a říkají analyzátoru, aby mezi nimi zpracovával text jako řetězec literálu. Jsou užitečné, když máte sloupec nebo tabulku, která obsahuje klíčové slovo nebo mezeru. Například následující by nefungovalo:

CREATE TABLE my table (id INT);

Ale následující by:

CREATE TABLE `my table` (id INT);

Následující chyba by také získala chybu, protože COUNT je vyhrazené klíčové slovo:

SELECT count FROM some_table

Následující by však byly správně analyzovány:

SELECT `count` FROM some_table

Doufám, že vám to pomůže.

34
Mr.Brownstone

Pokud chcete použít něco kolem identifikátorů objektů, použijte alespoň standardní dvojité uvozovky: "

To funguje v MySQL, PostgreSQL, SQL Serveru, Oracle atd. Pro MySQL budete možná potřebovat režim SQLansi_quotes , v závislosti na výchozí konfiguraci:

SET sql_mode = 'ANSI_QUOTES';

Backticks `se používají pouze v MySQL, naučíte se typ SQL, který nebude fungovat v žádné jiné značce DBMS.

24
Frank Heikens

To znamená, že v názvech tabulek můžete mít mezery. Samozřejmě to není nijak zvlášť přitažlivé. Stejné jako u serveru SQL Server [].

6
Rob Farley

Může být užitečné, pokud máte sloupec s názvem, který je rezervován,

např .: Můžete zadat dotaz jako je tento:

select * from tablename group by `group`;
3
HVNSweeting

Z mého pohledu je @ Mr.Brownstone odpověď pouze částečně správná.

Backtick ` se používá v MySQL k vymezení literálů, které představují identifikátory (nikoli řetězce).

To vám umožní použít jako identifikátory obvykle nepřijatelné znaky, jako jsou mezery, vyhrazená slova atd. Například:

SELECT * FROM `Strange table name`;

Důležité je také to, že také umožňuje analyzátoru vědět, zda děláte něco špatného, ​​jako je výběr sloupce, který neexistuje. Například:

SELECT notexistingcolumn FROM atable;

Pokud atable existuje, ale sloupec notexistingcolumn neexistuje, bude interpretován jako doslovný řetězec „neexistující sloupec“, který jej vybere jako hodnotu (a pravděpodobně vydá varování).

Místo toho, pokud používáte:

SELECT `notexistingcolumn` FROM `atable`;

Rozpozná, že notexistingcolumn je název sloupce, který neexistuje a vyvolá chybu.

Myslím, že je vždy vhodnější prostorové identifikátory backticks včetně aliasu a pokusit se vyhnout použití vyhrazených slov a podivných znaků pro identifikátory.

Více o backticku MySQL si můžete přečíst na https://dev.mysql.com/doc/refman/8.0/en/identifiers.html .

1
PhoneixS