sql >> Database teknologi >  >> RDS >> Sqlserver

Grundlæggende om SQL Server ALTER TABLE-erklæring

Denne artikel fokuserer på ALTER TABLE-sætningen i SQL Server og følgende opgaver på SQL Server-tabeller:

  1. Tilføj en eller flere kolonner til en eksisterende tabel.
  2. Rediger en eller flere kolonner i en tabel, især:
    • Tilføj begrænsninger på kolonnen.
    • Skift kolonnens datatype.
  3. Slip kolonnen i SQL-tabellen.

Til demonstrationsformål har jeg oprettet en database ved navn VSDatabase der vil indsætte patienternes data. Der har jeg tilføjet en tabel med navnet tblPatients . Tabelstrukturen er som følger:

Følgende er scriptet til at oprette tabellen:

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

Følgende script indsætter dummy-data i tblPatients tabel:

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')

Lad os nu forstå ALTER TABLE-sætningen ved hjælp af eksempler.

Tilføj en eller flere kolonner til en eksisterende tabel

Vi kan tilføje en eller flere kolonner ved hjælp af kommandoen ALTER TABLE. Syntaksen for at tilføje kolonnerne er som følger:

ALTER TABLE tbl_name ADD column_name_1 datatype, column_name_2 datatype ..

Hvor,

  1. tbl_name :Angiv navnet på den tabel, hvor du vil tilføje en ny kolonne.
  2. Datatype Column_name_1 :angiv kolonnenavnet og dets datatype. Når du tilføjer flere kolonner, skal hver af dem adskilles med et komma (,)

Eksempel

Jeg vil tilføje en ny kolonne med navnet fornavn til tblPatients . For at tilføje kolonnen kører vi følgende forespørgsel:

ALTER TABLE tblpatients ADD first_name VARCHAR(50)

Nu tilføjer vi flere kolonner, mellemnavnet og efternavn kolonner til tblPatients bord. For at gøre det kører vi følgende forespørgsel:

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

Vi kan forespørge information_schema.columns eller sys.columns tabeller for at kontrollere de nyligt tilføjede kolonner. Forespørgslerne er følgende:

For at forespørge informationsskema.kolonner :

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

Output:

Sådan forespørger Sys.columns:

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

Output:

Som du kan se, er kolonnerne blevet tilføjet.

Rediger kolonnerne i en tabel

Nu vil vi udforske ændring af kolonner i en tabel. Først skal vi forstå, hvordan vi kan ændre navnet på tabellens kolonne.

Skift datatypen for den eksisterende tabel

Syntaksen for ALTER TABLE for at ændre kolonnens datatype er:

ALTER TABLE tbl_name ALTER COLUMN column_name datatype

Hvor,

  • tbl_name :navnet på den tabel, hvor du skal ændre kolonnens datatype.
  • Kolonne_navn :kolonnenavnet og datatypen. Vi skal angive den nye datatype efter søgeordet ALTER COLUMN.

Lad os ændre datatypen for adressekolonnen. Den aktuelle længde af adressekolonnen er varchar(1000). Vi skal ændre kolonnelængden til varchar(50).

Forespørgslen for at ændre datatypen er som følger:

Alter table tblpatients alter column address varchar(50)

Når vi kører SQL-forespørgslen, får vi følgende fejlmeddelelse:

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

Så mens vi reducerer kolonnens længde, skal vi gennemgå den maksimale længde af posten og, baseret på det, ændre den. I vores tilfælde kører vi følgende forespørgsel for at identificere den maksimale længde af posten i Adressen kolonne:

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

Output:

Ifølge output skal den mindste længde af adressekolonnen være varchar(25).

Kør følgende forespørgsel for at ændre længden af ​​kolonnen:

Alter table tblpatients alter column address varchar(25)

Kør følgende forespørgsel for at bekræfte længden:

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

Output:

Som du kan se, er kolonnelængden blevet ændret.

Tilføj begrænsning på kolonnen

Vi kan tilføje en begrænsning til kolonnen ved at bruge ALTER TABLE-sætningen. ALTER TABLE-syntaksen er som følger:

ALTER TABLE tbl_name ALTER COLUMN column_name datatype constraint_name

Hvor,

  • tbl_name :navnet på den tabel, hvor du skal ændre kolonnens datatype.
  • Kolonne_navn :kolonnenavnet og datatypen. Angiv den nye datatype efter ALTER COLUMN søgeord.
  • Begrænset_navn :typen af ​​begrænsning. Det skal være en af ​​følgende begrænsninger:
    • UNIKT
    • IKKE NULL
    • TJEK
    • STANDARD
    • PRIMÆR NØGLE
    • UDLANDS NØGLE

Antag, at du vil tilføje en NOT NULL begrænsning for byen kolonne. Kør følgende ALTER TABLE erklæring:

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

Syntaksen for tilføjelse af den PRIMÆR NØGLE begrænsning er anderledes, hvis du vil tilføje en primær nøgle på patient_id kolonne. For at tilføje begrænsningen skal du udføre følgende forespørgsel:

Alter table tblpatients add primary key (Patient_ID)

Du vil modtage følgende fejlmeddelelse:

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.

For at rette fejlen skal vi oprette en NOT NULL-begrænsning på Patient_ID kolonne. Kør følgende forespørgsel:

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

Når begrænsningen er tilføjet, tilføjer vi den primære nøgle ved at køre følgende forespørgsel:

Alter table tblpatients add primary key (Patient_ID)

Den primære nøgle vil blive tilføjet.

For at se begrænsningen på tabellen skal du køre følgende forespørgsel:

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'

Output:

På denne måde er den primære nøglebegrænsning blevet oprettet.

Slip en kolonne i tabellen

Vi kan droppe en kolonne ved hjælp af ALTER TABLE-sætningen. Syntaksen er:

ALTER TABLE tbl_name DROP Column column_name

Hvor,

  • tbl_name :navnet på den tabel, hvor du vil slippe en kolonne.
  • Kolonne_navn:den kolonne, du vil fjerne fra tabellen.

Vi har tilføjet fornavnet og efternavn kolonner til tblPatients bord. Derfor kræver vi ikke patientnavnet kolonne.

For at slette kolonnen skal du køre følgende forespørgsel:

Alter table tblpatients drop column Patient_name

Bemærk: Hvis du sletter en kolonne med en PRIMARY KEY- eller FOREIGN KEY-begrænsning, skal du slette begrænsningen, før du sletter kolonnen.

Oversigt

Artiklen har udforsket formålet med ALTER TABLE-sætningen og de grundlæggende brugssager. Vi kan tilføje, ændre og slette kolonner i tabellen, samt tilføje begrænsninger i en tabel ved hjælp af ALTER TABLE-sætningen. I den næste artikel vil jeg dække nogle avancerede administrationsmuligheder.

Læs også

Forstå SQL Server ÆNDRINGSTABEL TILFØJ KOLONNE-sætning


  1. Bemærk brugere, der kører SQL Server 2008 og SQL Server 2008 R2

  2. Hurtigste måde at køre den samme forespørgsel flere gange i SQL Server

  3. Kolonne 'mary' findes ikke

  4. Skal en databaseforbindelse forblive åben hele tiden eller kun åbnes, når det er nødvendigt?