SQL Dilinde Alter Komutu Hakkında Bilgi
ALTER KOMUTU : Veritabanında var olan nesneler üzerinde yapılacak değişiklikler için kullanılan komuttur.Yeni tasarlanan bir veritabanında değişiklik yapmak çok güç değildir. Çünkü içindeki veriler az yada test amaçlıdır. Ama yaşayan bir veritabanında değişklik yapmak ciddi sorumluluklar ister. Verilin yok olmaması için çok dikkatli olmak gerekir. Bu konuda Alter ifadesi oldukça kolaylık sağlar.
Alter Table : Tablonun yapısı ile ilgili bilgilerin değiştirilmesi. Bazı durumlarda var olan tabloya yeni alan ekleyebilir, alan silebilir, alan adı değiştirebilir yada ilgili kısıtlamaları silebiliriz.
Tablo adı değiştirme : Birinci şekil standart SQL deki gösterimidir. Fakat T-SQL de bu işlem biraz daha farklıdır. Bunun için master tablosunda tanımlanmış olan SP_RENAME saklı yordamından (stored procedur) faydalanmak zorundasınız . Buda ikinci şekildeki gibidir
1 _ ALTER TABLE Tablo_Adı TO Yeni_Tablo_Adı
2_ EXEC SP_RENAME ’Tablo_Adı’, ’Yeni_Tablo_Adı’ ;
ALTER TABLE Personel TO Yeni_Personel // Standart SQL
EXEC SP_RENAME ’Personel’, ’Yeni_Personle’ // SQL Server T-SQL
Tabloya alan ekleme ve silme:
ALTER TABLE Tablo_Adı ADD Alan_Adı Veri_Tip Yeni alan ekleme.
ALTER TABLE Tablo_Adı DROP COLUMN Alan_Adı Var olan alanı silme.
ALTER TABLE Personel ADD CocukSayisi int;
ALTER TABLE Personel DROP COLUMN CocukSayisi
Tablodaki alan veri tipi değiştirme: Kolon veri tipi değiştirilirken veri kaybı olmaması ve hata alınmaması için mantıklı tür dönüşümleri yapılmalı. Alanın veri tipi int iken varchar yapılırsa tür dönüşümü yapılır ve veri kaybı olmaz. Ayrıca varchar ise ve içerisinde sadece sayı karakterleri tutulmuş ise sayı tür dönüşümü ile dönüştürülür ama sayı dışında da karakterler varsa hata ile karşılaşırsınız.
ALTER TABLE Tablo_Adi ALTER COLUMN Alan_Adi Yeni_Veri_Tipi
ALTER TABLE Personle ALTER COLUMN CocukSayisi char(10)
Tabloya kısıtlama ekleme ve silme : Özellikle iki tablo arasındaki ikincil anahtarları (foreing key) silerken dikkat edilecek en önemli nokta ilişkinin hangi tablodan hangi tabloya referans verildiğidir.
ALTER TABLE Tablo_Adı ADD CONSTRAINT Kısıtlama_Adı Kısıtlamanın_Ozellikleri Yeni kısıtlama ekleme.
ALTER TABLE Tablo_Adı DROP CONSTRAINT Kısıtlamanını_Adı Var olan kısıtlamayı silme
ALTER TABLE PersonelMal ADD CONSTRAINT FK_PersonelMal_Personel_N FOREIGN KEY (PPersonelId) REFERENCES Personel (PersonelId) ON DELETE CASCADE // PersonelMal Tablosununa foreing key ekleme
ALTER TABLE PersonelMal DROP CONSTRAINT FK_PersonelMal_Personel_N // Kısıtlamayı silme
Alan İsmi değiştirme: İsim değiştirme işlemleri standart SQL ’ de RENAME parametresi ile yapılır. Ama T-SQL’de tablo ismi değiştirmede olduğu gibi SP_RENAME saklı yordamı ile yapılır.
ALTER TABLE Tablo_Adı RENAME Alan_Adı TO Yeni_Alan_Adı Standart SQL ’ de
EXEC SP_RENAME ’Tablo_Adı.Alan_Adı’, ’Yeni_Alan_Adı’, ’Nesne_Tipi’ T-SQL ’ de
Nesne_Tipi : SP_RENAME saklı yordamı(stored procedur) değiştirilecek nesnenin tipini belirtir. Bunlar DATABASE, TABLO, VIEW, COLUMN, OBJECT(CHECK, FOREIGN KEY, PRIMARY/UNIQUE KEY) , vb dir. Alan isimleri tablolara özel nesnelerdir. Her tabloda Adi diye bir alan tanımlayabilirsiniz. Ama tablo isimleri, constrainler , stored procedurler, trigerlar yani SQL Serverda sysobjects sistem tablosuna kaydedilen nesnelerin ismi tekildir. Bunların ismi değiştirilirken Nesne_Tipi parametresine ’object’ yazılması gerek.
ALTER TABLE Sicil RENAME PersonelSicilNo TO SicilNo //Standart sql
EXEC SP_RENAME ’Sicil.PersonelSicilNo’, ’SicilNo’, ’Column’ // t-sql
EXEC SP_RENAME ’myView’, ’MaasBordrosu’,’Object’ // View İsmi değiştirme
EXEC SP_RENAME ’FK_PersonelMal_Personel’, ’FK_PM_P’,’Object’ // Foreing key ismi değiştirme
Alter View : Görünüm değiştirme. Görünüm değiştirme de tanımlama da olan standartlar geçerlidir. Bu tür yapılar üzerlerinde veri tutmadıkları ve sadece çalıştıkları zaman oluştuğu için değişiklik yapmak daha rahattır.
CREATE VIEW V_Maas AS
SELECT PersonelId, (Adi + ’ ’ + Soyadi) as AdSoyad, Maas FROM Personle ; // View oluşturduk
ALTER VIEW V_Maas AS
SELECT PersonelId, (Adi + ’ ’ + Soyadi) as AdSoyad, Maas FROM Personle WHERE Adi like(’A%’); // View değiştirdik.Burda yaptığımız değişiklik sadece sorgumuza koşul ekledik. Adı A ile başlayan personellerinkini getirsin.
DROP KOMUTU: Databasede buluna nesnelerin silinmesi için kullanılan komuttur.
DROP DATABASE Veritabanı_Adı Database silme
DROP TABLE Tablo_Adı Tablo silme
DROP VIEW View_Adı View silme
DROP INDEX Index_Adı Index silme
DROP DATABASE cSharpNedir
DROP TABLE Personle
DROP VIEW myView
DROP INDEX Ix_Personel