Merhaba Webkolog takipçileri, bugün sizlere MySQL kullanırken sıkça karşılaşılan ama gözden kaçabildiği için zaman zaman baş ağrıtan rezerve edilmiş anahtar kelimelerden ve veritabanı tablolarınızda alan ismi belirlerken dikkat etmeniz gereken noktalardan bahsetmek istiyorum.

Veritabanı mimarisi tasarlarken tablo ve sütun adlarını belirlemek ilk bakışta çok basit bir iş gibi görünebilir. Fakat MySQL'in kendi iç mekanizmasında veya sorgu komutlarında özel bir anlam taşıyan Reserved Words (Rezerve Kelimeler) ile çakışan isimler tercih ettiğinizde beklenmedik SQL hatalarıyla karşılaşabilirsiniz.

MySQL'de Rezerve Kelime (Reserved Word) Nedir?

MySQL, sorguları işlerken belirli komutları ve veri tiplerini tanımak için bazı kelimeleri kendine ayırmıştır. Örneğin SELECT, WHERE, JOIN, GROUP, ORDER veya DESC gibi ifadeler MySQL motoru için özel anlam taşır. Eğer tablonuzda bir sütunun adını doğrudan bu kelimelerden biri yaparsanız, veritabanı motoru bunu bir kolon adı mı yoksa bir SQL komutu mu olduğunu ayırt etmekte zorlanır ve syntax hatası döndürür.

Hangi Kelimeler Sütun İsmi Olarak Doğrudan Kullanılamaz?

Özellikle yeni başlayan arkadaşların sıklıkla düştüğü hatalardan biri, tarih tutmak için DATE, sıralama için ORDER, açıklama veya durum için STATUS, TYPE ya da USER gibi yaygın terimleri yalın halde kolon adı yapmaktır. Bu tür kelimelerin büyük bir kısmı rezerve listesindedir ve korumasız yazıldıklarında sorgunun kırılmasına neden olurlar.

Rezerve Kelime Kullanmak Zorunda Kalırsanız Ne Yapmalısınız?

Şahsen projelerimde standartlara uymak adına rezerve kelimeleri sütun adı olarak kullanmaktan her zaman kaçınırım. Örneğin sadece date yazmak yerine created_at veya kayit_tarihi gibi ifade gücü yüksek ve çakışmasız isimler seçmeyi tercih ederim. Ancak mecburen böyle bir kelime kullanmanız gerekiyorsa, çözüm MySQL'in backtick dediğimiz eğik tırnak (`) işaretleridir.

Sorgularınızda sütun adını `select` veya `order` şeklinde backtick içerisine alırsanız, MySQL bunun bir SQL komutu değil, bir nesne veya sütun adı olduğunu anlar ve hatasız şekilde çalışır.

Temiz ve Güvenli Veritabanı Tasarımı İçin Tavsiyelerim

Kendi yazılım süreçlerimde uyguladığım ve sizlere de önereceğim birkaç pratik kural var:

1. İsimlendirme Standartı Oluşturun: Sütun isimlerinizde ön ek veya açıklayıcı ekler kullanın (Örn: user_type, order_status).

2. Küçük Harf ve Alt Çizgi Tercih Edin: Karakter karmaşasının önüne geçmek için snake_case yapısını benimseyin.

3. Çakışmalardan Kaçının: Projeye başlamak için veritabanı şemasını çizerken MySQL dokümantasyonundaki güncel rezerve kelimeler listesini mutlaka gözden geçirin.

Veritabanınızı kurarken bu küçük detaylara dikkat etmek, ilerleyen zamanlarda spagetti sorgularla veya anlamsız hatalarla boğuşmanızın önüne geçecektir.

Hepinize sağlıklı, mutlu ve huzurlu günler dilerim!

Webkolog'u takipte kalın!