Contacts

Modifier la syntaxe de l'opérateur de table. Guide de référence de la table MySQL Alter Table pour ajouter et supprimer une colonne, les valeurs par défaut

Alter table Tbl_name alter_spec [, alter_spec ...]

alter_specification:

Ajouter create_definition

ou ajouter (create_definition, créer_definition, ...)

ou ajouter index (index_col_name, ...)

ou ajouter une clé primaire (index_col_name, ...)

ou ajouter unique (index_col_name, ...)

ou ajouter Fulltext (index_col_name, ...)

ou Ajouter une clé étrangère Index_Name (index_col_name, ...)

ou alter col_name (définir le littéral par défaut | Drop Drop Default)

ou changer old_col_name create_definition

ou modifier create_definition

ou déposer col_name

ou déposer la clé primaire

ou déposer index index_name

ou désactiver les clés

ou activer les clés.

ou renommer new_tbl_name

ou commander par col

ou table_option.

L'instruction Alter Table est la possibilité de modifier la structure de la table existante. Par exemple, vous pouvez ajouter ou supprimer des colonnes, créer ou détruire des index ou renommer des colonnes ou une table elle-même. Vous pouvez également modifier le commentaire pour la table et son type.

Alter Table Tableau de travail Le temps de travail crée une copie temporaire de la table source. La modification requise est effectuée sur la copie, puis la table source est supprimée et le nouveau est renommé. Ceci est fait pour que toutes les mises à jour tombent automatiquement dans la nouvelle table, en plus de l'échec. Pendant la table de valeurs de la table de remplissage est disponible pour la lecture d'autres clients. Les opérations de mise à jour et d'écriture dans cette table sont suspendues jusqu'à ce que la nouvelle table soit prête.

Il convient de noter que lorsque vous utilisez une autre option pour Alter Table, sinon, MySQL créera toujours une table temporaire, même si les données, à proprement parler, n'ont pas besoin d'être copiées (par exemple, lors de la modification du nom de la colonne). Pour les tablesmyisa, il peut augmenter le taux de reconstruction de la partie index (qui est la partie la plus lente du processus de restauration de la table) en définissant le variable_siablyisam_sort_buffer_sizen_siza.

Pour utiliser l'opérateur de table Alter, PrivileGeLeter, Insert et Comptes de ce tableau.

L'IgnoOore est une extension de MySQL par rapport à ANSI SQL92. Il gère la table de workalter pleine de doublons de clés uniques dans la nouvelle table. Si la valeur est spécifiée, le processus est interrompu pour cette copie et le retour du retour. S'il est noté, alors pour des lignes avec des touches uniques en double, seule la première ligne est utilisée et le reste est supprimé.

Vous pouvez exécuter plusieurs ajout, modifier des expressions, Dropochange dans une table de commandal. Il s'agit d'une extension de MySQL en ce qui concerne l'ANSI SQL92, où une seule expression de celles mentionnées dans une table de commande est autorisée.

Modifier les options COL_NAME, Drop Col_NameDrop Indext sont des extensions MySQL par rapport à ANSI SQL92.

L'option Modify est une extension Oracle pour la commande Table de calter.

La colonne Word optionnelle est "" Blanc "" et peut être omise.

Lorsque vous utilisez Alter Table_Table Nom Nom Renommer To New_Mimabse Toute autre option MySQL, simplement renommée des fichiers correspondant à la table spécifiée. Dans ce cas, il n'est pas nécessaire de créer une table temporaire. En termes decreate_definitionDeaddeck héberge la même syntaxe que la table de forcreate. Il convient de garder à l'esprit que cette syntaxe inclut le nom de la colonne et non seulement son type.

Une colonne peut être renommée à l'aide du changement_definition_definition_definition_Definition_Definition_Name. Pour ce faire, vous devez spécifier les anciens et les nouveaux noms de la colonne et de son type à présent. Par exemple, pour renommer le backntegerizab, vous pouvez procéder comme suit:

mySQL\u003e Alter Tableau T1 changer A B Integer;

Lorsque vous modifiez le type de colonne, mais pas son nom de syntaxe de syntaxe change, cela nécessite l'indication des deux noms de colonne, même si elles sont identiques. Par example:

mySQL\u003e Alter Tableau T1 Changer B b b Bigint Pas NULL;

Cependant, en commençant par la version de MySQL 3.22.16A, vous pouvez également utiliser l'expression de modification des modifications de type de colonne sans le renommer:

mysql\u003e alter Table T1 Modifier b Bigint Not Null;

Lors de l'utilisation de la modification pour réduire la longueur de la colonne, dans laquelle un indice a été construit (par exemple, un index sur les 10 premiers symboles de colonne), il est impossible de créer une colonne en bref que le nombre de caractères indexés.

Lorsque vous modifiez le type de colonne à l'aide de ChangelIMODIFYMYSQL, essayez de convertir les données en un nouveau type que possible.

