Alter Table (Tablo Güncelleme) 

Alter Table; Bir tablonun tanımını değiştirir. Veritabanındaki satırları güncellemeye ek olarak, veritabanı içindeki tabloların yapısını da değiştirmek gereke bilir. Bu amaç için, ALTER TABLE ifadesi kullanılır. MySQL ile bir tabloda istediğiniz kadar değişiklik yapabilirsiniz. Değiştirme cümleciklerinin her biri tablonun farklı yönlerini değiştirmek için kullanılabilir. Alter Table’nin çeşitli alt kullanımları vardır.

 Kullanımı; ALTER [IGNORE] TABLE tbl_name    alter_specification [, alter_specification] … alter_specification:    table_option  | ADD [COLUMN] column_definition [FIRST | AFTER col_name ]  | ADD [COLUMN] (column_definition,…)  | ADD {INDEX|KEY} [index_name] [index_type] (index_col_name,…)  | ADD [CONSTRAINT [symbol]]PRIMARY KEY [index_type] (index_col_name,…)  | ADD [CONSTRAINT [symbol]]UNIQUE [INDEX|KEY] [index_name] [index_type] (index_col_name,…)  | ADD [CONSTRAINT [symbol]]FOREIGN KEY [index_name] (index_col_name,…)[reference_definition]  | ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}  | CHANGE [COLUMN] old_col_name column_definition [FIRST|AFTER col_name]  | MODIFY [COLUMN] column_definition [FIRST | AFTER col_name]  | DROP [COLUMN] col_name  | DROP PRIMARY KEY  | DROP {INDEX|KEY} index_name  | DROP FOREIGN KEY fk_symbol  | DISABLE KEYS  | ENABLE KEYS  | RENAME [TO] new_tbl_name  | ORDER BY col_name [, col_name] …  | CONVERT TO CHARACTER SET charset_name [COLLATE collation_name]  | [DEFAULT] CHARACTER SET charset_name [COLLATE collation_name]  | DISCARD TABLESPACE  | IMPORT TABLESPACE index_col_name:    col_name [(length)] [ASC | DESC] index_type:    USING {BTREE | HASH} 

ALTER TABLE İfadesiyle Yapılabilen Değişiklikler
Söz Dizimi Açıklama
ADD [COLUMN] column_definition [FIRST | AFTER col_name ] Belirtilen konuma yeni bir sütun ekler. column_definition’ın bir ad ve tipe ihtiyaç duyar.
ADD [COLUMN] (column_definition,…) Tablonun sonuna bir veya daha fazla sütun ekler.
ADD {INDEX|KEY} [index_name] [index_type] (index_col_name,…) Tabloya velirtilen sütun veya sütunlar üzerinde bir index oluşturur.
ADD [CONSTRAINT [symbol]]PRIMARY KEY [index_type] (index_col_name,…) Belirtilen sütun veya sütunları tablonun birincil anahtarı yapar.
ADD [CONSTRAINT [symbol]]UNIQUE [INDEX|KEY] [index_name] [index_type] (index_col_name,…) Belirtilen sütun ve sütunlar üzerinde tabloya benzersiz bir index ekler.
ADD [CONSTRAINT [symbol]]FOREIGN KEY [index_name] (index_col_name,…)[reference_definition] Bir InnDB tablosuna yabancı bir anahtar ekler.
ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT} Belirli bir sütunun varsayılan değerini ekler veya kaldırır.
CHANGE [COLUMN] old_col_name column_definition [FIRST|AFTER col_name] Column adlı sütunu, listelenmiş tanıma sahip olacak şekilde listeler.
MODIFY [COLUMN] column_definition [FIRST | AFTER col_name] CHANGE benzer. Adları değil, sütun tiplerini değiştirmek için kullanılır.
DROP [COLUMN] col_name Belirtilen sütunu siler
DROP PRIMARY KEY Birincil indexi siler.
DROP {INDEX|KEY} index_name Belirtilen indexi siler.
DROP FOREIGN KEY fk_symbol Yabancı anahtarı siler.
DISABLE KEYS İndex güncelleme özelliğinin etkinliğini kaldırır.
ENABLE KEYS İndex güncelleme özelliğinin etkinleştirir.
RENAME [TO] new_tbl_name Bir tabloyu yeniden adlandırır.
ORDER BY col_name [, col_name] … Tabloyu satırlar belirli bir şekilde sıralanmış şekilde yeniden oluşturur.
CONVERT TO CHARACTER SET charset_name [COLLATE collation_name] Metin tabanlı sütunların hepsini belirtilen kümesine dönüştürür.
[DEFAULT] CHARACTER SET charset_name [COLLATE collation_name] Varsayılan karakter kümesini ayarlar.
DISCARD TABLESPACE Bir InnDB dosyasının temelini oluşturan tablespace dosyasını siler.
IMPORT TABLESPACE

Bir InnDB dosyasının temelini oluşturan tablespace dosyasını yeniden oluşturur..

 Tablo 1.3 Alter Table İfadesiyle Yapılabilen Değişiklikler 

Örnek; Müşteri tablosunda adların 25 karaktere kadar uzun olmasına izin verilmiş olsun. Verileri almaya başladıktan sonra bazı isimlerin çok uzun olduğu görülsün. Bu durumu, sütunu 50 karakter uzunluğunda olacak şekilde değiştirilerek düzeltile bilir.

 mysql>alter table musteri modify ad char(50) not null; 

Çok sık ortaya çıkan bir durum, bir sütun ekleme ihtiyacıdır. 

 

Örnek; Müşteri tablosunda müşterilerin e-mail adreslerini de almak istediğimiz düşünelim. Ve tablomuzda böyle bir sütun önceden yoktu. Bu durumu, yeni bir sütun eklenecektir.

 mysql>alter table musteri add  email char(50) not null; 

Eklenen bir sütundan kurtulma isteği de yine çok sık karşılaşılan bir durumdur.  Yukarda ekeldiğimiz sütunu aşağıdaki gibi silebiliriz.

 mysql>alter table musteri drop  email; 

Örnek; Öğrenci kayıt bilgileri için oluşturulmuş olan ogrenci tablosunun adını, ogr olarak değiştirmek için şu kodlar yazılır..

 mysql>alter table ogrenci rename ogr; Örnek;  Bir kirtasiye veritabanındaki kitap adlı alan adını book olarak değiştirelim. mysql>alter table kirtasiye change kitap book;