MYSQL – DEĞİŞTİR, BIRAK, YENİDEN ADLANDIR, DEĞİŞTİR

⚡ Akıllı Özet

ALTER, DROP, RENAME ve MODIFY komutları şunlardır: MySQL Veritabanı kullanımdayken onu yeniden şekillendiren komutlardır. Bu komutlar, halihazırda depolanmış satırları silmeden tablolar ve sütunlar gibi nesneleri ekler, kaldırır, yeniden adlandırır ve yeniden tanımlar.

  • ALTER Komutu: ALTER TABLE komutu, zaten var olan bir nesneyi yeniden tanımlar; bu nedenle canlı bir şema, yeniden oluşturmaya gerek kalmadan yeni gereksinimleri karşılar.
  • SÜTUN EKLE: ALTER TABLE ADD COLUMN komutu bir alanı tabloya ekler ve mevcut satırlar daha önce sahip oldukları tüm değerleri korur.
  • 🗑️ DROP Komutu: DROP komutu, ALTER TABLE DROP COLUMN komutuyla bir veritabanını, bir tabloyu veya tek bir sütunu kalıcı olarak siler.
  • 🔁 RENAME komutu: RENAME TABLE komutu yalnızca tablonun adını değiştirir, içindeki veriler kaybolmaz.
  • ✏️ DEĞİŞTİR Anahtar Kelime: CHANGE komutu, bir sütunun adını değiştirir ve türünü ve kısıtlamalarını tek bir ifadede yeniden tanımlar; bu nedenle her iki sütun adı da gereklidir.
  • 🧩 DEĞİŞTİR Anahtar Kelimesi: MODIFY, türü ve kısıtlamaları değiştirirken, keepin ise korur.ping İsim, yalnızca metin düzenlemesi için daha güvenli bir seçenektir.
  • 📍 SONRA Anahtar Kelimesi: AFTER komutu, yeni eklenen sütunu tablonun sonuna değil, seçilen bir konuma yerleştirir.

MySQL DEĞİŞTİR, SİL, YENİDEN ADLANDIR ve DEĞİŞTİR

ALTER komutu nedir? MySQL?

MKS alter Bu komut, bir veritabanının yaşam döngüsü sırasında değiştirilmesi gereken mevcut bir veritabanını, tabloyu, görünümü veya diğer veritabanı nesnesini değiştirir. Bir şemanın oluşturulduktan ve verilerle doldurulduktan sonra gelişmesine olanak tanıyan komuttur.

İş gereksinimleri nadiren sabit kalır ve veritabanı tasarımı da bunlarla birlikte gelişmelidir. Diyelim ki Myflix veritabanının tasarımı uygulandı ve kullanıcılar onunla çalışıyor; ancak o zaman ekip, hayati bilgilerin eksik bırakıldığını fark ediyor. Kimse mevcut satırları kaybetmek istemez; sadece yeni bilgileri onların yanına kaydetmek isterler.

ALTER komutu tam olarak bu durumu kapsar. Bir alanın veri türünü metinden sayıya değiştirebilir, bir alanı yeniden adlandırabilir veya bir tabloya tamamen yeni bir sütun ekleyebilir; tüm bunlar olurken tabloda zaten depolanmış olan veriler olduğu gibi kalır.

Komutun amacı belirlendikten sonraki adım, onu gerçekleştirecek söz dizimidir.

MySQL ALTER Sözdizimi

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 `column_name` adında ve `data_type` veri türünde yeni bir sütun ekleniyor.

Diyelim ki Myflix çevrimiçi faturalama ve ödeme sistemini kullanıma sundu. Bunu desteklemek için, üye tablosuna kredi kartı numarası için bir alan eklenmesi gerekiyor. Herhangi bir değişiklik yapmadan önce, tablonun mevcut yapısına bakmakta fayda var. Aşağıda gösterilen kod bunu yapıyor.

SHOW COLUMNS FROM `members`;
Alan Menşei Null anahtar Varsayılan Extra
Üye numarası int (11) YOK HAYIR PRI NULL otomatik artış
tam_adlar varchar(350) YOK HAYIR NULL
cinsiyet varchar(6) EVET NULL
doğum_tarihi tarih EVET NULL
fiziksel adres varchar(255) EVET NULL
posta_adresi varchar(255) EVET NULL
iletişim_numarası varchar(75) EVET NULL
E-posta varchar(255) EVET NULL

💡 int(11) ile ilgili not: Parantez içindeki sayı yalnızca ekran genişliğini belirtir. MySQL 8.0.17 sürümünde tamsayı türleri için bu özellik kullanımdan kaldırıldı, bu nedenle modern bir sunucu bu sütunu basitçe şu şekilde raporluyor: intDepolama boyutu değişmedi.