Dans la version de MySQL 3.22 et ultérieure, vous pouvez utiliser la colonne de la colonne à la position spécifiée dans la ligne de table. Par défaut, la colonne est ajoutée à la fin. À partir de la version de MySQL 4.0.1, vous pouvez également utiliser des options de mots-clésFirstise.

L'option Alter colonne est une nouvelle valeur par défaut pour la colonne ou supprime l'ancien. Si l'ancienne valeur est supprimée par défaut et cette colonne peut être value valorisée, la nouvelle valeur par défaut sera. Si la colonne ne peut pas be, MySQL attribue la valeur par défaut. Index des options d'index de TheDrop. C'est l'expansion de MySQL en ce qui concerne ANSI SQL92. Si les colonnes sont retirées de la table, ces colonnes sont également supprimées de tout index auquel ils entrent dans le cadre. Si toutes les colonnes constituant l'indice sont supprimées, cet indice est également supprimé.

Si la table ne contient qu'une colonne, cette colonne ne peut pas être supprimée. Au lieu de cela, vous pouvez supprimer cette table à l'aide de la commande DROP Table.

La clé d'option principale de chute descend l'indice principal. Si cet indice n'existe pas dans ce tableau, la première indexynique est supprimée par ce tableau. (MySQL marque la première clé unique à la clé principalePrimaire, si aucune autre clé primairePrimary Keyne n'est explicitement spécifiée). Lors de l'ajout de la clé indexipprimaire dans la table, elles sont stockées avant le reste des touches déraisonnables afin que les touches en double puissent être déterminées le plus tôt possible.

Option Commandez des bons créant une nouvelle table avec des rangées placées dans une commande donnée. Il convient de garder à l'esprit que la table créée ne sauvegardera pas cet ordre des chaînes après des opérations d'insertion et de suppression. Dans certains cas, une telle opportunité peut faciliter l'opération de tri dans MySQL si la table a un tel arrangement de colonnes que vous aimeriez être à l'avenir. Cette option est principalement utile si un certain ordre est connu à l'avance, dans lequel les chaînes seront principalement demandées. L'utilisation de cette option après une conversion de table importante permet d'obtenir des performances plus élevées.

Lorsque vous utilisez les commandes modifiées, les tablesMyisamse seront refusés d'index dans un package séparé (TorePair similaire). Grâce à cette équipe, des tableaux de table à la table de plusieurs indices travailleront plus rapidement.

À partir de MySQL 4.0, l'opportunité ci-dessus peut être explicitement activée. L'équipe ALTER TABLE ... Désactiver les clés Serrures dans MySQL mises à jour des index unnotics pour Tablemyisam. Après cela, vous pouvez appliquer la table de commande ... Activez les clés de la récréation des index manquants. Étant donné que MySQL, cela utilise-t-il un algorithme spécial qui est beaucoup plus rapide en comparaison avec les touches d'insérer un par un, le verrouillage de la clé peut donner une accélération significative sur de grandes matrices d'inserts.

Utilisation de la fonction API MySQL_INFO (), vous pouvez déterminer le nombre d'enregistrements copiés, ainsi que (lors de l'utilisation de la valeur) - combien d'enregistrements ont été supprimés en raison de la duplication des valeurs des clés uniques.

EXPRESSIONS CLÉ ÉTRANGÈRES, Les checkeferferences ne font rien. Ils ne sont entrés que pour des considérations de compatibilité pour faciliter le transfert du code d'autres serveurs SQL et lancer des applications créant des tables avec des références.

Vous trouverez ci-dessous des exemples montrant certains cas de commandes de table Alter. L'exemple commence avec Tablet1, ce qui est comme suit:

mysql\u003e créer une table T1 (un entier, B de char (10));

Afin de renommer la table de T1BT2:

mysql\u003e alter Table T1 Renommer T2;

Pour modifier le type de colonne avec Integerannyint Not Null (laissant le nom du précédent) et modifier le type de colonne de chroniquage (10) par OCAR (20) avec le renommer CBNC:

mySQL\u003e Alter Table T2 Modifier un Tinyint Not Null, change B C Char (20);

Pour ajouter une nouvelle colonne Timestamps nommée:

mySQL\u003e Alter Table T2 Add D horodatage;

Pour ajouter un index à la colonne DI pour créer la clé principale de la colonne:

mysql\u003e alter Table T2 Ajouter Index (D), Ajouter une clé primaire (A);

Pour supprimer la colonne C:

mySQL\u003e Alter Table T2 Drop Colonne C;

Pour ajouter une nouvelle colonne numérique auto_incrages nommée:

mySQL\u003e Alter Table T2 Add C int non signé non null auto_incrènement

Notez que la colonne est suindexée, car colonnesAuto_inCrement doit être indexé; De plus, la colonne est soumise à NON NULL, puisque les colonnes indexées ne peuvent pas être benull.

Lorsque vous ajoutez la colonne d'évaluation Auto_incrèce, cette colonne est automatiquement remplie de numéros séquentiels (lors de l'ajout d'enregistrements). Le premier numéro de séquence peut être défini en exécutant la commande SET INGER_ID \u003d # # pour utiliser l'USATATO_INCREMENT TOTAL \u003d # #.

