0
votes

Raison d'utiliser la contrainte null lors de la création d'une table?

Je crois comprendre que les deux blocs de code suivants sont logiquement équivalents:

CREATE TABLE MyTable(Key INT PRIMARY KEY, Value INT NULL)

CREATE TABLE MyTable(Key INT PRIMARY KEY, Value INT)

sql

2 commentaires

Deux cas viennent à l'esprit: 1) Conversion d'un champ Not NULL Retour à un NULL CHAMP ACTABLE et 2) Juste pour être explicite sur les définitions de la colonne.


La nullabilité par défaut est nullable, l'ajout null est généralement redondant. Vous voudrez peut-être l'ajouter à être explicite dans certains cas.


3 Réponses :


0
votes

Lorsque vous souhaitez insérer dans la table, vous devez affecter une valeur à toutes les colonnes si elle n'utilise pas NULL, mais si une colonne a la valeur par défaut ou NULL (qui est une sorte de valeur par défaut), vous pouvez ignorer cette colonne.Pour exemple:

1,NULL


5 commentaires

Vous n'avez pas besoin d'ajouter une définition dans le tableau pour défaut null . Avez-vous essayé ce que vous dites?


Oui. Si vous n'ajoutez pas de valeur par défaut (telle que NULL, etc.), vous devez ajouter ce champ dans chaque requête d'insertion / mise à jour.


Cela fonctionne bien dans MSSQL pour moi, et je ne trouve aucun problème pour cela, répondez spécifiquement où vous avez essayé que


Pouvez-vous exporter votre définition de table? @Shahjahan


J'ai créé une table avec cette commande Créer une table MyTable ([touche] INT Touche principale, Valeur Int) et Insérez la valeur à l'aide de votre commande Insérer dans des valeurs MyTable ([Key]) (1) . Tout fonctionne bien. La chose est lorsque vous n'avez pas ajouté null à votre définition, il ajoutera automatiquement null sur votre champ. C'est pourquoi je suis préoccupé par votre réponse



0
votes
CREATE TABLE MyTable 
(
     Key INT PRIMARY KEY, 
     Value INT
)

2 commentaires

Est-ce vrai? J'avais l'impression que les champs étaient facturables (pouvaient contenir une valeur nulle) par défaut.


@Dacromir: Cela pourrait dépendre du moteur RDBMS réel que vous utilisez - mais aussi loin que je sache, et pour tous les PDRM que je connais, vous avez raison et votre raunak est mal - Dans ce cas, les énoncés de table sont identiques et fournissent la même structure de table - une touche clé (qui est par définition non null ) et a NULLLABLE Valeur Colonne



0
votes

Le contrainte null est la valeur par défaut lorsque vous définissez une colonne. Comme vous le dites, vos deux versions sont équivalentes, car SQL les définit comme équivalents. Exprimer une contrainte explicite NULL est à peu près les mêmes choses que de dire rejoindre interne plutôt que joindre ou y compris elv null dans un cas expression.

SQL n'est pas une langue minimaliste. Il existe plusieurs façons d'exprimer exactement la même chose.

Dans ce cas, je pense que null est inclus pour deux raisons:

  • Pour être parallèle à la contrainte NULL .
  • Si vous pouvez spécifier explicitement un, vous devriez pouvoir spécifier explicitement l'autre. Certains utilisateurs de bases de données peuvent être explicites sur des colonnes nullables.

    Cela dit, je dirais que la plupart des concepteurs de base de données le laissent sortir.


0 commentaires