Aşağıda gösterilen kod, yeni alanı üyeler tablosuna ekler.

ALTER TABLE `members` ADD COLUMN `credit_card_number` VARCHAR(25);

Bu komut dosyasını myflixdb veritabanına uyguladığınızda, members tablosuna VARCHAR veri tipine sahip credit_card_number adında bir sütun eklenir. SHOW COLUMNS komut dosyasını tekrar çalıştırdığınızda aşağıdaki sonuç elde edilir.

Alan Menşei Null anahtar Varsayılan Extra
Üye numarası int (11) YOK HAYIR PRI NULL otomatik artış
tam_adlar varchar(350) YOK HAYIR NULL
cinsiyet varchar(6) EVET NULL
doğum_tarihi tarih EVET NULL
fiziksel adres varchar(255) EVET NULL
posta_adresi varchar(255) EVET NULL
iletişim_numarası varchar(75) EVET NULL
E-posta varchar(255) EVET NULL
Kredi Kartı Numarası varchar(25) EVET NULL

Vurgulanan satır, credit_card_number alanının üyeler tablosuna eklendiğini ve diğer sütunlarda zaten bulunan verilerin bu ekleme işleminden etkilenmediğini doğrular.

Bir sütun eklemek hikayenin sadece yarısıdır. Bir şemanın artık ihtiyaç duymadığı nesneleri de atması gerekir; bu da DROP komutunun görevidir.

DROP komutu nedir? MySQL?

DROP komutu bir nesneyi kalıcı olarak siler. Bu komut, nesneleri silmek için kullanılır.

  1. Veritabanını silin MySQL sunucu.
  2. Veritabanından tablo veya sütun gibi bir nesneyi silmek.

⚠️Uyarı: DROP işlemi geri alınamaz. Yedekleme yapılmadan ne nesne ne de içindeki satırlar kurtarılamaz, bu nedenle önce hedef üzerinde bir SELECT sorgusu çalıştırın ve yedeklemenin yapıldığını doğrulayın.

Damlaping Sütun

Yukarıdaki ALTER örneğinde, üyeler tablosuna credit_card_number adında bir sütun eklendi. Çevrimiçi faturalama özelliğinin ertelendiğini ve bu sütunun tekrar kaldırılması gerektiğini varsayalım. Aşağıdaki komut dosyası bunu yapar.

ALTER TABLE `members` DROP COLUMN `credit_card_number`;

Komut dosyasını çalıştırmak, üyeler tablosundan `credit_card_number` sütununu siler. Sütunları tekrar listelemek sonucu doğrular.

SHOW COLUMNS FROM `members`;
Alan Menşei Null anahtar Varsayılan Extra
Üye numarası int (11) YOK HAYIR PRI NULL otomatik artış
tam_adlar varchar(350) YOK HAYIR NULL
cinsiyet varchar(6) EVET NULL
doğum_tarihi tarih EVET NULL
fiziksel adres varchar(255) EVET NULL
posta_adresi varchar(255) EVET NULL
iletişim_numarası varchar(75) EVET NULL
E-posta varchar(255) EVET NULL

Kredi kartı numarası alan listesinden kayboldu.

BIRAKMA TABLOSU

Bir veritabanından bir tablonun tamamını silmenin sözdizimi aşağıdaki gibidir.

DROP TABLE `sample_table`;

Bu ifade gerçek bir nesneye uygulandığında şöyle görünür.

DROP TABLE `categories_archive`;

Bu komutu çalıştırmak, `categories_archive` adlı tabloyu ve içindeki tüm satırları veritabanından siler.

VERİTABANI BIRAK

Aynı anahtar kelime tüm şemayı siler. IF EXISTS eklemek hatayı bastırır. MySQL Hedef zaten ortadan kalktığında hata verir; bu, birden fazla kez çalışan komut dosyaları içinde kullanışlıdır.

DROP DATABASE IF EXISTS `myflixdb_backup`;

Bir nesneyi silmek geri alınamaz. Nesnenin kendisi kalmalı ve yalnızca adı yanlışsa, RENAME komutu doğru araçtır.

RENAME komutu nedir? MySQL?

RENAME komutu, tablo veya sütun gibi mevcut bir veritabanı nesnesinin adını yeni bir adla değiştirir. Bir tablonun adını değiştirmek, tablonun içerdiği verilerin kaybolmasına neden olmaz.

Komutun temel sözdizimi aşağıdaki gibidir.

RENAME TABLE `current_table_name` TO `new_table_name`;