Alter Table Tbl_name alter_spec [, alter_spec ...] alter_specification: ajoutez créer_definition ou ajoutez (create_definition, create_definition, ...) ou ajouter index (index_col_name, ...) ou ajouter une clé primaire (index_col_name, ...) ou ajouter unique (index_col_name, ...) ou ajoutez Fulltext (index_col_name, ...) ou Ajouter une clé étrangère Index_Name (index_col_name, ...) ou Alter Col_Name (Définir le littéral par défaut | Drop Drop Default) ou modifiez old_col_name Create_Definition ou modifier Create_Definition ou Drop Col_Name. Ou déposez une clé primaire ou une index index_name index_ ou désactivez les touches ou activez les touches ou renommez NEW_TBL_Name ou commandez par Col ou TABLE_OPTIONS

L'opérateur de table Alter offre la possibilité de modifier la structure de la table existante. Par exemple, vous pouvez ajouter ou supprimer des colonnes, créer ou détruire des index ou renommer des colonnes ou une table elle-même. Vous pouvez également modifier le commentaire pour la table et son type. Voir section.

Si l'instruction ALTER TABLE est utilisée pour modifier la définition de type de colonne, mais décrit TBL_Name indique que la colonne n'a pas changé, MySQL ignore cette modification selon l'une des raisons décrites à la section 6.5.3.1 Section des modifications silencieuses des définitions de la colonne. . Par exemple, lorsque vous essayez de modifier la colonne Varcharner sur Char MySQL continuera à utiliser Varchar si cette table contient d'autres colonnes avec une longueur variable.

L'instruction ALTER TABLE pendant l'opération crée une copie temporaire de la table source. La modification requise est effectuée sur la copie, puis la table source est supprimée et le nouveau est renommé. Ceci est fait pour que toutes les mises à jour tombent automatiquement dans la nouvelle table en plus de l'échec. Lors de la mise en oeuvre de la table Alter, la table source est disponible pour la lecture d'autres clients. Les opérations de mise à jour et d'écriture dans cette table sont suspendues jusqu'à ce que la nouvelle table soit prête.

