Maison  >  Article  >  base de données  >  Pourquoi devons-nous ajouter des backticks dans les instructions MySQL ?

Pourquoi devons-nous ajouter des backticks dans les instructions MySQL ?

大家讲道理
大家讲道理original
2017-04-16 14:31:582898parcourir

Dans la déclaration MySQL, on rencontre parfois souvent des backticks (`` Au début, je ne savais pas ce que ça signifiait.


Select * from `member` order by posts desc limit 0,10;


Il s'agit de distinguer les mots réservés de MYSQL introduit avec des personnages ordinaires.

Par exemple : SELECT `select` FROM `test` WHERE select='Field value'

Dans la table de test, il y a un champ de sélection. Si aucun backticks n'est utilisé, MYSQL considérera select comme un mot réservé et provoquera une erreur. Par conséquent, si a un mot réservé MYSQL comme champ, des backticks doivent être ajoutés pour distinguer .

Les guillemets sont généralement utilisés dans les valeurs de champ, si la valeur du champ est un caractère ou une chaîne, Ajoutez ensuite des guillemets , tels que : select='field value'

Les tables construites sans backticks ne peuvent pas contenir MYSQL Mots réservés, sinon une erreur se produit

Backtick `, le symbole à gauche du chiffre 1.

Les mots réservés ne peuvent pas être utilisés dans les noms de table , tels que desc. Des backticks doivent être ajoutés pour les distinguer, mais les backticks peuvent être ignorés lors de l'utilisation de noms de table.

créer une table desc a signalé une erreur

créer une table `desc` a réussi

créer une table `test `Réussi

test de suppression de table réussi

Les mots réservés ne peuvent pas être utilisés pour les noms de champs, tels que desc , à ce stade, des backticks doivent être ajoutés, et des backticks doivent également être ajoutés lors de l'utilisation de l'insertion, etc.

créer la table `test`(`desc` varchar(255)) a réussi

insérer dans test(desc) valeurs('fxf' ) a échoué

insérer dans test(`desc`) valeurs('fxf') a réussi

Mots réservés courants dans MySQL


Soyez prudent lorsque vous utilisez MySQL , n'utilisez pas ses mots réservés comme noms de table ou de colonne, sinon des erreurs inexplicables se produiront.

Hier, j'ai créé une table avec une colonne nommée intervalle (intervalle de temps). Par conséquent, les données n'ont pas pu être insérées. Enfin, j'ai découvert que l'intervalle est réservé. mot de MySQL.

Si des erreurs similaires se produisent à l'avenir, vous devez d'abord vous demander si elles sont causées par des conflits de noms de table ou de noms de colonnes.

J'ai trouvé une liste de mots réservés MySQL sur Internet à titre de référence uniquement.


AJOUTER TOUS ALTER
ANALYSER ET COMME
ASC ASENSIBLE AVANT
ENTRE BIGINT BINAIRE
BLOB LES DEUX PAR
APPEL CASCADE CAS
CHANGEMENT CHAR CARACTÈRE
VÉRIFIER ASSEMBLER COLONNE
ÉTAT CONNEXION CONTRAINTE
CONTINUER CONVERTIR CRÉER
CROSS CURRENT_DATE CURRENT_TIME
CURRENT_TIMESTAMP CURRENT_USER CURSEUR
BASE DE DONNÉES BASES DE DONNÉES DAY_HOUR
DAY_MICROSECOND DAY_MINUTE DAY_SECOND
DEC DECIMAL DÉCLARE
DÉFAUT RETARDÉ SUPPRIMER
DESC DÉCRIRE DÉTERMINISTE
DISTINCT DISTINCTROW p
DOUBLE DROP DOUBLE
CHAC AUTRE ELSESI
FERMÉ ÉCHAPPÉ EXISTE
SORTIE EXPLIQUER FAUX
FETCH FLOAT FLOAT4
FLOAT8 POUR FORCE
ÉTRANGER DE TEXTE COMPLET
GOTO subvention GROUPE
AVANT HIGH_PRIORITY HOUR_MICROSECOND
HOUR_MINUTE HOUR_SECOND IF
IGNORER IN INDEX
INFILE INTÉRIEUR INOUT
INSENSIBLE INSERT INT
INT1 INT2 INT3
INT4 INT8 INTEGER
INTERVALLE INTO EST
ITERATE JOIN CLÉ
CLÉS TUER ÉTIQUETTE
EN DIRECT PARTIR GAUCHE
COMME LIMITE LINÉAIRE
LIGNES CHARGER LOCALTIME
LOCALTIMESTAMP VERROUILLAGE LONG
LONGBLOB LONGTEXT LOOP
LOW_PRIORITY MATCH MEDIUMBLOB
MEDIUMINT MEDIUMTEXT MIDDLEINT
MINUTE_MICROSECOND MINUTE_SECOND MOD
MODIFIE NATUREL PAS
NO_WRITE_TO_BINLOG NULL NUMERIC
ON OPTIMISER OPTION
OPTIONNELLEMENT OU COMMANDE
OUT EXTÉRIEUR OUTFILE
PRÉCISION PRIMAIRE PROCÉDURE
PURGE RAID0 GAMME
LECTURE LECTURES REAL
REFERENCES REGEXP RELEASE
RENAME REPEAT REMPLACER
EXIGER RESTRICTER RETOUR
REVOQUE DROITE RLIKE
SCHEMA SCHEMAS SECOND_MICROSECONDE
SELECT SENSIBLE SEPARATEUR
SET AFFICHER SMALLINT
SPATIAL SPÉCIFIQUE SQL
SQLEXCEPTION SQLSTATE SQLWARNING
SQL_BIG_RESULT SQL_CALC_FOUND_ROWS SQL_SMALL_RESULT
SSL STARTING STRAIGHT_JOIN
TABLE TERMINÉE PUIS
TINYBLOB TINYINT TINYTEXT
TO TRAILING TRIGGER
VRAI ANNULER UNION
UNIQUE DÉVERROUILLER NON SIGNÉ
MISE À JOUR UTILISATION UTILISATION
UTILISATION UTC_DATE UTC_TIME
UTC_TIMESTAMP VALUES VARBINARY
VARCHAR VARCHARACTER VARIANT
QUAND PENDANT
AVEC ÉCRIRE X509
XOR ANNÉE_MOIS ZEROFILL

注:MySQL允许部分关键字用做未引起来的识别符,因为许多人以前曾使用过它们。如:ACTION、BIT、DATE、ENUM、NO、TEXT、TIME、TIMESTAMP


所以为了安全起见可以在表名和字段名上都加上``。

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn