CREATE TABLE sales ( ID INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, [Item Type] VARCHAR(30) NULL, [Sales Channel] VARCHAR(30) NULL, [Order Priority] VARCHAR(30) NULL, [Order Date] DATE NULL, [Order ID] DECIMAL NULL, [Ship Date] DATE NULL ) Dear guys, please with how to use as right syntax for the table columns: e.g. Item Type - here "type" already existing in mysql, Sales Channel - here "channel" already exists in mysql as operator names. but i need to use as column names for the table. Thanks!
3 Réponses :
Si le nom de la table ou du nom de la colonne est un mot-clé ou s'il contient des espaces , et que vous souhaitez toujours pour utiliser ce nom, citez-les entre les backticks '' '. Votre requête doit donc ressembler à:
CREATE TABLE sales (
ID INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
`Item Type` VARCHAR(30) NULL,
`Sales Channel` VARCHAR(30) NULL,
`Order Priority` VARCHAR(30) NULL,
`Order Date` DATE NULL,
`Order ID` DECIMAL NULL,
`Ship Date` DATE NULL
);
Essayez-la vous-même sur SQL Fiddle: http://sqlfiddle.com/#!9/0332f0
P.S .: Les crochets [] sont la notation dans MS SQL Server. Cela ne fonctionnera pas avec MySQL.
"Type d'élément" VARCHAR (30) NON NULL --- montrant l'identifiant attendu ... quand j'ai changé le nom en "Pays" ... le message disparaît .. ????
Pas sûr mon pote, pouvez-vous partager l'erreur en modifiant la question. Voici le lien vers SQL Fiddle où j'ai mis le type d'élément VARCHAR (30) NOT NULL : sqlfiddle.com / #! 9 / 6558c1
Il existe différentes manières de procéder.
Une bonne référence est ici
le backtick sous "ESC" ... fonctionne ... ne savait pas utiliser avant ..
Vous pouvez utiliser des guillemets doubles (") pour échapper au mot-clé réservé. - ajoutez que le mode SQL ANSI_QUOTES doit être activé pour utiliser des guillemets doubles. Et je pense que (2 ) est préférable (car elle ne dépend pas du mode SQL du serveur) et doit être placée avant.
Corrigez les noms de vos colonnes afin qu'elles n'aient pas à être échappées! Cela simplifiera beaucoup le travail ultérieur:
CREATE TABLE sales (
SalesID INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
ItemType VARCHAR(30) NULL,
SalesChannel VARCHAR(30) NULL,
OrderPriority VARCHAR(30) NULL,
OrderDate DATE NULL,
OrderID DECIMAL NULL,
ShipDate DATE NULL
);
Je recommande d'utiliser le nom de la table pour id . De plus, vous utilisez DECIMAL sans précision ni échelle. Hautement NON RECOMMANDÉ. Ne dépendez pas des valeurs par défaut de la base de données (savez-vous même ce qu'elles sont?).
Vous devriez également inclure des références de clés étrangères. Vous devriez donc avoir une contrainte de clé étrangère dans la table des commandes.
J'ai toutes les autres choses OK sauf celles mentionnées ci-dessus. Oui, monsieur, j'ai tout changé en conséquence ... thnx
la même chose se passe avec les autres noms: ordre de priorité - "ordre", etc. le message montre qu'il utilise les bonnes syntaxes
est ce serveur mysql ou sql? vous entourez les noms de vos colonnes de crochets ([]), mysql utilise des accolades (`) pour entourer les noms. Si vous utilisez vraiment mysql, la réponse serait de remplacer vos crochets par des contre-crochets (c'est le caractère sur la même touche que le tilde (~)).
autre commentaire, si vous pouvez éviter d'utiliser des mots-clés réservés pour les noms de colonnes, je vous suggère fortement de le faire. vous évitez toute possibilité de problèmes en aval.
mysql, monsieur. ce devrait être ([]) ou juste []
de toute façon, cela ne fonctionne pas non plus avec ... une icône x rouge apparaît.
juste pour clarifier pour tous ceux qui recherchent des réponses ici, les crochets ne sont pas une option valide dans mysql pour ce cas d'utilisation indépendamment de ce que dit OP