SQL veritabanı yönetiminde, mevcut yapıları değiştirmek sıkça karşılaşılan bir ihtiyaçtır. Veritabanının veya tabloların ilk oluşturulduğu haliyle kalması nadirdir; iş gereksinimleri zamanla evrilir. İşte bu noktada ALTER DATABASE ve ALTER TABLE komutları devreye girer. Bu güçlü SQL ifadeleri, veri kaybını en aza indirerek veritabanı şemalarını dinamik olarak güncellemenizi sağlar, sistemlerinizi güncel ve verimli tutar.
Veritabanı Yapılarını Düzenleme: ALTER DATABASE
ALTER DATABASE komutu, bir veritabanının genel özelliklerini, dosya gruplarını, dosya yollarını, kurtarma modelini veya diğer yapısal ayarlarını değiştirmek için kullanılır. Bu komut, bir veritabanının adını değiştirmek veya sistem performansını ve kullanılabilirliğini etkileyen özelliklerini ayarlamak gibi geniş kapsamlı değişiklikler yapmaya olanak tanır.
Veritabanı Adı Değiştirme
Bir veritabanının adını değiştirmek, genellikle sistemler arası geçişlerde veya isimlendirme standartlarını güncellemek gerektiğinde uygulanır. Bu işlem, veritabanı kapalı konumdayken yapılmalıdır.
-- SQL Server için örnek
ALTER DATABASE EskiVeritabaniAdi MODIFY NAME = YeniVeritabaniAdi;
-- MySQL için örnek
RENAME DATABASE EskiVeritabaniAdi TO YeniVeritabaniAdi;
Veritabanı Seçeneklerini Değiştirme
Kurtarma modeli, uyumluluk düzeyi, erişim modu (salt okunur, tek kullanıcı vb.) gibi birçok veritabanı seçeneği ALTER DATABASE ile değiştirilebilir.
-- Bir veritabanının kurtarma modelini basit olarak değiştirme (SQL Server)
ALTER DATABASE VeritabaniAdi
SET RECOVERY SIMPLE;
-- Veritabanını tek kullanıcı moduna alma (SQL Server)
ALTER DATABASE VeritabaniAdi
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE; -- Bağlantıları hemen sonlandırır
-- Veritabanını çoklu kullanıcı moduna geri alma
ALTER DATABASE VeritabaniAdi
SET MULTI_USER;
Veritabanı Dosyalarını Yönetme
Veritabanı dosyalarının boyutunu, maksimum boyutunu veya otomatik büyütme ayarlarını değiştirmek de ALTER DATABASE ile mümkündür. Bu, disk alanı yönetimi ve performans optimizasyonu için kritik öneme sahiptir.
-- Bir veri dosyasının boyutunu ve otomatik büyüme ayarlarını değiştirme (SQL Server)
ALTER DATABASE VeritabaniAdi
MODIFY FILE (NAME = VeriDosyaAdi,
SIZE = 2GB,
MAXSIZE = 10GB,
FILEGROWTH = 256MB);
-- Yeni bir veri dosyası ekleme
ALTER DATABASE VeritabaniAdi
ADD FILE (NAME = YeniVeriDosyasi,
FILENAME = 'D:\SQLData\YeniVeriDosyasi.ndf',
SIZE = 1GB,
MAXSIZE = 5GB,
FILEGROWTH = 128MB);
Tablo Yapılarını Düzenleme: ALTER TABLE
Genel Bakış
ALTER TABLE, SQL’de en sık kullanılan düzenleme komutlarından biridir. Mevcut bir tablonun yapısını değiştirmek, yani sütun eklemek, silmek, değiştirmek, kısıtlamalar eklemek veya kaldırmak için kullanılır. Bu komut, yazılım geliştirme sürecindeki gereksinim değişikliklerine hızlıca uyum sağlamak veya bir veritabanının evrimini yönetmek için hayati öneme sahiptir.
Sütun İşlemleri
Sütun Ekleme: ADD COLUMN
Mevcut bir tabloya yeni bir sütun eklemek için kullanılır. Eklenen sütun, varsayılan bir değerle veya boş (NULL) olarak doldurulabilir.
ALTER TABLE Musteriler
ADD COLUMN Eposta VARCHAR(100) UNIQUE;
ALTER TABLE Urunler
ADD COLUMN StokAdedi INT NOT NULL DEFAULT 0;
Sütun Silme: DROP COLUMN
Bir tablodan mevcut bir sütunu ve bu sütuna ait tüm verileri silmek için kullanılır. Bu işlem geri alınamaz olduğundan, dikkatli bir şekilde uygulanmalıdır.
ALTER TABLE Musteriler
DROP COLUMN TelefonNumarasi;
-- Eğer sütunda kısıtlamalar varsa, önce kısıtlamaların silinmesi gerekebilir (veritabanına göre değişir)
-- SQL Server'da kısıtlamayı otomatik siler
Sütun Veri Tipi veya Boyutunu Değiştirme: ALTER COLUMN
Bir sütunun veri tipini, boyutunu veya boş geçilebilirlik (NULL/NOT NULL) özelliklerini değiştirmek için kullanılır. Bu işlem, mevcut verilerin yeni tipe uygun olup olmadığını kontrol eder. Uygun olmayan durumlarda hata verebilir veya veri kaybına neden olabilir.
-- VARCHAR sütunun boyutunu büyütme
ALTER TABLE Urunler
ALTER COLUMN UrunAdi VARCHAR(200);
-- Sütunun veri tipini ve NULL özelliğini değiştirme (PostgreSQL/Oracle)
ALTER TABLE Siparisler
ALTER COLUMN SiparisTarihi TYPE TIMESTAMP NOT NULL;
-- SQL Server için syntax
ALTER TABLE Siparisler
ALTER COLUMN SiparisTarihi DATETIME NOT NULL;
Sütun Adı Değiştirme
Bir sütunun adını değiştirmek için veritabanı sistemine göre farklı komutlar kullanılabilir. Çoğu modern RDBMS, ALTER TABLE RENAME COLUMN syntax’ını desteklerken, SQL Server gibi bazıları özel saklı yordamlar kullanır.
-- PostgreSQL / Oracle için örnek
ALTER TABLE Musteriler
RENAME COLUMN Eposta TO MusteriEpostasi;
-- SQL Server için örnek (sp_rename saklı yordamı kullanılır)
EXEC sp_rename 'Musteriler.Eposta', 'MusteriEpostasi', 'COLUMN';
Kısıtlama İşlemleri
Tabloların veri bütünlüğünü sağlamak için kısıtlamalar (constraints) kullanılır. ALTER TABLE ile bu kısıtlamalar eklenebilir veya kaldırılabilir.
Kısıtlama Ekleme: ADD CONSTRAINT
Yeni birincil anahtar (PRIMARY KEY), dış anahtar (FOREIGN KEY), benzersiz (UNIQUE), kontrol (CHECK) veya varsayılan değer (DEFAULT) kısıtlamaları eklemek için kullanılır.
-- Birincil Anahtar Ekleme
ALTER TABLE Siparisler
ADD CONSTRAINT PK_Siparisler PRIMARY KEY (SiparisID);
-- Dış Anahtar Ekleme
ALTER TABLE SiparisKalemleri
ADD CONSTRAINT FK_SiparisKalemleri_Siparisler FOREIGN KEY (SiparisID)
REFERENCES Siparisler (SiparisID);
-- Benzersiz Kısıtlama Ekleme
ALTER TABLE Kullanicilar
ADD CONSTRAINT UQ_KullaniciAdi UNIQUE (KullaniciAdi);
-- Kontrol Kısıtlaması Ekleme (yaşın 18'den büyük olmasını sağlama)
ALTER TABLE Calisanlar
ADD CONSTRAINT CK_CalisanYas CHECK (Yas >= 18);
-- Varsayılan Değer Kısıtlaması Ekleme
ALTER TABLE Urunler
ADD CONSTRAINT DF_UrunFiyati DEFAULT 0.00 FOR Fiyat;
Kısıtlama Silme: DROP CONSTRAINT
Bir tablodan mevcut bir kısıtlamayı, kısıtlama adını kullanarak kaldırmak için kullanılır.
ALTER TABLE Musteriler
DROP CONSTRAINT UQ_MusteriEpostasi;
ALTER TABLE SiparisKalemleri
DROP CONSTRAINT FK_SiparisKalemleri_Siparisler;
Tablo Adı Değiştirme: RENAME TABLE
Bir tablonun adını değiştirmek için kullanılır. Bu da veritabanına göre farklı syntax’lara sahip olabilir.
-- PostgreSQL / MySQL / Oracle için örnek
ALTER TABLE EskiTabloAdi
RENAME TO YeniTabloAdi;
-- SQL Server için örnek
EXEC sp_rename 'EskiTabloAdi', 'YeniTabloAdi';
Özetle, ALTER DATABASE ve ALTER TABLE komutları SQL veritabanı yönetiminin temel taşlarındandır. Bu komutlar, zamanla değişen iş ihtiyaçlarına uyum sağlamak için mevcut veritabanı ve tablo yapılarını güvenli bir şekilde düzenleme esnekliği sunar. Ancak, bu işlemlerin dikkatlice planlanması ve test edilmesi büyük önem taşır; zira yanlış uygulamalar veri bütünlüğünü olumsuz etkileyebilir. Doğru kullanıldığında, dinamik ve ölçeklenebilir veritabanı sistemlerinin anahtarıdırlar.