Il convient de noter que lorsque vous utilisez une autre option pour Alter Table, en plus de renommer, MySQL créera toujours une table temporaire, même si des données, à proprement parler, n'ont pas besoin d'être copiées (par exemple, lors de la modification du nom de la colonne) . Nous prévoyons de le réparer à l'avenir, cependant, puisque Alter Table ne le fait pas si souvent, nous (développeurs MySQL) ne considère pas cette priorité de tâches. Pour les tables de myisam, vous pouvez augmenter le taux de récréation de la partie index (qui est la partie la plus lente dans le processus de restauration de la table) en définissant la variable myISAM_SORT_Buffer_SIZE est assez grande.

  • Pour utiliser l'opérateur de table Alter, les altérations, l'insertion et la création de privilèges sont requis pour cette table.
  • L'option Ignorer est l'expansion de MySQL par rapport à ANSI SQL92. Il gère le travail d'alter Table s'il existe des touches uniques dupliquées dans la nouvelle table. Si l'option Ignorer n'est pas spécifiée, le processus est interrompu pour cette copie et le retour en arrière. Si Ignorer est spécifiée, alors pour des lignes avec des touches uniques en double, seule la première ligne est utilisée et le reste est supprimé.
  • Vous pouvez exécuter plusieurs expressions d'ajout, d'alter, de chute et de changement dans une commande de table Alter. Il s'agit d'une extension de MySQL par rapport à ANSI SQL92, où une seule expression du tableau alter mentionné dans une commande est autorisée.
  • Modifier les options Col_Name, Drop Col_Name et Drop Index sont également des extensions MySQL par rapport à ANSI SQL92.
  • L'option Modifier est une extension Oracle pour la commande Alter Table.
  • La colonne Word optionnelle est «le bruit blanc» »et peut être omis.
  • Lorsque vous utilisez Alter Table Nom_table Renommez NEW_MES, sans autre option MySQL, vous renoncez simplement aux fichiers correspondant à la table spécifiée. Dans ce cas, il n'est pas nécessaire de créer une table temporaire. Voir la section 6.5.5 Opérateur de syntaxe Renommer Taim E.
  • Dans l'expression Create_Definition, la même syntaxe est utilisée pour ajouter et modifier comme pour créer une table. Il convient de garder à l'esprit que cette syntaxe inclut le nom de la colonne et non seulement son type. Voir la section 6.5.3 Créer une syntaxe de l'opérateur de table.
  • La colonne peut être renommée à l'aide de l'expression de changement. Pour ce faire, vous devez spécifier les anciens et les nouveaux noms de la colonne et de son type à présent. Par exemple, pour renommer la colonne entière d'A dans B, vous pouvez procéder comme suit: MySQL\u003e Alter Table T1 changer A B Integer; Lorsqu'un type de colonne est modifié, mais pas son nom, la syntaxe de l'expression de changement nécessite toujours l'indication des deux noms de colonne, même si elles sont identiques. Par exemple: MySQL\u003e Alter Table T1 changer B b Bigint Not Null; Cependant, en commençant par la version de MySQL 3.22.16A, vous pouvez également utiliser l'expression de modification pour modifier le type de colonne sans le renommer: MySQL\u003e Alter Table T1 Modifier b Bigint Pas NULL;
  • Lorsque vous utilisez Modifier ou modifier afin de réduire la longueur de la colonne, la partie dont l'index est construite (par exemple, l'index sur les 10 premiers caractères de la colonne Varcharne) ne peut pas être apporté plus court que le nombre de caractères indexés.
  • Lorsque vous modifiez le type de colonne à l'aide de Modifier ou de modifier MySQL, essayez de convertir les données en un nouveau type que possible.
  • Dans la version de MySQL 3.22 et plus tard, vous pouvez utiliser le premier ou l'ajouter ... après le nom de nom_stolbet pour ajouter une colonne à une position spécifiée dans une chaîne tabulaire. Par défaut, la colonne est ajoutée à la fin. En commençant par la version de MySQL 4.0.1, vous pouvez également utiliser les mots-clés premier et accessibles dans les options Modifier ou Modifier.
  • L'option Alter colonne spécifie la valeur par défaut de la colonne ou supprime l'ancien. Si l'ancienne valeur est supprimée par défaut et cette colonne peut prendre la valeur NULL, la nouvelle valeur par défaut sera null. Si la colonne ne peut pas être nulle, MySQL attribue la valeur par défaut comme décrit à la section 6.5.3 Créer une syntaxe d'opérateur de table.
  • L'option DROP Index supprime l'index. C'est l'expansion de MySQL en ce qui concerne ANSI SQL92. Voir la section 6.5.8 Syntaxe de l'opérateur d'index DROP.
  • Si les colonnes sont retirées de la table, ces colonnes sont également supprimées de tout index auquel ils entrent dans le cadre. Si toutes les colonnes constituant l'indice sont supprimées, cet indice est également supprimé.
  • Si la table ne contient qu'une colonne, cette colonne ne peut pas être supprimée. Au lieu de cela, vous pouvez supprimer cette table à l'aide de la commande DROP Table.
  • L'option de clé primaire DROP supprime l'indice principal. Si cet indice n'existe pas dans ce tableau, le premier index unique est supprimé dans ce tableau. (MySQL note la première clé unique d'unique comme clé primaire principale, si aucune autre clé de clé primaire principale n'a été explicitement spécifiée). Lors de l'ajout d'un index unique ou d'une clé primaire à la table, ils sont stockés devant le reste des clés déraisonnables afin que les touches en double puissent être déterminées le plus tôt possible.
  • Option Commande En vous permet de créer une nouvelle table avec des lignes placées dans une commande donnée. Il convient de garder à l'esprit que la table créée ne sauvegardera pas cet ordre des chaînes après des opérations d'insertion et de suppression. Dans certains cas, une telle opportunité peut faciliter l'opération de tri dans MySQL si la table a un tel arrangement de colonnes que vous aimeriez être à l'avenir. Cette option est principalement utile si un certain ordre est connu à l'avance, dans lequel les chaînes seront principalement demandées. L'utilisation de cette option après une conversion de table importante permet d'obtenir des performances plus élevées.
  • Lors de l'utilisation de la commande Alter Table pour les tables MyISAM, tous les index non uniques sont créés dans un emballage séparé (comme réparation). Grâce à cela, la commande Alter Table en présence de multiples index fonctionnera plus rapidement.
  • À partir de MySQL 4.0, l'opportunité ci-dessus peut être explicitement activée. L'équipe d'alter Table ... Désactiver les clés Blocs Mise à jour des index unnotics dans MySQL pour les tables MyISAM. Après cela, vous pouvez appliquer la table Alter Table ... Activer la commande Touches de recréer les index manquants. Étant donné que MySQL, cela utilise-t-il un algorithme spécial qui est beaucoup plus rapide en comparaison avec les touches d'insérer un par un, le verrouillage de la clé peut donner une accélération significative sur de grandes matrices d'inserts.
  • En utilisant la fonction API MySQL_INFO (), vous pouvez déterminer le nombre d'enregistrements copiés, ainsi que (lors de l'utilisation d'Ignore) - combien d'enregistrements ont été supprimés en raison de la duplication des valeurs des clés uniques.
  • La clé étrangère, le chèque et les références ne font rien. Ils ne sont entrés que pour des considérations de compatibilité pour faciliter le transfert du code d'autres serveurs SQL et lancer des applications créant des tables avec des références. Voir la section 1.9.4 Différences MySQL de ANSI SQL92.

Vous trouverez ci-dessous des exemples montrant certains cas de commandes de table Alter. L'exemple commence par la table T1, ce qui est comme suit:

Mysql\u003e créer une table T1 (un entier, B de char (10));

