MySQL Alter Table
MySQL de tablolar üzerinde yapısal değişiklikler yapmak için ALTER komutu kullanılır.
Genel ifade :
Alter Table <tabloadi> islem;
islem: Add, change, drop
tabloadi: Belirtilen tablo üzerinde islem de belirtilen işlemleri yapar.
Önceden oluşturduğumuz obs db ve tablolari şu şekildeydi
MariaDB [obs]>use obs; Database changed mysql> show tables; +---------------+ | Tables_in_obs | +---------------+ | dersler | | notlar | | ogrenci | +---------------+ 3 rows in set (0.007 sec)
ogrenci tablosunun yapısını görelim
MariaDB [obs]>desc ogrenci; +---------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+-------------+------+-----+---------+-------+ | ogrNo | char(11) | YES | | NULL | | | adi | varchar(30) | YES | | NULL | | | soyadi | varchar(30) | YES | | NULL | | | mobil | varchar(10) | YES | | NULL | | | dtarihi | date | YES | | NULL | | | bolumu | varchar(30) | YES | | NULL | | +---------+-------------+------+-----+---------+-------+ 6 rows in set (0.056 sec)
Tabloya Alan Ekleme -ADD
ogrenci tablosunda eposta isminde, türü string ve 50 karakter uzunluğunda bilgi alanı eklemek için aşağıdaki komut verilmelidir.
MariaDB [obs]> alter table ogrenci add eposta varchar(50); Query OK, 0 rows affected (0.148 sec) Records: 0 Duplicates: 0 Warnings: 0
mysql>desc ogrenci;
komutuyla kontrol edilebilir.
Tabloya Alan Adı/türü Değiştirme – CHANGE
Eklediğimiz eposta bilgi alanın adını email, karakter sayısını da 100 yapalım.
MariaDB [obs]> alter table ogrenci change eposta email varchar(100); Query OK, 0 rows affected (0.133 sec) Records: 0 Duplicates: 0 Warnings: 0
Uyarı: Sadece bilgi alanının uzunluğu değiştirilecek dahi olsa alan adı tekrar yazılmalıdır.
email alanının uzunluğunu 150 yapılacaksa email iki kez yazılmalıdır.
MariaDB [obs]> alter table ogrenci change email email varchar(150); Query OK, 0 rows affected (0.457 sec) Records: 0 Duplicates: 0 Warnings: 0
Tablodan Alan Silme
Var olan bir alanın silinmesi için drop eylemi yapılır. Bu eylem sonucunda o alan ve içindeki bilgiler yok olacaktır.
MariaDB [obs]> desc ogrenci; +---------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+--------------+------+-----+---------+-------+ | ogrNo | char(11) | YES | | NULL | | | adi | varchar(30) | YES | | NULL | | | soyadi | varchar(30) | YES | | NULL | | | mobil | varchar(10) | YES | | NULL | | | dtarihi | date | YES | | NULL | | | bolumu | varchar(30) | YES | | NULL | | | email | varchar(150) | YES | | NULL | | +---------+--------------+------+-----+---------+-------+ 7 rows in set (0.085 sec)
email alanı drop (düşürmek-silmek-yok etmek) için
MariaDB [obs]> alter table ogrenci drop email; Query OK, 0 rows affected (0.135 sec) Records: 0 Duplicates: 0 Warnings: 0
Alanın yok edildiğini aşağıdaki komutla göebilirsiniz.
MariaDB [obs]> desc ogrenci; +---------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+-------------+------+-----+---------+-------+ | ogrNo | char(11) | YES | | NULL | | | adi | varchar(30) | YES | | NULL | | | soyadi | varchar(30) | YES | | NULL | | | mobil | varchar(10) | YES | | NULL | | | dtarihi | date | YES | | NULL | | | bolumu | varchar(30) | YES | | NULL | | +---------+-------------+------+-----+---------+-------+ 6 rows in set (0.033 sec)