Quelqu'un s'y connait en SQL ?
-
Hello !
J’ai une question par rapport au SQL, et je ne trouve la réponse nulle part. J’aurais donc besoin de quelqu’un qui s’y connait ^^.
Voila, en fait j’essaie de (ré)apprendre le SQL pour mon futur job. J’ai trouvé un cours en ligne qui apprend les bases. Du coup j’ai appris les types de données et tout ça, j’ai appris à créer une base de donnée, à créer une table dans cette base, à modifier la table en ajoutant/supprimant/modifiant des colonnes.
Je précise que je fais ça avec MySQL 8.0.Et là j’en suis au chapitre où on apprend à remplir la table. En utilisant la requête INSERT INTO.
Donc ça ça va, j’ai mis des trucs dans la table, super.
Et il y a un moment où ça ne marche pas, et je ne trouve pas de solution
En gros l’exemple du cours, c’est de créer une base de données d’un élevage d’animaux, et donc il y a marqué les données à entrer dans la table. Et à un moment il y a ça :INSERT INTO Animal (espece, sexe, date_naissance, nom, commentaires) VALUES
(‘chat’, ‘M’, ‘2009-05-14 06:42:00’, ‘Boucan’, NULL),
(‘chat’,‘F’,‘2006-05-19 16:06:00’,‘Callune’,NULL),
(‘chat’,‘F’,‘2009-05-14 06:45:00’,‘Boule’,NULL),
(‘chat’,‘F’,‘2008-04-20 03:26:00’,‘Zara’,NULL),
(‘chat’,‘F’,‘2007-03-12 12:00:00’,‘Milla’,NULL),
(‘chat’,‘F’,‘2006-05-19 15:59:00’,‘Feta’,NULL),
(‘chat’,‘F’,‘2008-04-20 03:20:00’,‘Bilba’,‘Sourde de l’oreille droite à 80%’),
(‘chat’,‘F’,‘2007-03-12 11:54:00’,‘Cracotte’,NULL),
(‘chat’,‘F’,‘2006-05-19 16:16:00’,‘Cawette’,NULL),
(‘tortue’,‘F’,‘2007-04-01 18:17:00’,‘Nikki’,NULL),
(‘tortue’,‘F’,‘2009-03-24 08:23:00’,‘Tortilla’,NULL),
(‘tortue’,‘F’,‘2009-03-26 01:24:00’,‘Scroupy’,NULL),
(‘tortue’,‘F’,‘2006-03-15 14:56:00’,‘Lulla’,NULL),
(‘tortue’,‘F’,‘2008-03-15 12:02:00’,‘Dana’,NULL),
(‘tortue’,‘F’,‘2009-05-25 19:57:00’,‘Cheli’,NULL),
(‘tortue’,‘F’,‘2007-04-01 03:54:00’,‘Chicaca’,NULL),
(‘tortue’,‘F’,‘2006-03-15 14:26:00’,‘Redbul’,‘Insomniaque’),
(‘tortue’,‘M’,‘2007-04-02 01:45:00’,‘Spoutnik’,NULL),
(‘tortue’,‘M’,‘2008-03-16 08:20:00’,‘Bubulle’,NULL),
(‘tortue’,‘M’,‘2008-03-15 18:45:00’,‘Relou’,‘Surpoids’),
(‘tortue’,‘M’,‘2009-05-25 18:54:00’,‘Bulbizard’,NULL),
(‘perroquet’,‘M’,‘2007-03-04 19:36:00’,‘Safran’,NULL),
(‘perroquet’,‘M’,‘2008-02-20 02:50:00’,‘Gingko’,NULL),
(‘perroquet’,‘M’,‘2009-03-26 08:28:00’,‘Bavard’,NULL),
(‘perroquet’,‘F’,‘2009-03-26 07:55:00’,‘Parlotte’,NULL);Et ça ne marche pas, alors que ça marchait jusque là. Voila ce que ça me met :
La ligne (‘chat’,‘F’,‘2008-04-20 03:20:00’,‘Bilba’,‘Sourde de l’oreille droite à 80%’), fait tout buger. Pour les lignes d’après, au lieu d’avoir le symbole ->, il y a le symbole '>. Je ne sais pas à quoi ça correspond…
Et à la fin, il y a bien le point-virgule, mais quand j’appuie sur entrée, au lieu de faire le truc ou de me mettre un message d’erreur, ça saute juste une ligne, avec toujours ce symbole '>. Ce qui m’oblige à fermer l’invite de commande puis à rouvrir et à tout recommencer, car je ne peux plus rien faire. Si je continuer à appuyer sur entrée, ça saute des lignes et ça met '>. Si j’écris une autre requête avec le point-virgule à la fin, ça ne la fait pas, ça saute juste une ligne et ça met '>.J’ai à peu près compris que le problème vient du %. En tout cas je ne vois pas de quoi ça peut venir d’autre, à moins que j’ai fait une erreur et que je l’ai totalement pas vue.
Donc j’ai essayé avec le caractère d’échappement, le fameux backslash. Mais ça ne marche pas non plus :
(pour bien montrer le problème, je vais virer les autres lignes et mettre juste la ligne qui merde.)
Voila, ça ne marche pas, ça me dit “unknown command ‘\%’.”Donc je me suis dit “wtf, pour échapper le symbole % c’est pas avec un backslash ?”. J’ai regardé dans la documentation, mais la seule chose que j’ai trouvé c’est ça :
A l’intérieur d’une chaîne, certains séquences de caractères ont une signification spéciale. Chacune d’elle commence par un anti-slash (‘\’), connu comme le caractère d’échappement. MySQL reconnaît les séquences suivantes :
\0 Un 0 ASCII (NUL).
\’ Un guillemet simple (‘'’).
\" Un guillemet double (‘"’).
\b Un effacement.
\n Une nouvelle ligne.
\r Un retour chariot.
\t Une tabulation.
\z ASCII(26) (Contrôle-Z). Ce caractère peut être encodé pour vous éviter des problèmes avec Windows, vu qu’il équivaut à une fin de fichier sur cet OS. (ASCII(26) vous posera des problèmes si vous utilisez mysql base < fichier.)
\\ Un anti-slash (‘\’).
\% Un signe pourcentage littéral : ‘%’. Voir les notes ci-dessous.
\_ Un signe souligné littéral : ‘_’. Voir les notes ci-dessous.Donc quoi, c’est bien avec un backslash quand même ? Alors pourquoi ça ne veut pas me le faire ?
J’ai cherché sur internet si des gens avaient le même problème, mais à chaque fois ils posent des questions sur des trucs beaucoup trop compliqués par rapport à mon problème, genre pour mettre le % dans la fonction LIKE ou je ne sais quoi, j’ai pas compris, j’en suis qu’aux bases T_T.
Le seul truc que j’ai trouvé c’est ça :
https://stackoverflow.com/questions/9325507/percentage-sign-in-an-insert
La personne demande comment mettre le symbole % dans une chaîne de caractère.
Parmi les réponses, il y a plusieurs solutions :
Mettre ‘The interest rate is 7’ + CHAR(37); au lieu de ‘The interest rate is 7%’ (j’ai essayé, ça n’a pas marché).
Mettre le \, j’ai essayé ça n’a pas marché.
Doubler le %, donc mettre %%. J’ai essayé, ça n’a pas marché.Le cours en ligne que je fais, bah c’est un mec (ou une fille, j’en sais rien) qui a écrit un cours et l’a mis sur internet, sur openclassroom. Du coup, je ne peux pas lui poser directement la question. Et comme je ne trouve pas sur internet, peut-être qu’ici quelqu’un saura m’aider ^^.
Merci !! ^^
-
C’est pas ton apostrophe qui fait toobuguer ?
-
@honey a dit dans Quelqu'un s'y connait en SQL ? :
C’est pas ton apostrophe qui fait toobuguer ?
Ahh peut-être ! Attend, j’essaie !
-
Ah bah si, c’était CARREMENT ça !!
MERCI !!!En plus c’est tout con, j’aurais dû le voir
Mais comme le % me perturbait, j’ai cru que ça venait de là et j’ai même pas vu le vrai problème…
Merci beaucoup !
-
-
Bon ben j’allais répondre mais @honey m’a volé la vedette !
-
Par contre c’est dingue, la base de véto, c’est vraiment la base pour apprendre le SQL, j’ai eu ça en cours aussi
-
(‘tortue’,‘F’,‘2006-03-15 14:26:00’,‘Redbul’,‘Insomniaque’),
-
@maléfique a dit dans Quelqu'un s'y connait en SQL ? :
Par contre c’est dingue, la base de véto, c’est vraiment la base pour apprendre le SQL, j’ai eu ça en cours aussi
Mdr en même temps c’est un exemple facile à comprendre j’imagine. Quand j’aurais appris les bases et que je pourrais créer une base de données (relativement simple) toute seule comme une grande, j’en ferais une avec des Pokémon.
Sinon j’avais déjà appris les bases du SQL quand j’étais en prépa de bio, mais ça remonte à quelques années, j’ai tout oublié. C’est pour ça que je recommence de zéro. Je n’ai pas oublié les “principes” de la programmation, mais j’ai oublié les syntaxes et tout ça. J’avais fait du Perl, du Python, du SQL, de l’html et du css.Bref, j’aurais dû voir ce problème tout con d’apostrophe, je me sens débile >.>
-
@sylareen Y’a pas à se sentir débile, des trucs comme ça, j’en ai tous les jours, et je demande de l’aide parce que j’ai tellement le nez dedans, que j’arrive pas à voir ma bourde. Et mes collègues pareil, le nombre de fois où on a fait une grosse merde mais qu’on ne sait pas le voir car on arrive pas à prendre du recul, c’est tout le temps.
-
@maléfique a dit dans Quelqu'un s'y connait en SQL ? :
@sylareen Y’a pas à se sentir débile, des trucs comme ça, j’en ai tous les jours, et je demande de l’aide parce que j’ai tellement le nez dedans, que j’arrive pas à voir ma bourde. Et mes collègues pareil, le nombre de fois où on a fait une grosse merde mais qu’on ne sait pas le voir car on arrive pas à prendre du recul, c’est tout le temps.
Ca me rassure un peu ^^.
Après si j’avais écrit les lignes à la main, j’aurais sans doute vu l’apostrophe de merde. Mais vu que j’ai copié collé tout le bloc, j’ai pas vu. J’ai vu que cette ligne merdait, et le seul truc qui m’a sauté aux yeux et qui était dans cette ligne et pas les autres, c’était le %. Et comme je sais que c’est utilisé pour des trucs en SQL je me suis dit que ça devait être un caractère spécial, du coup je me suis focalisée là dessus