STIC Discussion:STIC II - exercice 11 (Nestor-Pixel)

De EduTech Wiki
Aller à la navigation Aller à la recherche

NULL ou NOT NULL

Je me posais la question alors... :

Si un champ est type "NULL" et qu'il ne contient pas de données.. Lors d'un SELECT, la valeur renvoyé est "NULL", un marqueur spécial. Si le champ est de type "NOT NULL" et que le champ ne contient pas de données. Un SELECT va renvoyé "" (rien). C'est une source de débat et pas mal d'info pertinente peuvent être trouvé ici : wikipedia.

Pour faire simple, NULL = un marqueur spécial != une valeur . C'est une non-valeur.... --Davidc 22 février 2008 à 12:11 (CET)Répondre[répondre]

Design database

Un chouette lien (un peu technique), mais bon : http://en.wikipedia.org/wiki/Database_design

Ça marche pô... ??

Petite liste des erreurs classiques :

  • J'ai mis un DEFAULT à un champ qui est AUTO INCREMENTé ...
    • pas bien, une valeur auto-incrémenté a pour DEFAULT sa valeur maximale +1, le redéclarer, c'est comme donner trop de caféine à MySQL...
  • J'ai déclaré un champ NOT NULL et je ne lui ai pas donné de DEFAULT '' ou 'something' ...
    • pas bien, si un champ ne peut renvoyer la valeur null, il doit nécessairement renvoyer quelque chose, même rien ==> DEFAULT '' . Sinon, c'est comme lui demander de signer un chèque en blanc, ça l'inquiète un peu...
  • Le nom de mon champ est écrit avec un accent (aigu|grave|x)
    • Buzz avec MySQL avec l'encodage des caractères, évitez comme la peste les mots accentués en langage de code (sauf s'il s'agit de phrase apparaissant à l'écran du client)


..ajoutez vos découvertes :P ..

Drop dropons dropez

Bonjour, je vais poser une question bête : ça veut dire quoi "DROP TABLE IF EXISTS student; DROP TABLE IF EXISTS exercice;" (voir exo) ? "Drop" ça signifie "supprimer", non ? pourquoi supprimer ?

merci pour vos lumières et merci bcp à ceusses qui ont complété mon exo 10

Sylviane 4 mars


(d'après moi) ça veut dire qu'avant de créer une nouvelle table, on supprime celles qui ont le même nom (ici student et exercice). Si on le fait pas, on risque de se retrouver avec les données de l'ancienne table dans la nouvelle, et là catastrophe parce qu'on aura des vieilles valeurs dans notre table... et on comprendra pas pourquoi :(

--Bertrand Schneider 4 mars 2008 à 16:36 (CET)Répondre[répondre]

C'est à peu près ça.. Tu as tout bon avec la grande loi du démon SQL: il ne peut posséder 2 tables du même nom (dans le même schéma (BdD)). Mais au lieu de faire un rajout de colonnes et des mix de soirées genre crevette épicées au paprika, servi avec une sauce à la ciboulette. Tu vas juste recevoir une erreur et ta commande (CREATE TABLE) ne sera pas traitée si ta table existe déjà. C'est pour ça qu'on vire la table avant de la recréer. ==> Parce que quand tu as une erreur dans la déclaration de la 4ème table dans ton script, MySQL aura quand même créé correctement les 3 premières mais aura arrêté le traitement à partir de la 4ème. Donc pour relancer ton script et éviter les erreurs....
Attention au DROP TABLE, signifie aussi la perte des données qu'il contient. Vous pouvez faire un export des données qu'elle contient et rajouter à la fin de votre script les commandes INSERT ... générées. Il n'y a pas de risque de confusion car les données ne sont pas classées par ordre linéaire, mais selon le nom des champs (id, champ1, champ2, .etc..)--Davidc 10 mars 2008 à 06:54 (CET)Répondre[répondre]