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.
1 2 3 4 5 6 |
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.
1 2 3 4 5 6 7 8 9 10 |
--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.
1 2 3 |
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.
1 2 3 4 5 |
ALTER TABLE yazar ADD yazarsoyad varchar(50), dogumtarih date |
yazar tablosuna varchar(11) türünde tcno alanını ekleyiniz.
1 2 3 |
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.
1 2 3 4 5 6 7 |
--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.
1 2 3 |
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.
1 2 3 |
ALTER TABLE tablo_adi ALTER COLUMN sutun_adi veri_turu |
Örnek: yazarad alanının veri türünü varchar(25) yapın.
1 2 3 |
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.
1 2 3 |
ALTER TABLE tablo_adi ALTER COLUMN sutun_adi veri_turu [NOT NULL | NULL ] |
Örnek: yazarad ve tcno alanlarını NOT NULL yapın.
1 2 3 4 |
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.)
1 2 3 |
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.
1 2 3 |
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.
1 2 3 |
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.
1 2 3 4 |
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.
1 2 3 |
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)
1 2 3 |
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.
1 2 3 |
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.
1 2 3 |
sp_rename 'yazar' , 'yazarlar' |
[…] mevcut sütunun yapısında değişiklik yapmak için kullanılır. Daha detaylı kullanım için ALTER TABLE Kullanımı yazısını okumanızı tavsiye […]
[…] SQL Tablo Düzenleme […]