¿Usar backticks (`) en lugar de comillas simples (') en una sentencia SQL?

5 ene 2017, 00:33:46
Vistas: 14.2K
Votos: 3

Tengo este código que se muestra parcialmente aquí por brevedad:

global $wpdb;
// crea jwp_bids en la base de datos si no existe
$table = $wpdb->prefix . "jwp_bids"; 
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE IF NOT EXISTS $table (
    `id` mediumint(9) NOT NULL AUTO_INCREMENT,
    `bid_amt` text NOT NULL,

Cuando escribí originalmente el código, usé ' dentro de los paréntesis y el código no funcionaba.

Luego cambié las comillas simples por backticks y el código se ejecutó perfectamente.

¿Alguien podría explicar:

  • ¿Cuál es el término correcto para estas comillas especiales ` ?
  • ¿Por qué se usan en lugar de comillas simples ' ?
  • ¿Esto aplica solo para MySQL? ¿WordPress? ¿PHP?
  • ¿Dónde puedo encontrar una referencia técnica sobre esto para no molestar a esta excelente comunidad?
sql
3
Comentarios

¿Qué sucede si omites por completo las comillas invertidas, sigue funcionando? Estoy bastante seguro de que esto es un matiz de MySQL y tiene que ver con interpretar los nombres de las columnas como cadenas (cuando se usan comillas simples) en lugar de identificarlos como columnas (usando comillas invertidas o nada en absoluto).

Howdy_McGee Howdy_McGee
5 ene 2017 00:40:42

Voy a hacer una prueba para ver. ¿Cuál es el mejor recurso de referencia para MySQL donde se explican este tipo de cosas?

James James
5 ene 2017 00:55:48

Vale, entonces funciona SIN comillas invertidas. ¿Alguna referencia técnica buena para estos detalles?

James James
5 ene 2017 01:49:16
Todas las respuestas a la pregunta 1
2

Las comillas invertidas y las comillas regulares (tanto simples como dobles) tienen significados distintos en SQL. Las comillas indican una cadena literal, mientras que las comillas invertidas son identificadores entrecomillados. Esto no es específico de WordPress, sino una forma general en SQL de entrecomillar columnas o tablas.

Por ejemplo, imagina que estás ejecutando una consulta comparando dos columnas:

SELECT * FROM wp_posts WHERE post_name = post_title

Si comparas con comillas simples ('post_name' = 'post_title') esto compararía las cadenas literales, que nunca serían iguales. Sin embargo, con comillas invertidas, se referiría a la columna.

¿Por qué usar comillas invertidas? Si una columna se llama igual que una palabra reservada en SQL, o contiene un espacio, necesitas entrecomillarla. Por ejemplo, si tuvieras una columna llamada count, tendrías que entrecomillarla cada vez que te refieras a ella, ya que COUNT() es una función (y por lo tanto, una palabra reservada) en MySQL.

Consulta también https://dba.stackexchange.com/questions/23129/benefits-of-using-backtick-in-mysql-queries

5 ene 2017 03:44:04
Comentarios

"Si comparas con comillas simples ('post_title' = 'post_title') esto compararía las cadenas literales, que nunca son iguales." De hecho, parecen bastante iguales. ¿Quizás quisiste decir 'post_name' = 'post_title'?

Frhay Frhay
25 jun 2018 19:45:43

Los backticks no son una forma de citar columnas o tablas en SQL. Es más bien específico de MySQL.

Juan Cespedes Juan Cespedes
25 oct 2024 12:29:24