SQL SQL

SQL, yazılımın bir veri tabanına soru sormak için kullandığı dildir; bu yüzden ekranda okuduğunuz her satış raporu aslında sizin adınıza sorulmuş bir SQL sorusudur.

Şu adla da bilinir yapılandırılmış sorgu dili SQL sorguları veri tabanı dili

Tanım

SQL, bir veri tabanına soru sormak için kullanılan dildir; siz soruyu yazarsınız, cevabı bulmak veri tabanına kalır. Dükkân sahibi bunu hiç yazmaz ama ekranda gördüğü her satış raporu, aslında yazılımın onun adına sorduğu bir SQL sorusudur.

SQL'in alışılmadık yanı, istediğiniz cevabı tarif etmeniz, ona giden adımları değil. Geçen ay en çok harcayan on müşteriyi istersiniz ama satırların nasıl taranacağını hiç anlatmazsınız. Onu veri tabanı kendisi çözer, bu yüzden aynı birkaç kelime on kayıtta da on milyon kayıtta da işe yarar.

İşletme sahiplerini asıl şaşırtan kısım şudur. Aynı soru yarım saniyede de dönebilir on dakikada da, üstelik daha güçlü bir sunucu bunu nadiren çözer. Çoğu zaman eksik olan bir indekstir; yani veri tabanının yanda tuttuğu, bütün satırları okumak yerine doğrudan doğru satıra atlamasını sağlayan küçük bir liste. Eklemesi birkaç dakika sürer, bu yüzden Linkysoft'a bir raporun neden yavaşladığı sorulduğunda cevap çoğunlukla eksik bir indekstir.

SQL 1970'lerden beri kullanılıyor ve neredeyse hiç değişmedi. Bu, yazılımda ender görülür ve sizin lehinizedir, çünkü MySQL üzerinde öğrenen biri PostgreSQL ile kurulmuş bir sistemin sorgularını da okuyabilir. Ayrıca verilerinizin kilitli kalmadığı anlamına gelir, bu yüzden imzadan önce tedarikçinizden kendi kayıtlarınızın tam bir dışa aktarımını isteyin. Cevap dolaşmaya başlıyorsa bunu erken bilmekte fayda vardır.

Adını koymaya değer tek bir tehlike var, çünkü bir site ziyaretçinin yazdığını olduğu gibi SQL sorusunun içine koyarsa, bir yabancı sorunun kendisini değiştirebilir. Buna SQL enjeksiyonu denir ve bir işletmenin müşteri verilerini kaybetmesinin hâlâ en yaygın yollarından biridir. Bunun önüne satın alınan bir ürünle değil, kodun yazılış biçimiyle geçilir. Bu yüzden devraldığımız her web uygulamasında bunu kontrol ediyoruz ve bu, Linkysoft'un güvenlik incelemesinin sabit bir maddesidir. Storek içinde okuduğunuz raporlar da birinin bir kez yazdığı SQL sorgularıdır, artık kimsenin onları düşünmesi gerekmez.

SQL hakkında sorular

İşimi yürütmek için SQL öğrenmem gerekir mi?
Hayır. Çalışanlarınız onu hiç görmez. Yine de kelimeyi bilmek işe yarar, çünkü yeni bir rapor istediğinizde biri onu üretmek için SQL yazar ve bu genelde küçük bir iştir.
SQL ile veri tabanı aynı şey midir?
Hayır. SQL, soruları sorduğunuz dildir. MySQL, PostgreSQL ve SQL Server ise bu dili anlayan veri tabanlarıdır. Tek dil, birkaç ürün.
SQL enjeksiyonu nedir, endişelenmeli miyim?
Bir yabancının forma yazdığı şeyin, sitenizin veri tabanına sorduğu soruyu değiştirmesidir. Düzgün yazılmış kod bunu imkânsız kılar. Satın alınan bir ürün değil, bir kod yazma alışkanlığıdır.
Tedarikçi değiştirirsem verilerimi yanımda götürebilir miyim?
Genellikle evet, çünkü bir SQL veri tabanı temiz biçimde dışa aktarılır. Örnek bir aktarımı imzadan önce yazılı olarak isteyin, ilişki bozulduktan sonra değil.

Bunun projenize nasıl uyduğundan hâlâ emin değil misiniz?

Ne inşa ettiğinizi bize anlatın, size sade bir dille yanıt verelim.