Artikel ini berfokus pada pernyataan ALTER TABLE di SQL Server dan tugas berikut pada tabel SQL Server:
- Tambahkan satu atau beberapa kolom ke tabel yang ada.
- Memodifikasi satu atau beberapa kolom tabel, khususnya:
- Tambahkan batasan pada kolom.
- Ubah tipe data kolom.
- Lepaskan kolom tabel SQL.
Untuk tujuan demonstrasi, saya telah membuat database bernama VSDatabase yang akan memasukkan data pasien. Di sana, saya telah menambahkan tabel bernama tblPatients . Struktur tabelnya adalah sebagai berikut:
Berikut script untuk membuat tabelnya:
Use VSDatabase
Go
create table tblpatients
(
Patient_ID varchar(10),
Patient_name varchar(50),
Address varchar(500),
City varchar(50),
AppointmentDate datetime
)
Skrip berikut memasukkan data dummy ke dalam 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')
Sekarang, mari kita pahami pernyataan ALTER TABLE dengan contoh.
Menambahkan satu atau beberapa kolom ke tabel yang ada
Kita dapat menambahkan satu atau beberapa kolom menggunakan perintah ALTER TABLE. Sintaks untuk menambahkan kolom adalah sebagai berikut:
ALTER TABLE tbl_name ADD column_name_1 datatype, column_name_2 datatype ..
Dimana,
- tbl_name :tentukan nama tabel tempat Anda ingin menambahkan kolom baru.
- Tipe data nama_kolom_1 :menentukan nama kolom dan tipe datanya. Saat Anda menambahkan beberapa kolom, masing-masing kolom harus dipisahkan dengan koma (,)
Contoh
Saya ingin menambahkan kolom baru bernama first_name ke tblPasien . Untuk menambahkan kolom, kami menjalankan kueri berikut:
ALTER TABLE tblpatients ADD first_name VARCHAR(50)
Sekarang kita tambahkan beberapa kolom, middle_name dan nama_belakang kolom ke tblPatients meja. Untuk melakukannya, kami menjalankan kueri berikut:
ALTER TABLE tblpatients ADD middle_name VARCHAR(50),last_name VARCHAR(50)
Kami dapat menanyakan information_schema.columns atau sys.columns tabel untuk memeriksa kolom yang baru ditambahkan. Pertanyaannya adalah sebagai berikut:
Untuk menanyakan 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'
Keluaran:
Untuk menanyakan Sys.columns:
select object_name(object_id) [Table Name],name,max_length from sys.columns where object_id =object_id('tblpatients')
Keluaran:
Seperti yang Anda lihat, kolom telah ditambahkan.
Memodifikasi Kolom dari Tabel
Sekarang kita ingin menjelajahi memodifikasi kolom tabel. Pertama, kita harus memahami bagaimana kita dapat mengubah nama kolom tabel.
Ubah Tipe Data Tabel yang Ada
Sintaks ALTER TABLE untuk mengubah tipe data kolom adalah:
ALTER TABLE tbl_name ALTER COLUMN column_name datatype
Dimana,
- tbl_name :nama tabel tempat Anda perlu mengubah tipe data kolom.
- Nama_kolom :nama kolom dan tipe data. Kita harus menentukan tipe data baru setelah kata kunci ALTER COLUMN.
Mari kita ubah tipe data kolom alamat. Panjang kolom Alamat saat ini adalah varchar(1000). Kita harus mengubah panjang kolom menjadi varchar(50).
Query untuk mengubah tipe data adalah sebagai berikut:
Alter table tblpatients alter column address varchar(50)
Saat kami menjalankan kueri SQL, kami menerima kesalahan berikut:
Msg 2628, Level 16, State 1, Line 1
String or binary data would be truncated in table 'VSDatabase.dbo.tblpatients', column 'Address'. Truncated value: ''.
Jadi, sambil mengurangi panjang kolom, kita harus meninjau panjang maksimum record dan, berdasarkan itu, mengubahnya. Dalam kasus kami, kami menjalankan kueri berikut untuk mengidentifikasi panjang maksimum catatan di Alamat kolom:
select len(Address) [Maximum length of column],Address from tblpatients
Keluaran:
Sesuai output, panjang minimum kolom alamat harus varchar(25).
Jalankan kueri berikut untuk mengubah panjang kolom:
Alter table tblpatients alter column address varchar(25)
Jalankan kueri berikut untuk memverifikasi panjangnya:
select TABLE_NAME,COLUMN_NAME,IS_NULLABLE,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH,COLLATION_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME='tblpatients'
Keluaran:
Seperti yang Anda lihat, panjang kolom telah berhasil diubah.
Tambahkan Batasan pada Kolom
Kita dapat menambahkan batasan ke kolom dengan menggunakan pernyataan ALTER TABLE. Sintaks ALTER TABLE adalah sebagai berikut:
ALTER TABLE tbl_name ALTER COLUMN column_name datatype constraint_name
Dimana,
- tbl_name :nama tabel tempat Anda perlu mengubah tipe data kolom.
- Nama_kolom :nama kolom dan tipe data. Tentukan tipe data baru setelah kata kunci ALTER COLUMN.
- Nama_kendala :jenis kendala. Itu harus salah satu dari batasan berikut:
- UNIK
- BUKAN NULL
- PERIKSA
- DEFAULT
- KUNCI UTAMA
- KUNCI ASING
Misalkan Anda ingin menambahkan NOT NULL kendala di kota kolom. Jalankan ALTER TABLE berikut ini pernyataan:
Alter table tblpatients alter column Patient_name varchar(50) not null
Sintaks untuk menambahkan PRIMARY KEY batasannya berbeda jika Anda ingin menambahkan kunci utama pada patient_id kolom. Untuk menambahkan batasan, jalankan kueri berikut:
Alter table tblpatients add primary key (Patient_ID)
Anda akan menerima kesalahan berikut:
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.
Untuk memperbaiki kesalahan, kita harus membuat batasan NOT NULL pada Patient_ID kolom. Jalankan kueri berikut:
Alter table tblpatients alter column Patient_ID varchar(50) not null
Setelah batasan ditambahkan, kami menambahkan kunci utama dengan menjalankan kueri berikut:
Alter table tblpatients add primary key (Patient_ID)
Kunci utama akan berhasil ditambahkan.
Untuk melihat batasan pada tabel, jalankan kueri berikut:
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'
Keluaran:
Dengan cara ini, batasan kunci Utama telah dibuat.
Lepaskan Kolom Tabel
Kita dapat menjatuhkan kolom menggunakan pernyataan ALTER TABLE. Sintaksnya adalah:
ALTER TABLE tbl_name DROP Column column_name
Dimana,
- tbl_name :nama tabel tempat Anda ingin meletakkan kolom.
- Column_name:kolom yang ingin Anda hapus dari tabel.
Kami telah menambahkan nama_depan dan nama_belakang kolom ke tblPatients meja. Oleh karena itu, kami tidak memerlukan patient_name kolom.
Untuk menjatuhkan kolom, jalankan kueri berikut:
Alter table tblpatients drop column Patient_name
Catatan: Jika Anda menjatuhkan kolom dengan kendala PRIMARY KEY atau FOREIGN KEY, Anda harus menghilangkan kendala sebelum menjatuhkan kolom.
Ringkasan
Artikel ini telah mengeksplorasi tujuan dari pernyataan ALTER TABLE dan kasus penggunaan dasar. Kita dapat menambahkan, memodifikasi, dan melepaskan kolom tabel, serta menambahkan batasan dalam tabel menggunakan pernyataan ALTER TABLE. Dalam artikel berikutnya, saya akan membahas beberapa opsi pengelolaan lanjutan.
Baca Juga
Memahami Pernyataan SQL Server ALTER TABLE ADD COLUMN