- Konu sahibi
- #1
Yeni bir sütun eklemek için tablonun
Örneğin
Komut başarıyla çalışırsa tablo yapısına
Sütunun veri tipi, içine hangi tür bilgilerin yazılacağını belirler. Örneğin:
Burada sütun eklendiğinde mevcut siparişlerin teslim tarihi otomatik olarak bilinmez. Bu nedenle sütunun boş kalmasına izin verilmeli veya uygun bir varsayılan değer belirlenmelidir.
Yeni sütunun boş kalmasını istemiyorsanız
Bu komut, yeni sütunu zorunlu yapar ve yeni eklenen kayıtlarda değer belirtilmezse
Komutu çalıştırdıktan sonra yalnızca hata alınmaması yeterli değildir; tablo yapısını da kontrol edin. Kullanılan veritabanı sistemine göre aşağıdaki sorgulardan uygun olanını kullanabilirsiniz:
Sonuçta
Temel
Bu örneklerdeki ortak fikir aynıdır: tabloyu değiştirmek, sütun adını vermek ve veri tipini belirtmek. Ancak
“Tablo bulunamadı” hatası genellikle yanlış veritabanına bağlı olduğunuzu, tablo adını yanlış yazdığınızı veya tablonun farklı bir şema altında bulunduğunu gösterir. Önce aktif veritabanını ve tablo adını kontrol edin.
“Aynı adlı sütun zaten var” hatası, eklemek istediğiniz sütunun daha önce oluşturulduğunu gösterir. Bu durumda aynı
“NOT NULL ihlali” veya varsayılan değerle ilgili bir hata alırsanız, mevcut satırların yeni sütun için hangi değeri taşıyacağını belirleyin. Uygulanabilir yaklaşım çoğu durumda sütunu önce boş değer kabul edecek şekilde eklemek, mevcut kayıtları
Üretim veritabanında komutu çalıştırmadan önce tablo adını, sütun adını, veri tipini ve mevcut kayıtların nasıl etkileneceğini kontrol edin. Komutun ardından tablo yapısını inceleyin; sütun oluşturulduktan sonra gerçek verileri eklemek için ayrı bir
ALTER TABLE komutunu kullanın. Temel sözdizimi şöyledir:
SQL:
ALTER TABLE tablo_adi
ADD COLUMN sutun_adi veri_tipi;
Örneğin
kullanicilar tablosuna metin türünde telefon sütunu eklemek için:
SQL:
ALTER TABLE kullanicilar
ADD COLUMN telefon VARCHAR(20);
Komut başarıyla çalışırsa tablo yapısına
telefon adlı ve en fazla 20 karakter saklayabilen yeni bir sütun eklenir. Bu işlem mevcut satırları silmez; ancak yeni sütun için ayrıca bir varsayılan değer veya NOT NULL kuralı tanımlamadıysanız mevcut satırlarda değer boş olabilir.Sütun eklemeden önce veri tipini belirleyin
Sütunun veri tipi, içine hangi tür bilgilerin yazılacağını belirler. Örneğin:
- Kısa veya sınırlı uzunluktaki metinler için
VARCHAR(100) - Uzun açıklamalar için
TEXT - Tam sayılar için
INTEGERveyaINT - Ondalıklı sayılar için
DECIMAL(10,2) - Tarih için
DATE - Tarih ve saat için
TIMESTAMPveya bazı sistemlerdeDATETIME - Doğru/yanlış değerleri için veritabanına göre
BOOLEANveyaBIT
SQL:
ALTER TABLE siparisler
ADD COLUMN teslim_tarihi DATE;
Burada sütun eklendiğinde mevcut siparişlerin teslim tarihi otomatik olarak bilinmez. Bu nedenle sütunun boş kalmasına izin verilmeli veya uygun bir varsayılan değer belirlenmelidir.
Varsayılan değer ve zorunlu sütun kullanımı
Yeni sütunun boş kalmasını istemiyorsanız
DEFAULT ve NOT NULL kısıtlarını kullanabilirsiniz. Örneğin yeni kayıtların durumunu otomatik olarak aktif yapmak için:
SQL:
ALTER TABLE kullanicilar
ADD COLUMN durum VARCHAR(20) NOT NULL DEFAULT 'aktif';
Bu komut, yeni sütunu zorunlu yapar ve yeni eklenen kayıtlarda değer belirtilmezse
aktif değerini kullanır. Mevcut kayıtlar için veritabanının davranışı kullanılan sisteme ve sürüme göre değişebileceğinden, üretim tablosunda çalıştırmadan önce yedek veya test veritabanı üzerinde denemek güvenlidir.Sütun adının tabloya eklenip eklenmediğini kontrol edin
Komutu çalıştırdıktan sonra yalnızca hata alınmaması yeterli değildir; tablo yapısını da kontrol edin. Kullanılan veritabanı sistemine göre aşağıdaki sorgulardan uygun olanını kullanabilirsiniz:
SQL:
-- MySQL veya MariaDB
DESCRIBE kullanicilar;
SQL:
-- PostgreSQL
SELECT column_name, data_type
FROM information_schema.columns
WHERE table_name = 'kullanicilar';
SQL:
-- SQL Server
SELECT COLUMN_NAME, DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'kullanicilar';
Sonuçta
telefon, durum veya eklediğiniz sütun adı görünüyorsa değişiklik tablo yapısına uygulanmıştır. Bu, sütunun doğru verilerle doldurulduğunu göstermez; yalnızca sütunun oluşturulduğunu doğrular. Verileri eklemek veya mevcut satırları güncellemek için ayrıca INSERT ya da UPDATE komutları gerekir.Veritabanı sistemine göre sözdizimi farkları
Temel
ALTER TABLE ... ADD yapısı yaygın olsa da sütun ekleme sözdiziminde veritabanları arasında küçük farklar bulunabilir.| Veritabanı | Örnek |
|---|---|
| MySQL / MariaDB | ALTER TABLE kullanicilar ADD COLUMN telefon VARCHAR(20); |
| PostgreSQL | ALTER TABLE kullanicilar ADD COLUMN telefon VARCHAR(20); |
| SQL Server | ALTER TABLE kullanicilar ADD telefon VARCHAR(20); |
| SQLite | ALTER TABLE kullanicilar ADD COLUMN telefon TEXT; |
IF NOT EXISTS, sütunun belirli bir konuma eklenmesi, varsayılan değerlerin uygulanması ve tablo kısıtlarının değiştirilmesi gibi ayrıntılar veritabanı ürününe göre farklılaşabilir. Kullandığınız sistem desteklemiyorsa başka bir sisteme ait seçenekleri doğrudan kopyalamayın.Sütun ekleme hatalarının anlamı
“Tablo bulunamadı” hatası genellikle yanlış veritabanına bağlı olduğunuzu, tablo adını yanlış yazdığınızı veya tablonun farklı bir şema altında bulunduğunu gösterir. Önce aktif veritabanını ve tablo adını kontrol edin.
“Aynı adlı sütun zaten var” hatası, eklemek istediğiniz sütunun daha önce oluşturulduğunu gösterir. Bu durumda aynı
ADD COLUMN komutunu tekrar çalıştırmayın; önce mevcut sütunun veri tipini ve kısıtlarını inceleyin. Amacınız veri tipini değiştirmekse bu işlem sütun eklemekten farklı olarak ALTER COLUMN veya veritabanına özgü başka bir komut gerektirir.“NOT NULL ihlali” veya varsayılan değerle ilgili bir hata alırsanız, mevcut satırların yeni sütun için hangi değeri taşıyacağını belirleyin. Uygulanabilir yaklaşım çoğu durumda sütunu önce boş değer kabul edecek şekilde eklemek, mevcut kayıtları
UPDATE ile doldurmak ve ardından gerekiyorsa sütunu NOT NULL yapmaktır. Böylece eski kayıtlar için belirsiz bir zorunlu değer dayatılmadan geçiş tamamlanır.Üretim veritabanında komutu çalıştırmadan önce tablo adını, sütun adını, veri tipini ve mevcut kayıtların nasıl etkileneceğini kontrol edin. Komutun ardından tablo yapısını inceleyin; sütun oluşturulduktan sonra gerçek verileri eklemek için ayrı bir
INSERT veya UPDATE işlemi planlayın.