MySQL’de tablolar üzerinde çeşitli değişiklikler yapmak ve tabloları kilitlemek, veritabanı yönetiminde sıkça karşılaşılan işlemlerdir. Bu yazıda, `ALTER TABLE` komutu ile tablo yapısını değiştirme, tablo kilitleme işlemleri ve tablo silme gibi konuları ele alacağız.
#### 1. ALTER TABLE ile Tablo Yapısını Değiştirme
`ALTER TABLE` komutu, mevcut bir tablonun yapısını değiştirmek için kullanılır. Bu komutla yeni sütunlar ekleyebilir, sütunları silebilir veya sütunların veri tiplerini değiştirebilirsiniz.
##### Örnek 1: Yeni Sütun Ekleme
Aşağıdaki örnekte, `stack` tablosuna `submit` adında yeni bir sütun ekleniyor:
“`sql
ALTER TABLE stack ADD COLUMN submit date NOT NULL;
“`
##### Örnek 2: Sütun Silme
Aynı tablodan `submit` sütununu silmek için:
“`sql
ALTER TABLE stack DROP COLUMN submit;
“`
##### Örnek 3: Sütun Veri Tipini Değiştirme
`submit` sütununun veri tipini `DATETIME` olarak değiştirmek için:
“`sql
ALTER TABLE stack MODIFY submit DATETIME NOT NULL;
“`
##### Örnek 4: Sütun Adını ve Veri Tipini Değiştirme
`submit` sütununun adını `submit_date` olarak değiştirip veri tipini `DATETIME` yapmak için:
“`sql
ALTER TABLE stack CHANGE submit submit_date DATETIME NOT NULL;
“`
##### Örnek 5: Auto-Increment Değerini Değiştirme
Bir tablonun auto-increment değerini değiştirmek için:
“`sql
ALTER TABLE your_table_name AUTO_INCREMENT = 101;
“`
Bu komut, tablonun bir sonraki auto-increment değerini 101 olarak ayarlar.
#### 2. Tablo Adını Değiştirme
Bir tablonun adını değiştirmek için `RENAME TABLE` veya `ALTER TABLE` komutunu kullanabilirsiniz.
##### Örnek: Tablo Adını Değiştirme
“`sql
RENAME TABLE ‘old_table_name’ TO ‘new_table_name’;
“`
Veya:
“`sql
ALTER TABLE ‘old_table_name’ RENAME TO ‘new_table_name’;
“`
#### 3. Tablo Kilitleme İşlemleri
MySQL’de tablo kilitleme, özellikle çoklu işlemler sırasında veri tutarlılığını sağlamak için kullanılır. InnoDB motoru, otomatik olarak satır düzeyinde kilitleme yapar, ancak MyISAM motoru için tablo kilitleme işlemleri manuel olarak yapılabilir.
##### Örnek 1: Tabloya Yazma Kilidi (WRITE LOCK) Uygulama
“`sql
LOCK TABLES products WRITE;
INSERT INTO products(id, product_name) SELECT id, old_product_name FROM old_products;
UNLOCK TABLES;
“`
Bu örnekte, `products` tablosuna yazma kilidi uygulanır ve bu süre boyunca başka hiçbir bağlantı bu tabloya yazamaz.
##### Örnek 2: Tabloya Okuma Kilidi (READ LOCK) Uygulama
“`sql
LOCK TABLES products READ;
SELECT * FROM products;
UNLOCK TABLES;
“`
Bu örnekte, `products` tablosuna okuma kilidi uygulanır ve bu süre boyunca başka hiçbir bağlantı bu tablodan veri okuyamaz.
#### 4. Tablo Silme (DROP TABLE)
Bir tabloyu tamamen silmek için `DROP TABLE` komutu kullanılır. Bu işlem, tabloyu ve içindeki tüm verileri kalıcı olarak siler.
##### Örnek: Tablo Silme
“`sql
DROP TABLE tbl;
“`
Bu komut, `tbl` tablosunu ve içindeki tüm verileri siler. Bu işlem geri alınamaz, bu yüzden dikkatli kullanılmalıdır.
#### Sonuç
MySQL’de `ALTER TABLE` komutu ile tablo yapısını değiştirme, tablo adını değiştirme, tablo kilitleme ve tablo silme gibi işlemler, veritabanı yönetiminde oldukça önemlidir. Bu araçları etkili bir şekilde kullanarak, veritabanı tasarımınızı daha esnek ve güvenli hale getirebilirsiniz. Bir sonraki yazıda görüşmek üzere!