Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Podstawy SQL Server Instrukcja ALTER TABLE

Ten artykuł koncentruje się na instrukcji ALTER TABLE w SQL Server i następujących zadaniach dotyczących tabel SQL Server:

  1. Dodaj jedną lub wiele kolumn do istniejącej tabeli.
  2. Zmodyfikuj jedną lub wiele kolumn tabeli, w szczególności:
    • Dodaj ograniczenia do kolumny.
    • Zmień typ danych kolumny.
  3. Upuść kolumnę tabeli SQL.

W celach demonstracyjnych utworzyłem bazę danych o nazwie VSDatabase który wprowadzi dane pacjentów. Tam dodałem tabelę o nazwie tblPatients . Struktura tabeli jest następująca:

Poniżej znajduje się skrypt do tworzenia tabeli:

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

Poniższy skrypt wstawia fikcyjne dane do tblPatients tabela:

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

Teraz zrozummy instrukcję ALTER TABLE na przykładach.

Dodaj jedną lub wiele kolumn do istniejącej tabeli

Możemy dodać jedną lub wiele kolumn za pomocą polecenia ALTER TABLE. Składnia dodawania kolumn jest następująca:

ALTER TABLE tbl_name ADD column_name_1 datatype, column_name_2 datatype ..

Gdzie,

  1. nazwa_tabeli :określ nazwę tabeli, w której chcesz dodać nową kolumnę.
  2. Typ danych nazwa_kolumny_1 :określ nazwę kolumny i jej typ danych. Gdy dodajesz wiele kolumn, każda z nich musi być oddzielona przecinkiem (,)

Przykład

Chcę dodać nową kolumnę o nazwie first_name do tblPatients . Aby dodać kolumnę, uruchamiamy następujące zapytanie:

ALTER TABLE tblpatients ADD first_name VARCHAR(50)

Teraz dodajemy wiele kolumn, middle_name i nazwisko kolumny do tblPatients stół. W tym celu uruchamiamy następujące zapytanie:

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

Możemy wysłać zapytanie do information_schema.columns lub sys.columns tabele, aby sprawdzić nowo dodane kolumny. Zapytania są następujące:

Aby wysłać zapytanie do 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'

Wyjście:

Aby zapytać kolumny Sys.:

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

Wyjście:

Jak widać, kolumny zostały dodane.

Zmień kolumny tabeli

Teraz chcemy zbadać modyfikowanie kolumn tabeli. Najpierw musimy zrozumieć, jak możemy zmienić nazwę kolumny tabeli.

Zmień typ danych istniejącej tabeli

Składnia ALTER TABLE do zmiany typu danych kolumny to:

ALTER TABLE tbl_name ALTER COLUMN column_name datatype

Gdzie,

  • nazwa_tabeli :nazwa tabeli, w której musisz zmienić typ danych kolumny.
  • Nazwa_kolumny :nazwa kolumny i typ danych. Musimy określić nowy typ danych po słowie kluczowym ALTER COLUMN.

Zmieńmy typ danych kolumny adresu. Bieżąca długość kolumny Adres to varchar(1000). Musimy zmienić długość kolumny na varchar(50).

Zapytanie o zmianę typu danych jest następujące:

Alter table tblpatients alter column address varchar(50)

Po uruchomieniu zapytania SQL otrzymujemy następujący błąd:

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

Tak więc, zmniejszając długość kolumny, musimy sprawdzić maksymalną długość rekordu i na tej podstawie ją zmienić. W naszym przypadku uruchamiamy następujące zapytanie, aby określić maksymalną długość rekordu w Adresie kolumna:

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

Wyjście:

Zgodnie z danymi wyjściowymi minimalna długość kolumny adresu musi wynosić varchar(25).

Uruchom następujące zapytanie, aby zmienić długość kolumny:

Alter table tblpatients alter column address varchar(25)

Uruchom następujące zapytanie, aby zweryfikować długość:

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

Wyjście:

Jak widać, długość kolumny została pomyślnie zmieniona.

Dodaj wiązanie na kolumnie

Możemy dodać ograniczenie do kolumny za pomocą instrukcji ALTER TABLE. Składnia ALTER TABLE jest następująca:

ALTER TABLE tbl_name ALTER COLUMN column_name datatype constraint_name

Gdzie,

  • nazwa_tabeli :nazwa tabeli, w której musisz zmienić typ danych kolumny.
  • Nazwa_kolumny :nazwa kolumny i typ danych. Określ nowy typ danych po słowie kluczowym ALTER COLUMN.
  • Nazwa ograniczenia :rodzaj ograniczenia. Musi to być dowolne z następujących ograniczeń:
    • UNIKALNE
    • NIE BRAK
    • SPRAWDŹ
    • DOMYŚLNE
    • KLUCZ PODSTAWOWY
    • KLUCZ OBCY

Załóżmy, że chcesz dodać NOT NULL ograniczenie miasta kolumna. Uruchom następującą ALTER TABLE oświadczenie:

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

Składnia dodawania PRIMARY KEY ograniczenie jest inne, jeśli chcesz dodać klucz podstawowy do identyfikator_pacjenta kolumna. Aby dodać ograniczenie, wykonaj następujące zapytanie:

Alter table tblpatients add primary key (Patient_ID)

Otrzymasz następujący błąd:

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.

Aby naprawić błąd, musimy utworzyć ograniczenie NOT NULL dla Identyfikatora_pacjenta kolumna. Uruchom następujące zapytanie:

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

Po dodaniu ograniczenia dodajemy klucz podstawowy, uruchamiając następujące zapytanie:

Alter table tblpatients add primary key (Patient_ID)

Klucz podstawowy zostanie pomyślnie dodany.

Aby wyświetlić ograniczenie w tabeli, uruchom następujące zapytanie:

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'

Wyjście:

W ten sposób zostało utworzone ograniczenie klucza podstawowego.

Upuść kolumnę tabeli

Możemy usunąć kolumnę za pomocą instrukcji ALTER TABLE. Składnia to:

ALTER TABLE tbl_name DROP Column column_name

Gdzie,

  • nazwa_tabeli :nazwa tabeli, w której chcesz upuścić kolumnę.
  • Nazwa_kolumny:kolumna, którą chcesz usunąć z tabeli.

Dodaliśmy imię i nazwisko kolumny do tblPatients stół. Dlatego nie wymagamy nazwy_pacjenta kolumna.

Aby usunąć kolumnę, uruchom następujące zapytanie:

Alter table tblpatients drop column Patient_name

Uwaga: Jeśli usuwasz kolumnę z ograniczeniem PRIMARY KEY lub FOREIGN KEY, musisz usunąć ograniczenie przed usunięciem kolumny.

Podsumowanie

W artykule zbadano cel instrukcji ALTER TABLE i podstawowe przypadki użycia. Możemy dodawać, modyfikować i usuwać kolumny tabeli, a także dodawać ograniczenia w tabeli za pomocą instrukcji ALTER TABLE. W następnym artykule omówię niektóre zaawansowane opcje zarządzania.

Czytaj także

Zrozumienie instrukcji SQL Server ALTER TABLE ADD COLUMN


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Połączenie CodeIgniter MSSQL

  2. Jak używać klauzuli Where w instrukcji Select w SQL Server — samouczek SQL Server / TSQL, część 109

  3. Zwróć numer tygodnia ISO z daty w SQL Server (T-SQL)

  4. Przekaż zmienną do wyzwalacza

  5. Instalacja SQL Server 2017