Afin de renommer la table de T1 en T2:

Mysql\u003e alter Table T1 Renommer T2;

Pour modifier le type de colonne entier sur le tinyint non nul (laissant le nom de la précédente) et modifier la colonne de type B avec char (10) sur char (20) avec le renommer avec B sur C:

MySQL\u003e Alter Table T2 Modifier un Tinyint Not Null, change B C Char (20);

Pour ajouter une nouvelle colonne TIMESTAMP nommée D:

MySQL\u003e Alter Table T2 Add D horodatage;

Pour ajouter un index à la colonne D et faire une colonne une clé primaire:

Mysql\u003e alter Table T2 Ajouter Index (D), Ajouter une clé primaire (A);

Pour supprimer la colonne C:

MySQL\u003e Alter Table T2 Drop Colonne C;

Pour ajouter une nouvelle colonne numérique auto_incrènement nommée C:

Mysql\u003e alter Table T2 Ajouter C int non signé Non NULL Auto_Increment, ajouter index (C);

Notez que la colonne C est indexée, car les colonnes AUTO_INCREMENTMENT doivent être indexées, en outre, la colonne C est déclarée comme non NULL, car les colonnes indexées ne peuvent pas être nuls.

Lorsque la colonne Auto_Increment est ajoutée, les valeurs de cette colonne sont automatiquement remplies de numéros de série (lors de l'ajout d'enregistrements). Le premier numéro de séquence peut être défini en exécutant la commande SET INGE_ID \u003d # # pour modifier la table ou à l'aide des options de table Auto_incrimentation \u003d #. Voir la section 5.5.6 Définir la syntaxe de commande.

Si la colonne Auto_incrimentation pour les tables MyISAM ne change pas, le numéro de séquence reste le même. Lorsque vous supprimez la colonne Auto_Incrimentation et que l'ajout ultérieur d'une autre colonne Auto_Increment recommencera à partir de 1.

Nous allons regarder cette leçon SQL Comment utiliser la commande de commande alter à la table dans la base de données. La commande ALTER est principalement utilisée pour ajouter, modifier et supprimer des colonnes, des index et des restrictions sur des tables dans une base de données relationnelle, telle que dans, Oracle, Sybase et SQL Server. Bien que Alter ne fait pas partie de l'opération classique du CRUD, il s'agit de l'une des commandes DDL importantes. L'une des utilisations les plus fréquentes de la commande Alter dans SQL est d'ajouter et de supprimer des index pour améliorer les performances des demandes SQL Select. Dans ce tutoriel, nous verrons différentes manières d'utiliser l'équipe de modification. Utilisation de la commande Alter, vous pouvez ajouter, modifier ou modifier des tables, des vues sur des bases de données. Nous pouvons ajouter une nouvelle colonne dans le tableau, nous pouvons modifier la valeur de la colonne ou nous pouvons renommer la colonne.

10 exemples de la commande alter en SQL

Voyons certains des exemples les plus couramment utilisés de la commande alter en SQL. Dans cette section, nous examinerons comment utiliser la commande Alter pour ajouter, modifier et supprimer des colonnes existantes dans le tableau.

Exemple 1: Comment ajouter une colonne à une table existante à l'aide d'Alter dans SQL:

Supposons que nous ayons une table avec le nom de l'étudiant avec le champ roll_number, stup_name, classe, sujet et nous souhaitons ajouter une autre colonne de marque obtenue, comment faire avec ÉquipesModifier.

ALTER TABLE STÉTI ÉTUDIANT Ajouter les marks_obtentid numéro (3);

Lorsque ce champ est ajouté à la table, il contiendra la valeur zéro par défaut.

Exemple 2: Comment changer une colonne existante à l'aide de la commande alter en SQL :

Supposons maintenant que nous souhaitons modifier le champ Mark_ObTtenu ajouté ci-dessus à partir du numéro du type décimal de données, nous pouvons utiliser les changements de colonne avec modification avec une équipe.

Alter Table Etudiant Alter Colonne Marks_Obtus Decimal (5, 2);

Exemple 3: Comment supprimer une colonne existante de la table à l'aide de la commande alter en SQL:

Maintenant, si nous voulons supprimer une colonne existante de la table, nous utilisons la chute avec l'équipe de modification.

ALTER TABLE DES TABLEDY DROP COLONNE BARKS_OBTENDIED;

Exemple 4. Comment supprimer la clé principale à l'aide de la commande alter dans la base de données :

Supposons qu'il existe une clé primaire nommée 'pk_roll_num' pour la colonne Roll_Number à partir de la table étudiante et nous voulons abandonner cette limite

Modifier la contrainte de goutte d'étudiant "pk_roll_num ';

Exemple 5. Comment ajouter des principales restrictions principales à l'aide de la commande alter en SQL:

Nous voulons maintenant ajouter une principale restriction de clé dans la table étudiante appelée «pk_roll_num 'pour la colonne Roll_Number'. Nous faisons cela

Alter Table Student Ajouter une contrainte "PK_Roll_Num Key Primary (Roll_Number)

