Dieser Artikel konzentriert sich auf die ALTER TABLE-Anweisung in SQL Server und die folgenden Aufgaben für SQL Server-Tabellen:
- Eine oder mehrere Spalten zu einer bestehenden Tabelle hinzufügen.
- Eine oder mehrere Spalten einer Tabelle ändern, insbesondere:
- Einschränkungen für die Spalte hinzufügen.
- Ändern Sie den Datentyp der Spalte.
- Löschen Sie die Spalte der SQL-Tabelle.
Zu Demonstrationszwecken habe ich eine Datenbank namens VSDatabase erstellt die die Patientendaten einfügt. Dort habe ich eine Tabelle namens tblPatients hinzugefügt . Die Tabellenstruktur ist wie folgt:
Das Folgende ist das Skript zum Erstellen der Tabelle:
Use VSDatabase
Go
create table tblpatients
(
Patient_ID varchar(10),
Patient_name varchar(50),
Address varchar(500),
City varchar(50),
AppointmentDate datetime
)
Das folgende Skript fügt Dummy-Daten in tblPatients ein Tabelle:
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')
Lassen Sie uns nun die ALTER TABLE-Anweisung anhand von Beispielen verstehen.
Eine oder mehrere Spalten zu einer bestehenden Tabelle hinzufügen
Mit dem Befehl ALTER TABLE können wir eine oder mehrere Spalten hinzufügen. Die Syntax zum Hinzufügen der Spalten lautet wie folgt:
ALTER TABLE tbl_name ADD column_name_1 datatype, column_name_2 datatype ..
Wo,
- tbl_name :Geben Sie den Namen der Tabelle an, in der Sie eine neue Spalte hinzufügen möchten.
- Datentyp Spaltenname_1 :Geben Sie den Spaltennamen und seinen Datentyp an. Wenn Sie mehrere Spalten hinzufügen, müssen diese jeweils durch ein Komma (,) getrennt werden
Beispiel
Ich möchte eine neue Spalte namens first_name hinzufügen an tblPatients . Um die Spalte hinzuzufügen, führen wir die folgende Abfrage aus:
ALTER TABLE tblpatients ADD first_name VARCHAR(50)
Jetzt fügen wir mehrere Spalten hinzu, den middle_name und Nachname Spalten zu tblPatients Tisch. Dazu führen wir die folgende Abfrage aus:
ALTER TABLE tblpatients ADD middle_name VARCHAR(50),last_name VARCHAR(50)
Wir können information_schema.columns abfragen oder sys.columns Tabellen, um die neu hinzugefügten Spalten zu überprüfen. Die Abfragen lauten wie folgt:
Zum Abfragen von 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'
Ausgabe:
So fragen Sie Sys.columns ab:
select object_name(object_id) [Table Name],name,max_length from sys.columns where object_id =object_id('tblpatients')
Ausgabe:
Wie Sie sehen können, wurden die Spalten hinzugefügt.
Spalten einer Tabelle ändern
Jetzt wollen wir das Ändern von Spalten einer Tabelle untersuchen. Zuerst müssen wir verstehen, wie wir den Namen der Tabellenspalte ändern können.
Datentyp der bestehenden Tabelle ändern
Die Syntax von ALTER TABLE zum Ändern des Datentyps der Spalte lautet:
ALTER TABLE tbl_name ALTER COLUMN column_name datatype
Wo,
- tbl_name :Der Name der Tabelle, in der Sie den Datentyp der Spalte ändern müssen.
- Spaltenname :der Spaltenname und der Datentyp. Wir müssen den neuen Datentyp nach dem Schlüsselwort ALTER COLUMN angeben.
Lassen Sie uns den Datentyp der Adressspalte ändern. Die aktuelle Länge der Adressspalte ist varchar(1000). Wir müssen die Spaltenlänge auf varchar(50) ändern.
Die Abfrage zum Ändern des Datentyps lautet wie folgt:
Alter table tblpatients alter column address varchar(50)
Wenn wir die SQL-Abfrage ausführen, erhalten wir den folgenden Fehler:
Msg 2628, Level 16, State 1, Line 1
String or binary data would be truncated in table 'VSDatabase.dbo.tblpatients', column 'Address'. Truncated value: ''.
Während wir also die Länge der Spalte reduzieren, müssen wir die maximale Länge des Datensatzes überprüfen und basierend darauf ändern. In unserem Fall führen wir die folgende Abfrage aus, um die maximale Länge des Datensatzes in der Adresse zu ermitteln Spalte:
select len(Address) [Maximum length of column],Address from tblpatients
Ausgabe:
Laut Ausgabe muss die Mindestlänge der Adressspalte varchar(25) sein.
Führen Sie die folgende Abfrage aus, um die Länge der Spalte zu ändern:
Alter table tblpatients alter column address varchar(25)
Führen Sie die folgende Abfrage aus, um die Länge zu überprüfen:
select TABLE_NAME,COLUMN_NAME,IS_NULLABLE,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH,COLLATION_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME='tblpatients'
Ausgabe:
Wie Sie sehen können, wurde die Spaltenlänge erfolgreich geändert.
Einschränkung für die Spalte hinzufügen
Wir können der Spalte eine Einschränkung hinzufügen, indem wir die ALTER TABLE-Anweisung verwenden. Die ALTER TABLE-Syntax lautet wie folgt:
ALTER TABLE tbl_name ALTER COLUMN column_name datatype constraint_name
Wo,
- tbl_name :Der Name der Tabelle, in der Sie den Datentyp der Spalte ändern müssen.
- Spaltenname :der Spaltenname und der Datentyp. Geben Sie den neuen Datentyp nach dem Schlüsselwort ALTER COLUMN an.
- Einschränkungsname :die Art der Einschränkung. Es muss eine der folgenden Einschränkungen vorliegen:
- EINZIGARTIG
- NICHT NULL
- ÜBERPRÜFEN
- STANDARD
- PRIMÄRSCHLÜSSEL
- Fremdschlüssel
Angenommen, Sie möchten NOT NULL hinzufügen Beschränkung auf die Stadt Säule. Führen Sie das folgende ALTER TABLE aus Aussage:
Alter table tblpatients alter column Patient_name varchar(50) not null
Die Syntax zum Hinzufügen des PRIMARY KEY Einschränkung ist anders, wenn Sie der patient_id einen Primärschlüssel hinzufügen möchten Säule. Um die Einschränkung hinzuzufügen, führen Sie die folgende Abfrage aus:
Alter table tblpatients add primary key (Patient_ID)
Sie erhalten die folgende Fehlermeldung:
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.
Um den Fehler zu beheben, müssen wir eine NOT NULL-Einschränkung für die Patient_ID erstellen Säule. Führen Sie die folgende Abfrage aus:
Alter table tblpatients alter column Patient_ID varchar(50) not null
Nachdem die Einschränkung hinzugefügt wurde, fügen wir den Primärschlüssel hinzu, indem wir die folgende Abfrage ausführen:
Alter table tblpatients add primary key (Patient_ID)
Der Primärschlüssel wird erfolgreich hinzugefügt.
Führen Sie die folgende Abfrage aus, um die Einschränkung für die Tabelle anzuzeigen:
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'
Ausgabe:
Auf diese Weise wurde die Primärschlüsseleinschränkung erstellt.
Lassen Sie eine Spalte der Tabelle fallen
Wir können eine Spalte mit der ALTER TABLE-Anweisung löschen. Die Syntax lautet:
ALTER TABLE tbl_name DROP Column column_name
Wo,
- tbl_name :der Name der Tabelle, in der Sie eine Spalte ablegen möchten.
- Column_name:die Spalte, die Sie aus der Tabelle löschen möchten.
Wir haben den Vornamen hinzugefügt und Nachname Spalten zu tblPatients Tisch. Daher benötigen wir den patient_name nicht Spalte.
Um die Spalte zu löschen, führen Sie die folgende Abfrage aus:
Alter table tblpatients drop column Patient_name
Hinweis: Wenn Sie eine Spalte mit einer PRIMARY KEY- oder FOREIGN KEY-Einschränkung löschen, müssen Sie die Einschränkung löschen, bevor Sie die Spalte löschen.
Zusammenfassung
Der Artikel hat den Zweck der ALTER TABLE-Anweisung und die grundlegenden Anwendungsfälle untersucht. Mit der ALTER TABLE-Anweisung können wir Spalten der Tabelle hinzufügen, ändern und löschen sowie Einschränkungen in einer Tabelle hinzufügen. Im nächsten Artikel werde ich einige erweiterte Verwaltungsoptionen behandeln.
Lesen Sie auch
Grundlegendes zur SQL Server ALTER TABLE ADD COLUMN-Anweisung