Film kiralama tablosunun adını movie_rentals olarak değiştirmek için aşağıdaki komut dosyası kullanılır.

RENAME TABLE `movierentals` TO `movie_rentals`;

Bu komutu çalıştırmak, `movierentals` tablosunun adını `movie_rentals` olarak değiştirir. Yeniden adlandırma yalnızca bir etiket değişikliği olduğundan, aynı ifadenin tersini çalıştırmak orijinal adı geri yükler.

RENAME TABLE `movie_rentals` TO `movierentals`;

RENAME TABLE komutu, bir tablonun adını değiştirir. Bir tablonun adını değiştirmek... sütunVe bu içeriği değiştirmek, CHANGE anahtar kelimesinin işidir.

DEĞİŞTİR Anahtar Kelime

CHANGE anahtar kelimesi size şunları sağlar:

  1. Bir sütunun adını değiştirin.
  2. Sütun veri türünü değiştirin
  3. Sütun kısıtlamalarını değiştirin

Bir örnek ele alalım. Aşağıdaki kodda da doğrulandığı gibi, members tablosundaki full_names alanı varchar veri tipinde ve 350 genişliğindedir.

SHOW COLUMNS FROM `members`;
Alan Menşei Null anahtar Varsayılan Extra
Üye numarası int (11) YOK HAYIR PRI NULL otomatik artış
tam_adlar varchar(350) YOK HAYIR NULL
cinsiyet varchar(6) EVET NULL
doğum_tarihi tarih EVET NULL
fiziksel adres varchar(255) EVET NULL
posta_adresi varchar(255) EVET NULL
iletişim_numarası varchar(75) EVET NULL
E-posta varchar(255) EVET NULL

Diyelim ki gereksinim şu:

  1. Alan adını “full_names”ten “fullname”e değiştirin.
  2. Genişliği 250 olan char veri türüne dönüştürün.
  3. NOT NULL kısıtlaması ekleme

Her üç değişiklik de tek bir CHANGE ifadesiyle gerçekleştirilir.

ALTER TABLE `members` CHANGE COLUMN `full_names` `fullname` char(250) NOT NULL;

Bu komutu myflixdb üzerinde çalıştırdıktan sonra SHOW COLUMNS komutunu çalıştırdığımızda aşağıdaki sonuç elde edilir.

Alan Menşei Null anahtar Varsayılan Extra
Üye numarası int (11) YOK HAYIR PRI NULL otomatik artış
Ad Soyad kömür (250) YOK HAYIR NULL
cinsiyet varchar(6) EVET NULL
doğum_tarihi tarih EVET NULL
fiziksel adres varchar(255) EVET NULL
posta_adresi varchar(255) EVET NULL
iletişim_numarası varchar(75) EVET NULL
E-posta varchar(255) EVET NULL

Sütun artık fullname olarak adlandırılıyor, char(250) karakter içeriyor ve NULL değerlerini reddediyor.

Anahtar Kelimeyi Değiştir

MODIFY anahtar kelimesi size şunları yapmanıza olanak tanır:

  1. Sütun veri türünü değiştirin.
  2. Sütun kısıtlamalarını değiştirin

Yukarıdaki DEĞİŞTİRME örneğinde, yeniden adlandırma işlemi amacın yalnızca bir parçası olmasına rağmen, alan adının iki kez girilmesi gerekiyordu. CHANGE ifadesinden alan adını çıkarmak hataya neden olur. Yalnızca veri türü ve kısıtlamaların ayarlanması gerektiğinde ve adın olduğu gibi kalması istendiğinde, MODIFY komutu sütun adını tek bir kez belirterek işlemi gerçekleştirir.

Aşağıdaki kod, "tam ad" alanının genişliğini 250'den 50'ye değiştirir.

ALTER TABLE `members` MODIFY `fullname` char(50) NOT NULL;

Bu komutu myflixdb üzerinde çalıştırdıktan sonra SHOW COLUMNS komutunu çalıştırdığınızda aşağıdaki sonuç elde edilir.

Alan Menşei Null anahtar Varsayılan Extra
Üye numarası int (11) YOK HAYIR PRI NULL otomatik artış
Ad Soyad kömür (50) YOK HAYIR NULL
cinsiyet varchar(6) EVET NULL
doğum_tarihi tarih EVET NULL
fiziksel adres varchar(255) EVET NULL
posta_adresi varchar(255) EVET NULL
iletişim_numarası varchar(75) EVET NULL
E-posta varchar(255) EVET NULL