Exemple 6. Comment réinitialiser la restriction de clé externe à l'aide de la commande alter:

Supposons qu'il existe une limitation de clé externe nommée 'fk_roll_num' pour la colonne Roll_Number 'de la table' Marks ', et nous voulons refuser cette limite

Modifier les marques de table chute contrainte "fk_roll_num ';

Exemple 7: Comment ajouter une limite de clé externe à l'aide de la commande alter

Nous voulons maintenant ajouter une restriction de clé externe à la table Marks, appelée 'fk_roll_num' pour la colonne Roll_Number. Nous allons faire cela:

Alter Table Marks Ajouter une contrainte "FK_Roll_Num Key étranger (Roll_Number) Références Étudiants (Roll_Number);

Exemple 8: Comment ajouter des restrictions de clé uniques à l'aide de la commande alter

Maintenant, si nous voulons ajouter unique La clé de restriction dans la table étudiante appelée «unique_roll_no» pour la colonne Roll_Number. Nous allons faire cela:

Alter Table Student Ajouter une contrainte unique_roll_no unique (roll_number);

Exemple 9. : Comment supprimer une clé de constructeur unique à l'aide de la commande alter

Maintenant, si nous voulons abandonner une clé de restriction unique dans la table étudiante appelée «unique_roll_no» pour la colonne Roll_Number. Nous allons faire cela:

Modifier la contrainte de goutte d'étudiant unique_roll_no);

Exemple 10: Comment ajouter un CNCC à l'aide de la commande alter en SQL

La syntaxe principale pour ajouter une limite de contrôle dans le tableau:

ALTER TABLE TABLE_NAME Ajouter une contrainte MyUniquectronistion Vérification (condition);

Tout cela concerne les exemples de la commande alter en SQL. Nous avons vu 10 façons différentes d'utiliser la commande alter dans SQL. Alter est l'une des plus importantes pendant l'opération dans n'importe quelle base de données, par exemple, MySQL, Oracle ou SQL Server, notamment à partir de la ligne de commande. Comme nous devons souvent ajouter, modifier et supprimer des colonnes, des index et des restrictions dans le tableau.

Les niveaux suivants de restrictions de vérification peuvent être distingués:

  • niveau d'attribut (colonne),
  • niveau de pays (String),
  • niveau de relation (tableau).

Dans la restriction du niveau de la colonne, la valeur d'une seule colonne distincte est vérifiée, en d'autres termes, dans la restriction de ce type, il existe une référence uniquement à une colonne de la table, dans la définition de laquelle cette restriction contient. Pour apporter un exemple d'une telle restriction, rendez-vous au schéma de la société informatique. Dans la table du produit dans la colonne Type, une des trois valeurs peut être située. Nous pouvons interdire l'entrée de toute autre information de cette colonne à l'aide d'une telle restriction:

    Vérifiez (type in ("imprimante", "PC", "ordinateur portable"))

Faisons un départ pour se familiariser avec l'opérateur de table Alter, ce qui nous permettra de changer la structure de la table, sans la réexciter à chaque fois. Il est encore plus important que la variation de la structure puisse être nécessaire lorsque le tableau contient déjà des données.

Utilisation de l'opérateur d'alter Table, vous pouvez ajouter ou supprimer des colonnes, des valeurs par défaut, ainsi que des limitations.

Pour le moment, nous sommes intéressés par l'ajout d'une limite sur la colonne Type, alors nous donnons donc d'abord la syntaxe de l'opérateur pour ajouter des limitations:

    Modifier table

    Ajouter une contrainte;

Ajoutons maintenant notre restriction et vérifiez comment cela fonctionne.

    Alter Table Produit

    Ajouter une contrainte chk_type check (type in ("PC", "ordinateur portable", "imprimante"));

Pour vous assurer que la restriction fonctionne comme prévu, essayons d'ajouter un nouveau modèle de type:

    Insérer dans les valeurs de produit ("A", 1122, "Notebook");

Comme prévu, en réponse, nous recevrons un message d'erreur:

La contrainte d'instruction insertion "chk_type". Le conflit s'est produit dans la base de données "Apprendre", Table "Dbo.Product", la colonne "Type". La déclaration a été résiliée.

