Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Principes de base de l'instruction SQL Server ALTER TABLE

Cet article se concentre sur l'instruction ALTER TABLE dans SQL Server et les tâches suivantes sur les tables SQL Server :

  1. Ajouter une ou plusieurs colonnes à un tableau existant.
  2. Modifier une ou plusieurs colonnes d'un tableau, notamment :
    • Ajouter des contraintes sur la colonne.
    • Modifiez le type de données de la colonne.
  3. Supprimez la colonne de la table SQL.

À des fins de démonstration, j'ai créé une base de données nommée VSDatabase qui insérera les données des patients. Là, j'ai ajouté une table nommée tblPatients . La structure du tableau est la suivante :

Voici le script pour créer la table :

Use VSDatabase
Go
create table tblpatients
(
Patient_ID varchar(10),
Patient_name varchar(50),
Address varchar(500),
City varchar(50),
AppointmentDate datetime
)

Le script suivant insère des données factices dans tblPatients tableau :

insert into tblpatients (Patient_ID,Patient_name,Address,City,AppointmentDate)
values
('OPD00001','Nisarg Upadhyay','AB-14, Akshardham Flats','Mehsana','2021-02-10'),
('OPD00002','Nirali Upadhyay','AB-14, Akshardham Flats','Mehsana','2021-02-11'),
('OPD00003','Manushi Bhatt ','B-50, Suramya Flats','Surat','2021-02-10'),
('OPD00004','Arjun Bhatt','B-50, Suramya Flats','Surat','2021-02-12'),
('OPD00005','Dixit Upadhyay','AB-14, Akshardham Flats','Mehsana','2021-02-09')

Maintenant, comprenons l'instruction ALTER TABLE par des exemples.

Ajouter une ou plusieurs colonnes à un tableau existant

Nous pouvons ajouter une ou plusieurs colonnes à l'aide de la commande ALTER TABLE. La syntaxe pour ajouter les colonnes est la suivante :

ALTER TABLE tbl_name ADD column_name_1 datatype, column_name_2 datatype ..

Où,

  1. tbl_name :spécifiez le nom de la table où vous souhaitez ajouter une nouvelle colonne.
  2. Type de données Column_name_1 :spécifiez le nom de la colonne et son type de données. Lorsque vous ajoutez plusieurs colonnes, chacune d'elles doit être séparée par une virgule (,)

Exemple

Je souhaite ajouter une nouvelle colonne nommée first_name aux tblPatients . Pour ajouter la colonne, nous exécutons la requête suivante :

ALTER TABLE tblpatients ADD first_name VARCHAR(50)

Maintenant, nous ajoutons plusieurs colonnes, le middle_name et nom_de_famille colonnes au tblPatients table. Pour ce faire, nous exécutons la requête suivante :

ALTER TABLE tblpatients ADD middle_name VARCHAR(50),last_name VARCHAR(50)

Nous pouvons interroger information_schema.columns ou sys.columns tables pour vérifier les colonnes nouvellement ajoutées. Les requêtes sont les suivantes :

Pour interroger information_schema.columns :

select TABLE_NAME,COLUMN_NAME,IS_NULLABLE,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH,COLLATION_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME='tblpatients'

Sortie :

Pour interroger Sys.columns :

select object_name(object_id) [Table Name],name,max_length from sys.columns where object_id =object_id('tblpatients')

Sortie :

Comme vous pouvez le voir, les colonnes ont été ajoutées.

Modifier les colonnes d'un tableau

Nous voulons maintenant explorer la modification des colonnes d'une table. Tout d'abord, nous devons comprendre comment nous pouvons changer le nom de la colonne de la table.

Modifier le type de données du tableau existant

La syntaxe de ALTER TABLE pour changer le type de données de la colonne est :

ALTER TABLE tbl_name ALTER COLUMN column_name datatype

Où,

  • tbl_name  :le nom de la table dans laquelle vous devez modifier le type de données de la colonne.
  • Column_name :le nom de la colonne et le type de données. Nous devons spécifier le nouveau type de données après le mot-clé ALTER COLUMN.

Modifions le type de données de la colonne d'adresse. La longueur actuelle de la colonne Adresse est varchar(1000). Nous devons changer la longueur de la colonne en varchar(50).

La requête pour modifier le type de données est la suivante :

Alter table tblpatients alter column address varchar(50)

Lorsque nous exécutons la requête SQL, nous recevons l'erreur suivante :

Msg 2628, Level 16, State 1, Line 1
String or binary data would be truncated in table 'VSDatabase.dbo.tblpatients', column 'Address'. Truncated value: ''.