⚠️Uyarı: Bir sütunu daraltmak, artık sığmayan verileri kırpar. 50 karakterden uzun herhangi bir ad bu ifadeyle kısaltılır, bu nedenle mevcut en uzun değeri kontrol edin. SEÇİN Bir alanı küçültmeden önce sorgu.

DEĞİŞTİRME, DÜZENLEME VE SÜTUNU YENİDEN ADLANDIRMA

Bu üç anahtar kelime birbiriyle örtüşüyor ve yanlış olanı seçmek bu alandaki hataların en yaygın kaynağıdır. Aşağıdaki tabloda bunlar yan yana gösterilmiştir.

Anahtar kelime Sütunun adını değiştirir. Türü ve kısıtlamaları değiştirir. Eski isim gerekli Tipik kullanım
DEĞİŞİM Evet Evet Evet, ayrıca yeni isim de. Tek bir ifadeyle yeniden adlandırın ve yeniden tanımlayın.
DEĞİŞTİRİN Yok hayır Evet Bir kez verilen isim Bir sütunu genişletin, daraltın veya yeniden yazın.
SÜTUNU YENİDEN ADLANDIR Evet Yok hayır Evet, ayrıca yeni isim de. Yalnızca yeniden adlandır, şuradan MySQL 8.0 ileri

MySQL 8.0 sürümü, en basit durum için dördüncü bir seçenek ekledi: hiçbir yeniden tanımlama yapılmadan yeniden adlandırma.

ALTER TABLE `members` RENAME COLUMN `fullname` TO `full_name`;

Tür ve isim belirlendi. Geriye kalan soru, yeni sütunun tabloda nerede yer alacağıdır ve bu da AFTER anahtar kelimesiyle kontrol edilir.

SONRA Anahtar Kelime

Varsayılan olarak, ALTER TABLE komutuyla eklenen bir sütun tablonun sonuna eklenir. Bunun yerine belirli bir konuma yerleştirmek için, ALTER komutu AFTER anahtar kelimesiyle birlikte kullanılır.

Aşağıdaki kod, üyeler tablosunda "date_of_birth" alanının hemen ardından "date_of_registration" alanını ekler.

ALTER TABLE `members` ADD `date_of_registration` date NULL AFTER `date_of_birth`;

Bu komutu myflixdb üzerinde çalıştırdıktan sonra SHOW COLUMNS komutunu çalıştırdığınızda aşağıdaki sonuç elde edilir.

Alan Menşei Null anahtar Varsayılan Extra
Üye numarası int (11) YOK HAYIR PRI NULL otomatik artış
Ad Soyad kömür (50) YOK HAYIR NULL
cinsiyet varchar(6) EVET NULL
doğum_tarihi tarih EVET NULL
kayıt_tarihi tarih EVET NULL
fiziksel adres varchar(255) EVET NULL
posta_adresi varchar(255) EVET NULL
iletişim_numarası varchar(75) EVET NULL
E-posta varchar(255) EVET NULL

Vurgulanan satır, doğum tarihi sütunundan sonra eklenen sütundur. FIRST anahtar kelimesi de aynı şekilde çalışır ve yeni sütunu tablonun en başına taşır.

SSS

Hayır. ALTER, DROP ve RENAME gibi DDL ifadeleri, değişiklikleri örtük olarak kaydeder. MySQLDolayısıyla açık bir işlem bunları geri alamaz. Geri dönmenin tek yolu yedeklemeden geri yüklemektir.

Değişikliğe bağlı. Birçok InnoDB değişikliği çevrimiçi çalışır ve eş zamanlı okuma ve yazma işlemlerine izin verirken, diğerleri tüm tabloyu kopyalar ve yazma işlemlerini engeller. Kabul edeceğiniz şeyleri belirtmek için ALGORITHM ve LOCK maddelerini ekleyin.

DROP komutu nesnenin kendisini siler. TRUNCATE komutu ise tabloyu boşaltır ancak yapısını korur. SİL Seçilen satırları kaldırır ve WHERE koşuluyla filtrelenebilir.

Genellikle evet. İstemcilere entegre edilmiş yapay zeka asistanları, örneğin... MySQL Tezgâh “date_of_birth sütunundan sonra boş bırakılabilir bir tarih sütunu ekle” gibi bir isteği geçerli bir sözdizimine dönüştürün. RevOluşturulan ifadeyi çalıştırmadan önce canlı şemaya göre inceleyin.

Kısmen doğru. Yapay zeka inceleme araçları, sorguda hala adı geçen bir sütun veya verileri kırpan daraltılmış bir tür gibi bariz riskleri işaretler. Ancak her çağrı yapanı göremezler, bu nedenle bir test çalıştırması yine de gereklidir.

Bu yazıyı şu şekilde özetleyin: