MYSQL – DEĞİŞTİR, BIRAK, YENİDEN ADLANDIR, DEĞİŞTİR
ALTER Komutu Nedir?
Ne demişler Değişmeyen tek şey değişimdir
Zamanla iş gereksinimleri de değişir. İş gereksinimleri değiştikçe Veritabanı tasarımlarının da değişmesi gerekir.
MySQL sağlar alter bize yardımcı olan fonksiyon değişiklikleri halihazırda mevcut veritabanı tasarımına dahil edin.
Alter komutu, bir veritabanının yaşam döngüsü boyunca değişmesi gerekebilecek mevcut bir veritabanını, tabloyu, görünümü veya diğer veritabanı nesnelerini değiştirmek için kullanılır.
Veritabanı tasarımımızı tamamladık ve hayata geçirildi diyelim. Veritabanı kullanıcılarımız bunu kullanıyor ve daha sonra bazı hayati bilgilerin tasarım aşamasında dışarıda bırakıldığını fark ediyorlar. Mevcut verileri kaybetmek istemiyorlar, sadece yeni bilgileri dahil etmek istiyorlar. Bu gibi durumlarda alter komutu kullanışlıdır. Bir alanın veri türünü say dizesinden sayısal veri türüne değiştirmek, alan adını yeni bir adla değiştirmek ve hatta tabloya yeni bir sütun eklemek için alter komutunu kullanabiliriz.
Alter – sözdizimi
Zaten mevcut bir tabloya sütun eklemek için kullanılan temel sözdizimi aşağıda gösterilmiştir.
ALTER TABLE `table_name` ADD COLUMN `column_name` `data_type`;
İŞTE
- “TABLOYU DEĞİŞTİR `tablo_adı`” bunu söyleyen komut MySQL 'tablo_adı' adlı tabloyu değiştirmek için sunucu.
- “SÜTUN `sütun_adı` `veri_türü` EKLE” bunu söyleyen komut MySQL Sunucuya, "veri_tipi" veri türüne sahip "sütun_adı" adlı yeni bir sütun eklemek için.
Diyelim ki Myflix çevrimiçi faturalandırma ve ödemeleri tanıttı. Bu amaçla, üyeler tablomuza kredi kartı numarası için bir alan eklememiz istendi. Bunu yapmak için ALTER komutunu kullanabiliriz. Herhangi bir değişiklik yapmadan önce üyeler tablosunun yapısına bakalım. Aşağıda gösterilen betik bunu yapmamıza yardımcı olur.
SHOW COLUMNS FROM `members`;
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
membership_number | int(11) | NO | PRI | NULL | auto_increment |
full_names | varchar(350) | NO | NULL | ||
gender | varchar(6) | YES | NULL | ||
date_of_birth | date | YES | NULL | ||
physical_address | varchar(255) | YES | NULL | ||
postal_address | varchar(255) | YES | NULL | ||
contact_number | varchar(75) | YES | NULL | ||
varchar(255) | YES | NULL |
Üyeler tablosuna yeni bir alan eklemek için aşağıda gösterilen scripti kullanabiliriz.
ALTER TABLE `members` ADD COLUMN `credit_card_number` VARCHAR(25);
Yukarıdaki betiğin çalıştırılması MySQL Myflixdb'ye karşı, üyeler tablosuna VARCHAR veri türüyle kredi kartı numarası adında yeni bir sütun ekler. Show columns betiğini çalıştırmak bize aşağıdaki sonuçları verir.
SHOW COLUMNS FROM `members`;
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
membership_number | int(11) | NO | PRI | NULL | auto_increment |
full_names | varchar(350) | NO | NULL | ||
gender | varchar(6) | YES | NULL | ||
date_of_birth | date | YES | NULL | ||
physical_address | varchar(255) | YES | NULL | ||
postal_address | varchar(255) | YES | NULL | ||
contact_number | varchar(75) | YES | NULL | ||
varchar(255) | YES | NULL | |||
credit_card_number | varchar(25) | YES |
Dönen sonuçlardan da görebileceğiniz gibi kredi kartı numarası üyeler tablosuna eklenmiştir. Üye verilerinin içerdiği veriler yeni sütunun eklenmesinden etkilenmez.
BIRAKMA KOMUTU NEDİR?
DROP komutu şu amaçlarla kullanılır:
- Bir veritabanını sil MySQL sunucu
- Veritabanından bir nesneyi (Tablo, Sütun gibi) silin.
Şimdi DROP komutunun kullanıldığı pratik örneklere bakalım.
Alter Komutu üzerindeki önceki örneğimizde üyeler tablosuna kredi kartı numarası isimli bir sütun eklemiştik.
Çevrimiçi faturalama işlevinin biraz zaman alacağını ve kredi kartı sütununu İPTAL etmek istediğimizi varsayalım
Aşağıdaki betiği kullanabiliriz
ALTER TABLE `members` DROP COLUMN `credit_card_number`;
Yukarıdaki betiğin çalıştırılması, üyeler tablosundan kredi_kartı_numarası sütununu düşürür
Şimdi sütunumuzun bırakılıp bırakılmadığını doğrulamak için üyeler tablosundaki sütunlara bakalım.
SHOW COLUMNS FROM `members`;
Yukarıdaki betiğin çalıştırılması MySQL workbench'ü myflixdb'ye karşı çalıştırdığımızda aşağıdaki sonuçlar ortaya çıkıyor.
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
membership_number | int(11) | NO | PRI | NULL | auto_increment |
full_names | varchar(350) | NO | NULL | ||
gender | varchar(6) | YES | NULL | ||
date_of_birth | date | YES | NULL | ||
physical_address | varchar(255) | YES | NULL | ||
postal_address | varchar(255) | YES | NULL | ||
contact_number | varchar(75) | YES | NULL | ||
varchar(255) | YES | NULL |
Kredi kartı numarasının alanlar listesinden çıkarıldığına dikkat edin.
BIRAKMA TABLOSU
Veritabanından bir tabloyu DROP'a aktarmanın sözdizimi aşağıdaki gibidir –
DROP TABLE `sample_table`;
Bir örneğe bakalım
DROP TABLE `categories_archive`;
Yukarıdaki betiği çalıştırdığımızda `category_archive` isimli tablo veritabanımızdan silinir.
YENİDEN ADLANDIRMA KOMUTU NEDİR?
Yeniden adlandır komutu şunu yapmak için kullanılır: mevcut bir veritabanı nesnesinin adını (Tablo, Sütun gibi) yeni bir adla değiştirin.
Bir tablonun yeniden adlandırılması, içinde bulunan verilerin kaybolmasına neden olmaz.
Sözdizimi:-
Yeniden adlandırma komutunun temel söz dizimi aşağıdaki gibidir.
RENAME TABLE `current_table_name` TO `new_table_name`;
Diyelim ki movierentals tablosunu movie_rentals olarak yeniden adlandırmak istiyoruz, bunu yapmak için aşağıda gösterilen scripti kullanabiliriz.
RENAME TABLE `movierentals` TO `movie_rentals`;
Yukarıdaki betiğin çalıştırılması, `movierentals` tablosunu `movie_rentals` olarak yeniden adlandırır.
Şimdi movie_rentals tablosunu orijinal ismine geri döndüreceğiz.
RENAME TABLE `movie_rentals` TO `movierentals`;
ANAHTAR KELİMEYİ DEĞİŞTİR
Anahtar Kelimeleri Değiştir şunları yapmanıza olanak sağlar:
- Sütun Adını Değiştir
- Sütun Veri Türünü Değiştir
- Sütun Kısıtlamalarını Değiştir
Bir örneğe bakalım. Üyeler tablosundaki tam adlar alanı varchar veri türündedir ve 150 genişliğindedir.
SHOW COLUMNS FROM `members`;
Yukarıdaki betiğin çalıştırılması MySQL workbench'ü myflixdb'ye karşı çalıştırdığımızda aşağıdaki sonuçlar ortaya çıkıyor.
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
membership_number | int(11) | NO | PRI | NULL | auto_increment |
full_names | varchar(150) | NO | NULL | ||
gender | varchar(6) | YES | NULL | ||
date_of_birth | date | YES | NULL | ||
physical_address | varchar(255) | YES | NULL | ||
postal_address | varchar(255) | YES | NULL | ||
contact_number | varchar(75) | YES | NULL | ||
varchar(255) | YES | NULL |
Diyelim ki istiyoruz
- Alan adını "tam_adlar" yerine "tam ad" olarak değiştirin
- Genişliği 250 olan char veri türüne değiştirin
- NOT NULL kısıtlaması ekleme
Bunu change komutunu kullanarak aşağıdaki gibi başarabiliriz –
ALTER TABLE `members` CHANGE COLUMN `full_names` `fullname` char(250) NOT NULL;
Yukarıdaki betiğin çalıştırılması MySQL workbench'ü myflixdb'ye karşı çalıştırıp daha sonra yukarıda verilen show columns betiğini çalıştırdığımızda aşağıdaki sonuçlar elde edilir.
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
membership_number | int(11) | NO | PRI | NULL | auto_increment |
fullnames | char(250) | NO | NULL | ||
gender | varchar(6) | YES | NULL | ||
date_of_birth | date | YES | NULL | ||
physical_address | varchar(255) | YES | NULL | ||
postal_address | varchar(255) | YES | NULL | ||
contact_number | varchar(75) | YES | NULL | ||
varchar(255) | YES | NULL |
ANAHTAR KELİMEYİ DEĞİŞTİRİN
DEĞİŞTİRME Anahtar Kelimesi şunları yapmanızı sağlar:
- Sütun Veri Türünü Değiştir
- Sütun Kısıtlamalarını Değiştirin
Yukarıdaki CHANGE örneğinde alan adını ve diğer detayları değiştirmemiz gerekiyordu. CHANGE deyiminde alan adının atlanması hata oluşturacaktır. Alan adını etkilemeden yalnızca alandaki veri türünü ve kısıtlamaları değiştirmekle ilgilendiğimizi varsayalım, bunu gerçekleştirmek için MODIFY anahtar sözcüğünü kullanabiliriz.
Aşağıdaki script “tam ad” alanının genişliğini 250'den 50'ye değiştiriyor.
ALTER TABLE `members`MODIFY `fullname` char(50) NOT NULL;
Yukarıdaki betiğin çalıştırılması MySQL workbench'ü myflixdb'ye karşı çalıştırıp daha sonra yukarıda verilen show columns betiğini çalıştırdığımızda aşağıda gösterilen sonuçlar elde edilir.
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
membership_number | int(11) | NO | PRI | NULL | auto_increment |
fullnames | char(50) | NO | NULL | ||
gender | varchar(6) | YES | NULL | ||
date_of_birth | date | YES | NULL | ||
physical_address | varchar(255) | YES | NULL | ||
postal_address | varchar(255) | YES | NULL | ||
contact_number | varchar(75) | YES | NULL | ||
varchar(255) | YES | NULL |
ANAHTAR KELİMEDEN SONRA
Tablonun belirli bir konumuna yeni bir sütun eklemek istediğimizi varsayalım.
AFTER sözcüğüyle birlikte alter komutunu kullanabiliriz.
Aşağıdaki komut dosyası, üyeler tablosundaki doğum tarihinin hemen sonrasına "tarih_of_registration"ı ekler.
ALTER TABLE `members` ADD `date_of_registration` date NULL AFTER `date_of_birth`;
Yukarıdaki betiğin çalıştırılması MySQL workbench'ü myflixdb'ye karşı çalıştırıp daha sonra yukarıda verilen show columns betiğini çalıştırdığımızda aşağıda gösterilen sonuçlar elde edilir.
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
membership_number | int(11) | NO | PRI | NULL | auto_increment |
fullnames | char(50) | NO | NULL | ||
gender | varchar(6) | YES | NULL | ||
date_of_birth | date | YES | NULL | ||
date_of_registration | date | YES | NULL | ||
physical_address | varchar(255) | YES | NULL | ||
postal_address | varchar(255) | YES | NULL | ||
contact_number | varchar(75) | YES | NULL | ||
varchar(255) | YES | NULL |
ÖZET
- Alter komutu, bir veritabanını veya veritabanının içerdiği herhangi bir nesneyi değiştirmek istediğimizde kullanılır.
- Drop komutu veritabanlarını silmek için kullanılır. MySQL sunucu veya bir veritabanındaki nesneler.
- Rename komutu, bir tablonun adını yeni bir tablo adıyla değiştirmek için kullanılır.
- Change anahtar sözcüğü, bir sütun adını, veri türünü ve kısıtlamaları değiştirmenize olanak tanır
- Anahtar Kelimeyi Değiştir, bir sütun veri türünü ve kısıtlamalarını değiştirmenize olanak tanır
- After anahtar sözcüğü, bir sütunun tablodaki konumunu belirtmek için kullanılır