ALTER TABLE komutu; mevcut tabloya sütun eklemek, sütun silmek yada mevcut sütunun yapısında değişiklik yapmak için kullanılır. Mevcut tabloya çeşitli kısıtlamalar eklemek yada kısıtlamaları kaldırmak için de ALTER TABLE komutu kullanılır. Bu açıklamadan sonra örnekler üzerinde işlemlerin kısaca nasıl yapıldığını açıklayalım. ALTER TABLE komutu ile bir yada birden fazla sütun ile işlem yapmak mümkündür. Örneklerin olabildiğince sade olması ve konuyu anlatması için işlemleri tek sütun üzerinden gerçekleştireceğim.
Aşağıdaki şekilde bir tabloya sahip olduğumuzu düşünerek alter işlemlerini gerçekleştirelim.
SQL Sütun Ekleme: Mevcut SQL tablosuna sütun eklemek için alter komutu şu şekilde kullanılır.
NOT: Eğer yeni eklenen alan otomatik artan sayı olacaksa, alan oluşturulurken yapılması gerekir. Sonradan yapılması için alanın kaldırılması ve yeniden oluşturulması gerekir.
Örnek: yazarno alanını otomatik artan sayı olacak şekilde oluşturun.
Örnek:
yazar tablosuna tarih türünde dogumtarih ve varchar türünde yazarsoyad alanını ekleyiniz.
yazar tablosuna varchar(11) türünde tcno alanını ekleyiniz.
SQL Sütun Çıkarma: Mevcut SQL tablosundan sütun çıkarmak için yazılması gereken en temel SQL komutu şu şekildedir.
Örnek: yazar tablosundan dogumtarih alanını çıkarınız.
SQL Sütun Veri Türü Değiştirme:
*Mevcut SQL Tablosundaki bir sütunun veri türünü değiştirmek için yazılacak komut şu şekildedir.
Örnek: yazarad alanının veri türünü varchar(25) yapın.
*Mevcut SQL tablosundaki bir sütuna NOT NULL yada NULL kısıtlaması eklemek için yazılacak komut şu şekildedir.
Örnek: yazarad ve tcno alanlarını NOT NULL yapın.
*Mevcut SQL tablosundaki bir sütuna UNIQUE kısıtı eklemek için yazılması gereken komut şu şekildedir.(Not: hata mesajı almamak için alandaki verilerin eşsiz olması yada tablonun boş olması gerekiyor.)
Örnek: yazar tablosundaki tcno alanının UNIQUE (eşsiz) kısıtlaması uygulayın.
*Mevcut SQL tablsonundaki bir sütuna PRIMARY KEY (Birincil Anahtar) kısıtı eklemek için yazılması gereken komut şu şekildedir. Kısıt isimleri önemli. Kaldırma işlemleri bu kısıt isimleri üzerinde yapılacaktır.
Örnek: yazar tablosundaki yazarno alanını önce boş geçilemez sonra da birincil anahtar yapın. -Birincil anahtar için temel kurallardan biri boş geçilemez olmasıdır.
*Mevcut SQL tablosundaki bir sütunun birincil anahtar kısıtını kaldırmak için yazılması gereken komut şu şekildedir. Alanlardaki kısıtları kaldırma işlemi kısıt adları ile yapılmaktadır. Diğer kısıtlamaları da kısıtlama adı ile kaldırabilirsiniz. Olmayan bir kısıtlamayı yada daha önce silinmiş olan bir kısıtlamayı silmeye çalışıyorsanız. “Could not drop constraint. See previous errors.” hatası ile karşılaşırsınız.
Örnek: yazar tablosundaki tcno alanındaki kısıtlamayı kaldırın. (tcno için UNIQUE kısıtlamasını tc_kisit olarak eklemiştik)
SQL Tablodaki Sütunun Adını Değiştirme
ALTER Komutu ile sütun isimlerini değiştirmek mümkün değildir. Bu işlem için sp_rename saklı yordamı ile yapmak mümkündür. Ancak SQL Server tabloyu yeniden oluşturmanızı önerir.
Örnek: yazarad alanını yazaradsoyad olarak değiştiriniz.
SQL Tablosunun Adını Değiştirme
ALTER komutu ile tablo adını değiştirmek mümkün değil fakat bu işlem için sp_rename saklı yordamı kullanılabilir. İlişki bağımlılığı yüzünden SQL Server tabloyunu yeniden oluşturmayı öneriyor.
Örnek: yazar tablosunu yazarlar olarak değiştirin.
Aşağıdaki şekilde bir tabloya sahip olduğumuzu düşünerek alter işlemlerini gerçekleştirelim.
SQL:
CREATE TABLE yazar(
yazarno int,
yazarad varchar(50)
)
SQL Sütun Ekleme: Mevcut SQL tablosuna sütun eklemek için alter komutu şu şekilde kullanılır.
SQL:
--birden fazla sütun ekleme
ALTER TABLE tablo_adi ADD
sutun1 veri_turu,
sutun2 veri_turu
--tek sütun ekleme
ALTER TABLE tablo_adi ADD sutun_adi veri_turu
NOT: Eğer yeni eklenen alan otomatik artan sayı olacaksa, alan oluşturulurken yapılması gerekir. Sonradan yapılması için alanın kaldırılması ve yeniden oluşturulması gerekir.
Örnek: yazarno alanını otomatik artan sayı olacak şekilde oluşturun.
SQL:
ALTER TABLE yazar ADD yazarno INT IDENTITY(1,1)
Örnek:
yazar tablosuna tarih türünde dogumtarih ve varchar türünde yazarsoyad alanını ekleyiniz.
SQL:
ALTER TABLE yazar ADD
yazarsoyad varchar(50),
dogumtarih date
yazar tablosuna varchar(11) türünde tcno alanını ekleyiniz.
SQL:
ALTER TABLE yazar ADD tcno varchar(11)
SQL Sütun Çıkarma: Mevcut SQL tablosundan sütun çıkarmak için yazılması gereken en temel SQL komutu şu şekildedir.
SQL:
--tek sütun kaldırma
ALTER TABLE tablo_adi DROP COLUMN sütun_adi
--birden fazla sütun kaldırma
ALTER TABLE tablo_adi DROP COLUMN sutun1,sutun2
Örnek: yazar tablosundan dogumtarih alanını çıkarınız.
SQL:
ALTER TABLE yazar DROP COLUMN dogumtarih
SQL Sütun Veri Türü Değiştirme:
*Mevcut SQL Tablosundaki bir sütunun veri türünü değiştirmek için yazılacak komut şu şekildedir.
SQL:
ALTER TABLE tablo_adi ALTER COLUMN sutun_adi veri_turu
Örnek: yazarad alanının veri türünü varchar(25) yapın.
SQL:
ALTER TABLE yazar ALTER COLUMN yazarad varchar(25)
*Mevcut SQL tablosundaki bir sütuna NOT NULL yada NULL kısıtlaması eklemek için yazılacak komut şu şekildedir.
SQL:
ALTER TABLE tablo_adi ALTER COLUMN sutun_adi veri_turu [NOT NULL | NULL ]
Örnek: yazarad ve tcno alanlarını NOT NULL yapın.
SQL:
ALTER TABLE yazar ALTER COLUMN yazarad varchar(25) NOT NULL
ALTER TABLE yazar ALTER COLUMN tcno varchar(11) NOT NULL
*Mevcut SQL tablosundaki bir sütuna UNIQUE kısıtı eklemek için yazılması gereken komut şu şekildedir.(Not: hata mesajı almamak için alandaki verilerin eşsiz olması yada tablonun boş olması gerekiyor.)
SQL:
ALTER TABLE tablo_adi ADD CONSTRAINT kisit_adi UNIQUE(sutun_adi)
Örnek: yazar tablosundaki tcno alanının UNIQUE (eşsiz) kısıtlaması uygulayın.
SQL:
ALTER TABLE yazar ADD CONSTRAINT tcno_kisit UNIQUE (tcno)
*Mevcut SQL tablsonundaki bir sütuna PRIMARY KEY (Birincil Anahtar) kısıtı eklemek için yazılması gereken komut şu şekildedir. Kısıt isimleri önemli. Kaldırma işlemleri bu kısıt isimleri üzerinde yapılacaktır.
SQL:
ALTER TABLE tablo_Adi ADD CONSTRAINT kisit_adi PRIMARY KEY (sutun_adi)
Örnek: yazar tablosundaki yazarno alanını önce boş geçilemez sonra da birincil anahtar yapın. -Birincil anahtar için temel kurallardan biri boş geçilemez olmasıdır.
SQL:
ALTER TABLE yazar ALTER COLUMN yazarno int NOT NULL
ALTER TABLE yazar ADD CONSTRAINT PK_yazarno PRIMARY KEY (yazarno)
*Mevcut SQL tablosundaki bir sütunun birincil anahtar kısıtını kaldırmak için yazılması gereken komut şu şekildedir. Alanlardaki kısıtları kaldırma işlemi kısıt adları ile yapılmaktadır. Diğer kısıtlamaları da kısıtlama adı ile kaldırabilirsiniz. Olmayan bir kısıtlamayı yada daha önce silinmiş olan bir kısıtlamayı silmeye çalışıyorsanız. “Could not drop constraint. See previous errors.” hatası ile karşılaşırsınız.
SQL:
ALTER TABLE tablo_adi DROP CONSTRAINT kisit_adi
Örnek: yazar tablosundaki tcno alanındaki kısıtlamayı kaldırın. (tcno için UNIQUE kısıtlamasını tc_kisit olarak eklemiştik)
SQL:
ALTER TABLE yazar DROP CONSTRAINT tc_kisit
SQL Tablodaki Sütunun Adını Değiştirme
ALTER Komutu ile sütun isimlerini değiştirmek mümkün değildir. Bu işlem için sp_rename saklı yordamı ile yapmak mümkündür. Ancak SQL Server tabloyu yeniden oluşturmanızı önerir.
Örnek: yazarad alanını yazaradsoyad olarak değiştiriniz.
SQL:
sp_rename 'yazar.yazarad', 'yazaradsoyad', 'COLUMN'
SQL Tablosunun Adını Değiştirme
ALTER komutu ile tablo adını değiştirmek mümkün değil fakat bu işlem için sp_rename saklı yordamı kullanılabilir. İlişki bağımlılığı yüzünden SQL Server tabloyunu yeniden oluşturmayı öneriyor.
Örnek: yazar tablosunu yazarlar olarak değiştirin.
SQL:
sp_rename 'yazar' , 'yazarlar'