Arkadaşlar SQL sorguları bilindikten sonra bütün dillerde ve bütün SQL’lerde işlemler yapılabilir mi? Yani asıl sormak istediğim SQL sorguları bütün SQL’lerde (MySQL, SQLite3…) aynı mı?
Hemen hemen aynı. Ben daha önce MS SQL kullanmıştım, uzun zamandır MySQL kullanıyorum. Teorik olarak SQL dilinde sorgulama, ekleme, güncelleme, silme vb. işlemleri öğrendikten sonra bahsettiğiniz Veri Tabanı Sistemleri ile uygulama yapabilirsiniz. Hatta windows üzerinde Office uygulamalarından access veri tabanı ile de SQL kullanabilirsiniz.
Ayni degil, benzer.
Son baktigimda Postgres ve Oracle SQL standardina uyumda acik ara ondeydi (aralarinda da Postgtes). MySQL ilerlemekteydi ama comment baslangici, isim belirteci, string belirteci ve birlestirme operatoru gibi temel seyleri farkli secmenin bedelini oduyordu. Microsoft ise standardi sadece bir oneri olarak aliyordu.
Durumun cok degistigini zannetmiyorum.
Temel anlamda SQL cümlecikleri (sorgu, güncelleme, kayıt ekleme ve kayıt silme işlemleri) aslında standarttır. Ufak farkları yaratan ilgili veritabanının syntax yapısıdır. Ancak olay daha büyük ölçekli Oracle gibi veri tabanları söz konusu olduğunda transactionlar vs yönetilmek adına kullanılan PL/SQL başlı başına bir dil haline gelir.
Netice olarak SQL DML (Data Manuplation Language) sözdizimi tüm veritabanı sistemleri için ortaktır.
Standart olan sadece sorgu dili degil:
PL/SQL Oracle’in bir eklentisi (kendisi de SQL/PSM standardina uyuyormus ama ikisiyle de deneyimim yok.) Postgres’te Python, Java filan da kullanilabiliyor.
Dilin standart olmasi malesef yukaridaki cevapta yazdigim farkliliklari engellemiyor.
Bu arada farkliliklar sentaksin yapisindan¹ ziyade elementlerinde gibi geliyor bana ama tabi kisisel fikir bu.
1: Sentaks zaten yapi demek ama yukarida kullanilan "syntax yapisi"ni kelime sirasi, parse agaci yapisi olarak anladim. “Elementleri” dedigim kelimelerin kurallari, agacin elementleri.
Açıkçası bunu söyleyerek polemik yaratmak istemiyorum ama ben 30 seneyi aşkın zamandır bu sektördeyim. Yıllardır “syntax” teriminin Türkçe karşılığı “söz dizimi” olarak kullanıldı. Dahası sıkça karşılaştığımız Syntax Error ü de yapı hatası diye yorumlayan bir yer görmedim literatürde. Bu bağlamda “söz dizimi yapısı” o dilin linguistik özelliklerini ifade etmektedir. Mesela Python Dili için bunu belirleyen PEP8 standardı var. İncelemenizi öneririm.
Yaratalim; belki bir seyler ogreniriz. Ben de bir suredir bu alanla ilgileniyorum.
“Sentaks yapi demek” derken “sentaks” ↔ “yapi” demek istemedim; sentaks–semantik ikilemi baglaminda konustugunuz icin sentaksin forma, semantigin de icerige baktigini vurgulamak istedim.
Yoksa populer SQL dillerinin gunluk kullanimdaki soz dizimleri cogu yerde ayni:
SELECT * FROM "table"
SELECT * FROM `table`
SELECT * FROM [table]
Varsayimda bulunup karisikliga yol acmisim, ozur dilerim. Butun bunlar “sentaks yapisi” kelime tamlamasina anlam vermeye calisirken oldu. Sahi nedir sentaks yapisi?
Ben notta yazdigim sekilde anlayip ona gore konustum. (Parse agaci yapisi, formal gramer kurallari benzesimi, leksikal farkliliklar.)
30 senenin bir noktasinda her seyi bildiginize karar verip ogrenmeyi birakmadiniz insallah. Daha ogrenecek cok seyiniz var.
PEP-8 Python icin bicim/tarz rehberi. Sentaksi surada.