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)

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)