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

Nozioni di base sull'istruzione ALTER TABLE di SQL Server

Questo articolo è incentrato sull'istruzione ALTER TABLE in SQL Server e sulle attività seguenti nelle tabelle di SQL Server:

  1. Aggiungi una o più colonne a una tabella esistente.
  2. Modifica una o più colonne di una tabella, in particolare:
    • Aggiungi vincoli alla colonna.
    • Cambia il tipo di dati della colonna.
  3. Rilascia la colonna della tabella SQL.

A scopo dimostrativo, ho creato un database chiamato VSDatabase che inserirà i dati dei pazienti. Lì, ho aggiunto una tabella denominata tblPatients . La struttura della tabella è la seguente:

Quello che segue è lo script per creare la tabella:

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

Lo script seguente inserisce dati fittizi in tblPatients tabella:

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

Ora, cerchiamo di capire l'istruzione ALTER TABLE tramite esempi.

Aggiungi una o più colonne a una tabella esistente

Possiamo aggiungere una o più colonne usando il comando ALTER TABLE. La sintassi per aggiungere le colonne è la seguente:

ALTER TABLE tbl_name ADD column_name_1 datatype, column_name_2 datatype ..

Dove,

  1. nome_tbl :specifica il nome della tabella in cui vuoi aggiungere una nuova colonna.
  2. Tipo di dati Nome_colonna_1 :specifica il nome della colonna e il relativo tipo di dati. Quando aggiungi più colonne, ognuna di esse deve essere separata da una virgola (,)

Esempio

Voglio aggiungere una nuova colonna denominata first_name a tblPatients . Per aggiungere la colonna, eseguiamo la seguente query:

ALTER TABLE tblpatients ADD first_name VARCHAR(50)

Ora aggiungiamo più colonne, il secondo_nome e cognome colonne a tblPatients tavolo. Per farlo, eseguiamo la seguente query:

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

Possiamo interrogare information_schema.columns o sys.columns tabelle per controllare le colonne appena aggiunte. Le query sono le seguenti:

Per interrogare 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'

Uscita:

Per interrogare Sys.columns:

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

Uscita:

Come puoi vedere, le colonne sono state aggiunte.

Modifica le colonne di una tabella

Ora vogliamo esplorare la modifica delle colonne di una tabella. Innanzitutto, dobbiamo capire come possiamo cambiare il nome della colonna della tabella.

Modifica il tipo di dati della tabella esistente

La sintassi di ALTER TABLE per modificare il tipo di dati della colonna è:

ALTER TABLE tbl_name ALTER COLUMN column_name datatype

Dove,

  • nome_tbl :il nome della tabella in cui devi modificare il tipo di dati della colonna.
  • Nome_colonna :il nome della colonna e il tipo di dati. Dobbiamo specificare il nuovo tipo di dati dopo la parola chiave ALTER COLUMN.

Cambiamo il tipo di dati della colonna degli indirizzi. La lunghezza corrente della colonna Indirizzo è varchar(1000). Dobbiamo modificare la lunghezza della colonna in varchar(50).

La query per modificare il tipo di dati è la seguente:

Alter table tblpatients alter column address varchar(50)

Quando eseguiamo la query SQL, riceviamo il seguente errore:

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

Quindi, mentre riduciamo la lunghezza della colonna, dobbiamo rivedere la lunghezza massima del record e, in base a ciò, cambiarla. Nel nostro caso, eseguiamo la seguente query per identificare la lunghezza massima del record nell'Indirizzo colonna:

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

Uscita:

Come da output, la lunghezza minima della colonna dell'indirizzo deve essere varchar(25).

Esegui la query seguente per modificare la lunghezza della colonna:

Alter table tblpatients alter column address varchar(25)

Esegui la query seguente per verificare la lunghezza:

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

Uscita:

Come puoi vedere, la lunghezza della colonna è stata modificata correttamente.

Aggiungi vincolo sulla colonna

Possiamo aggiungere un vincolo alla colonna usando l'istruzione ALTER TABLE. La sintassi ALTER TABLE è la seguente:

ALTER TABLE tbl_name ALTER COLUMN column_name datatype constraint_name

Dove,

  • nome_tbl :il nome della tabella in cui devi modificare il tipo di dati della colonna.
  • Nome_colonna :il nome della colonna e il tipo di dati. Specifica il nuovo tipo di dati dopo la parola chiave ALTER COLUMN.
  • Nome_vincolo :il tipo di vincolo. Deve essere uno dei seguenti vincoli:
    • UNICO
    • NON NULLO
    • CONTROLLA
    • DEFAULT
    • CHIAVE PRIMARIA
    • CHIAVE ESTERA

Supponiamo di voler aggiungere un NON NULL vincolo sulla città colonna. Esegui la seguente ALTER TABLE dichiarazione:

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

La sintassi dell'aggiunta della CHIAVE PRIMARIA il vincolo è diverso se desideri aggiungere una chiave primaria su patient_id colonna. Per aggiungere il vincolo, esegui la seguente query:

Alter table tblpatients add primary key (Patient_ID)

Riceverai il seguente errore:

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.

Per correggere l'errore, dobbiamo creare un vincolo NOT NULL su Patient_ID colonna. Esegui la seguente query:

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

Una volta aggiunto il vincolo, aggiungiamo la chiave primaria eseguendo la seguente query:

Alter table tblpatients add primary key (Patient_ID)

La chiave primaria verrà aggiunta correttamente.

Per visualizzare il vincolo sulla tabella, eseguire la query seguente:

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'

Uscita:

In questo modo è stato creato il vincolo Chiave primaria.

Rilascia una colonna della tabella

Possiamo eliminare una colonna usando l'istruzione ALTER TABLE. La sintassi è:

ALTER TABLE tbl_name DROP Column column_name

Dove,

  • nome_tbl :il nome della tabella in cui vuoi trascinare una colonna.
  • Column_name:la colonna che vuoi eliminare dalla tabella.

Abbiamo aggiunto il first_name e cognome colonne a tblPatients tavolo. Pertanto, non è necessario il nome_paziente colonna.

Per eliminare la colonna, esegui la seguente query:

Alter table tblpatients drop column Patient_name

Nota: Se stai eliminando una colonna con un vincolo PRIMARY KEY o FOREIGN KEY, devi eliminare il vincolo prima di eliminare la colonna.

Riepilogo

L'articolo ha esplorato lo scopo dell'istruzione ALTER TABLE e i casi d'uso di base. Possiamo aggiungere, modificare ed eliminare colonne della tabella, nonché aggiungere vincoli in una tabella utilizzando l'istruzione ALTER TABLE. Nel prossimo articolo tratterò alcune opzioni di gestione avanzate.

Leggi anche

Informazioni sull'istruzione ALTER TABLE ADD COLUMN di SQL Server