Ainsi, tout en réduisant la longueur de la colonne, nous devons revoir la longueur maximale de l'enregistrement et, en fonction de cela, la modifier. Dans notre cas, nous exécutons la requête suivante pour identifier la longueur maximale de l'enregistrement dans Adresse colonne :

select len(Address) [Maximum length of column],Address from tblpatients

Sortie :

Selon la sortie, la longueur minimale de la colonne d'adresse doit être varchar(25).

Exécutez la requête suivante pour modifier la longueur de la colonne :

Alter table tblpatients alter column address varchar(25)

Exécutez la requête suivante pour vérifier la longueur :

select TABLE_NAME,COLUMN_NAME,IS_NULLABLE,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH,COLLATION_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME='tblpatients'

Sortie :

Comme vous pouvez le voir, la longueur de la colonne a été modifiée avec succès.

Ajouter une contrainte sur la colonne

Nous pouvons ajouter une contrainte à la colonne en utilisant l'instruction ALTER TABLE. La syntaxe ALTER TABLE est la suivante :

ALTER TABLE tbl_name ALTER COLUMN column_name datatype constraint_name

Où,

  • tbl_name  :le nom de la table dans laquelle vous devez modifier le type de données de la colonne.
  • Column_name :le nom de la colonne et le type de données. Spécifiez le nouveau type de données après le mot-clé ALTER COLUMN.
  • Constraint_name :le type de contrainte. Il doit s'agir de l'une des contraintes suivantes :
    • UNIQUES
    • NON NULL
    • VÉRIFIER
    • PAR DÉFAUT
    • CLÉ PRIMAIRE
    • CLÉ ÉTRANGÈRE

Supposons que vous vouliez ajouter un NOT NULL contrainte sur la ville colonne. Exécutez la commande ALTER TABLE suivante déclaration :

Alter table tblpatients alter column Patient_name varchar(50) not null

La syntaxe d'ajout de la CLÉ PRIMAIRE contrainte est différente si vous souhaitez ajouter une clé primaire sur le patient_id colonne. Pour ajouter la contrainte, exécutez la requête suivante :

Alter table tblpatients add primary key (Patient_ID)

Vous recevrez l'erreur suivante :

Msg 8111, Level 16, State 1, Line 17
Cannot define PRIMARY KEY constraint on nullable column in table 'tblpatients'.
Msg 1750, Level 16, State 0, Line 17
Could not create constraint or index. See previous errors.

Pour corriger l'erreur, nous devons créer une contrainte NOT NULL sur le Patient_ID colonne. Exécutez la requête suivante :

Alter table tblpatients alter column Patient_ID varchar(50) not null

Une fois la contrainte ajoutée, nous ajoutons la clé primaire en exécutant la requête suivante :

Alter table tblpatients add primary key (Patient_ID)

La clé primaire sera ajoutée avec succès.

Pour afficher la contrainte sur la table, exécutez la requête suivante :

SELECT OBJECT_NAME(object_id) AS ConstraintName,
SCHEMA_NAME(schema_id) AS SchemaName,
type_desc AS ConstraintType
FROM sys.objects
WHERE type_desc LIKE '%CONSTRAINT' AND OBJECT_NAME(parent_object_id)='tblpatients'

Sortie :

De cette façon, la contrainte de clé primaire a été créée.

Déposer une colonne du tableau

Nous pouvons supprimer une colonne à l'aide de l'instruction ALTER TABLE. La syntaxe est :

ALTER TABLE tbl_name DROP Column column_name

Où,

  • tbl_name :le nom de la table où vous voulez déposer une colonne.
  • Column_name :la colonne que vous souhaitez supprimer du tableau.

Nous avons ajouté le prénom et nom_de_famille colonnes au tblPatients table. Par conséquent, nous n'avons pas besoin du nom_du_patient colonne.

Pour supprimer la colonne, exécutez la requête suivante :

Alter table tblpatients drop column Patient_name

Remarque : Si vous supprimez une colonne avec une contrainte PRIMARY KEY ou FOREIGN KEY, vous devez supprimer la contrainte avant de supprimer la colonne.

Résumé

L'article a exploré le but de l'instruction ALTER TABLE et les cas d'utilisation de base. Nous pouvons ajouter, modifier et supprimer des colonnes de la table, ainsi qu'ajouter des contraintes dans une table à l'aide de l'instruction ALTER TABLE. Dans le prochain article, je couvrirai certaines options de gestion avancées.

Lire aussi

Comprendre l'instruction SQL Server ALTER TABLE ADD COLUMN