(Instructions d'insertion de conflit avec le chèque "chk_type". Le conflit s'est produit dans la base de données "Apprendre", la table "dbo.product", la table "Type". L'exécution de cette instruction a été interrompue.)

Dans quelle mesure il est facile de deviner, limiter le niveau de niveau contient des liens vers plusieurs colonnes. Dans ce cas, la restriction est vérifiée pour chaque variable de ligne séparément. La chaîne peut être ajoutée (ou modifiée) si la restriction n'est pas altérée.

Par exemple, interdisons le fabricant de Z de libérer tout ce qui est d'autre côté des imprimantes.

    Alter Table Produit

    Ajouter une contrainte chk_maker_z chèque ((Maker \u003d "z" et type \u003d "imprimante") ou fabricant "z");

Donc, la restriction vérifie que le modèle dans la table du produit doit être une imprimante du fabricant Z (maker \u003d "z" et type \u003d "imprimante") ou tout autre fabricant (mais pas z).

Si nous essayons d'ajouter un modèle PC du fabricant Z,

Les tables de manipulation sont l'une des activités les plus courantes que les bases de données administratives et les programmeurs sont effectuées lors de l'utilisation d'objets de base. Cette section décrit en détail comment créer et modifier des tables.

La norme ANSI est quelque chose comme le plus petit dénominateur commun pour tous les fabricants, bien que toutes les caractéristiques de la version standard de la table Create et Alter Table sont implémentées par chaque fabricant. Néanmoins, la norme ANSI est une forme de base qui peut être utilisée sur toutes les plates-formes.

À son tour, les plates-formes offrent une variété d'extensions et d'ajouts aux instructions de la norme Créer une table et de la table ALTAL ANSI.

En règle générale, vous devez réfléchir au projet de projet et à la manière de la créer. Ce processus s'appelle la conception de la base de données. Le processus d'analyse de la relation de la table avec ses propres données et d'autres tables de la base de données est appelé normalisation. Nous recommandons des programmeurs et des administrateurs de base de données pour apprendre les principes de la conception et de la normalisation avant d'utiliser les commandes Créer une base de données.

SYSAX SQL 2003

Lors de l'exécution de l'instruction Create Table, la norme SQL 2003 dans la base de données crée une table constante ou temporaire. La syntaxe est la suivante.

Créer [(temporaire local) Global Temporable)] Table Nom_TableLique (Nom Longbits Type_Data Attributs [, ...]) | [Nom du walker avec options d'options] | | (Système généré | Utilisateur généré | dérivé)] [, ...]]] [définition_table]] nom_table type_dan attributs] | Définir le nom de nom_fault_po_po_umolite] | Drop Default_name] | Nom de la qualité Ajouter une échéance Nom_table | Drop Scope_Name (restreindre | cascade)] | Restreindre le nom (restreindre | cascade)] | |

Mots clés

Temporaire.

Annoncé une table constante ou temporaire (temporaire) de la zone d'action locale (locale) ou globale (globale). Les tables temporaires locales sont disponibles uniquement à partir de la session les ont créées et elles sont automatiquement supprimées lorsque la session leur a créée est terminée. Les tables temporaires globales sont disponibles à partir de toutes les sessions actives, mais elles sont automatiquement supprimées lorsque la session les a créée. Ne spécifiez pas les noms de table temporaires avec le nom du schéma.

(Nom des attributs de type_DATA à longbits [,])

Une liste dans laquelle une ou plusieurs colonnes sont répertoriées via la virgule, leurs types de données et des attributs supplémentaires, tels que les valeurs des valeurs NULL (Nullabilité). Chaque déclaration de table doit inclure au moins une colonne pour laquelle vous pouvez spécifier:

namestolbitsa

Le nom de la colonne est indiqué. Il devrait s'agir d'un identifiant autorisé du point de vue des règles d'un SURBD spécifique. Le nom doit être significatif!

type_data

Lie une colonne avec un nom Name_Name. Un type de données spécifique. Pour les types de données qui vous permettent de spécifier leur longueur, il existe une longueur de paramètre supplémentaire, par exemple Varchar (255). Le type de données doit être admissible à SURBD. Pour une description complète des types de données admissibles et de leurs options de fabricants spécifiques, contactez le chapitre 2. Attributs

Signe les attributs de restriction spécifiés avec la colonne. Pour une colonne nommée, Name_Name, vous pouvez spécifier plusieurs attributs. Les virgules ne sont pas nécessaires. Les attributs typiques ANSI incluent les éléments suivants.

Pas nulle

Les valeurs NULL sont interdites dans la colonne (ou autorisées si l'offre NON NULL est omise). Toutes les instructions d'insertion et de mise à jour qui essaieront de placer la valeur null sur la colonne avec l'attribut NON NULL ne sera pas effectuée et une restauration se produira.

Expression par défaut

La colonne utilisera la valeur de l'expression si l'instruction d'insertion ou de mise à jour n'entre aucune valeur. L'expression doit être admissible pour le type de données de la colonne; Par exemple, dans la colonne de type entier, aucune lettre de lettres ne peut être utilisée. Une expression peut être une chaîne ou un littéral numérique, mais vous pouvez également spécifier une fonction personnalisée ou système. La norme SQL 2003 vous permet d'utiliser les fonctions système suivantes dans l'offre par défaut: NULL, UTILISATEUR, CURRYJSER, SESSION_USER, SYSTEMJJJSER, CURCENT_PATH, CURCENT_D, CURCENTJIME, CurrentJime, CurrentJimeStamp, LocalTjMestamp, Array ou Array.

Collate_name_name

La collation utilisée est déterminée, c'est-à-dire l'ordre de tri dans la colonne correspondante. Le nom de la comparaison dépend de la plate-forme. Si le nom de correspondance n'est pas défini, le mappage par défaut du jeu de caractères à utiliser dans la colonne est accepté. Les références sont des paramètres vérifiés déterminant si les références seront vérifiées dans la colonne REF définie avec l'option de la zone d'action (portée). Une offre supplémentaire sur Suppr détermine si les valeurs figureront dans les enregistrements référencés par la télécommande, à installer dans NULL ou une restriction sera imposée à l'opération.

Nom de la limite de contrainte [Type Référence [Restriction]]

Le paramètre attribue une colonne de restriction et si vous souhaitez le nom de la restriction. Les types de restrictions sont discutés au chapitre 2. Étant donné que la restriction est associée à une colonne spécifique, dans la déclaration de restrictions, il est supposé que cette colonne de cette restriction sera la seule. Une fois la table créée, la restriction sera considérée comme limitée au niveau de la table.

namestolbitsa

La colonne est déterminée avec des options spéciales telles que l'option de la zone d'action (étendue), l'option de valeur par défaut (valeur par défaut), limitant le niveau de colonne ou l'offre d'assemblage. Dans de nombreuses implémentations, la proposition Options est limitée à la création de tables d'objet (dactylographiées).

Comme name_table

La nouvelle table est créée avec les mêmes définitions de la colonne que dans la table existante Nom_Table.

Système de Refis: Système généré | Créé par l'utilisateur généré]

La colonne Identificateur d'objet (identifiant d'objet, OID) dans les tables d'objet (dactylographiées) est déterminée. L'identifiant d'objet est nécessaire pour une table qui est la racine de la hiérarchie des tables. Conformément à ce paramètre, la colonne REF peut être générée automatiquement par le système (généré par le système), spécifier manuellement l'utilisateur lors de la saisie de la chaîne (utilisée générée) ou de créer une autre colonne Réf. Le paramètre nécessite d'allumer la colonne_strol_name. Attribut de références.

Type de limite de contrainte [Nom de la limite] [, ...]

La table est attribuée à une ou plusieurs restrictions. Ce paramètre est sensiblement différent des limitations du niveau de colonne, car elle est supposée que les limitations du niveau de colonne ne s'appliquent qu'à la colonne avec laquelle elles sont connectées. Dans le cas des restrictions du niveau de table, il est possible de se connecter à une restriction de plusieurs colonnes. Par exemple, dans la table des ventes, vous devrez peut-être déclarer une restriction unique sur la clé d'embrayage Store_ID, Order_id et Order_Date. Cela ne peut être fait que en limitant le niveau de la table. Pour une discussion détaillée des restrictions, reportez-vous au chapitre 2.

De nom [de définition_table]

Il est annoncé que la table est basée sur le type d'utilisateur fini. Dans cette situation, la table ne peut avoir qu'une seule colonne pour chaque attribut du type structuré ainsi qu'une colonne supplémentaire définie dans la référence est une proposition. Le type de données REF est décrit en détail dans la section «Créer / Alter Tre». Cette proposition est incompatible avec le nom de la proposition similaire. Où:

Sous Superteck [Définition / Tableau]

Une super-surveillante immédiate est déclarée pour la table actuelle dans le même schéma (si elle existe). Si vous le souhaitez, vous pouvez spécifier une définition complète_table pour la Supertable, le remplissant avec des colonnes, des restrictions et similaires.

Sur commit (conservation des lignes de suppression des lignes]

Sur la préservation de validation des lignes définit une chaîne temporaire des chaînes de données lors de l'exécution de l'instruction de validation. Le commettre Selon Selete RO WS offre supprime toutes les lignes de données dans la table temporaire lors de l'exécution des instructions de validation.

Ajouter nom_stolbet type_data attributs

Une colonne avec un type de données et des attributs appropriés est ajoutée à la table.

Alter_stolbet_name Définir la valeur par défaut

La valeur par défaut est ajoutée à la colonne (si elle n'existe pas) ou varie avec la valeur existante.

Alter Drop Default_stolb

La valeur par défaut est complètement supprimée de la colonne spécifiée.

Nom d'alter_stolbet Ajouter une échéance Nom_table

La colonne spécifiée ajoute une zone d'action (portée). La portée est un lien vers le type de données utilisateur.

Modifier la portée de la portée de goutte

La portée est supprimée de la colonne spécifiée. Les offres de restriction et de cascade sont expliquées à la fin de cette liste.

Drop Column_stolbet Nom

La colonne spécifiée est supprimée de la table. Les offres de restriction et de cascade sont expliquées à la fin de cette liste.

Ajouter tabulaire_camination

Le tableau ajoute une restriction avec le nom et les caractéristiques spécifiés.

Nom de la limite de contrainte de goutte

La limite existante est supprimée de la table.

RESTREINDRE.

Lorsque vous spécifiez cette proposition, SURBD annule la commande si des objets en fonction de cet objet sont dans la base de données.

Lorsque vous spécifiez cette proposition, SURBD supprime tous les autres objets en fonction de cet objet.



Avez-vous aimé l'article? Partagez-le