SQL (Structured Query Language) Nedir?
SQL (Structured Query Language), bilgisayar ortamında bulunan bilgilerin tablolar halinde depolanmasını, sorgulanmasını, işlenmesini sağlayan ve ilişkisel veri modelini kullanan bir DSL bilgisayar dilidir. Türkçe’si Yapılandırılmış Sorgu Dili olan SQL, 1970’li yıllarda ilişkisel veri tabanı modelinin tanıtılmasından sonra IBM’de geliştirilmiştir.
SQL, depolanan verilerin çağrılması, veriler üzerinde işlem yapılması amacıyla tasarlanmıştır.
SQL Programlama Dili midir?
Araştırmalarım neticesinde bazı kaynakların SQL’in bir programlama dili olduğunu ancak birkaç kaynağın da aksini iddia ederek SQL’in bilinenin aksine bir programlama dili olmadığını vurguladığını gördüm. Konuyla ilgili Reddit’te açılan bir tartışmada da genel olarak “SQL bir programlama dilidir.” görüşü hakimdi. Forumda paylaşılan görüşler, SQL’in aslında bir programlama dili olduğu ancak pek çok yazılımcı tarafından sadece sorgu (query) amacıyla kullanılmasından ötürü bir programlama dili olarak görülmediğini göstermekteydi. [1]
Başka bir kaynak, SQL’in Python, C++, JavaScript gibi dillerin aksine uygulama tasarlanmasında tek başına kullanılmayacağından General Purpose Language (GPL) bir dil olmadığını söylemektedir. [2]
Özetle SQL, C, Java ve Python gibi General Purpose Language (GPL) bir dil değil, Domain-Specific Language (DSL) olarak sınıflandırılmış bir bilgisayar dilidir. [3] SQL’in programlama dili olduğunu söylemek HTML gibi diğer DSL dillerinin de birer programlama dili olduğunu kabul etmek anlamına geleceğinden SQL’e programlama dili demek doğru bir tanım olmayacaktır.
SQL’in Tarihi
SQL’in ortaya çıkmasından önce 1970’li yılların başlarında IBM’de Edgar F. Codd tarafından ilişkisel veri tabanı modeli (relational database model) bulunmuştur. [4] Bu gelişme sonrasında IBM’de bulunan Donald D. Chamberlin ve Raymond F. Boyce, ilişkisel veri tabanı modelini Codd’dan öğrenmişlerdir. Bu iki bilgisayar bilimcinin ilk girişimi SQUARE (Specifying Queries in A Relational Environment) isminde bir dildi. SQUARE dili alt ve üst simgelerin kullanımına ihtiyaç duyduğundan revize edilmesi gerekiyordu. 1973 yılında çalışmalarını San Jose Research Laboratory’de sürdürerek SEQUEL ismini verdikleri yeni bir dilin hazırlanmasını sağladılar.
SEQUEL, o zamanlarda bir ticari markanın ismini de taşıdığından isim değişikliğine ihtiyaç duyulmuştu. Böylelikle SEQUEL, ünlü harflerden arındırılarak bugünkü ismine, SQL (Structured Query Language) çevrildi.
Test aşamalarından sonra SQL’in kullanışlı ve pratik olduğu anlaşıldı. Zaman içinde çeşitli hizmet ve ürünler için de kullanılmaya başladı. Ek olarak SQL, 1986 yılında ANSI (American National Standards Institute) ve 1987 yılında ISO (International Organization for Standardization) tarafından standart haline getirildi.
SQL Ne İşe Yarar?
SQL, verilerin işlenmesini, depolanmasını, sorgulandığında verilere erişimi mümkün kılar. Kısacası SQL, veri tabanıyla iletişim kurulmasını sağlar. SQL ile temelde şunlar yapılabilir:
- Veri tabanları oluşturmak, silmek. (CREATE, DROP)
- Veri tabanındaki verilere müdahale etmek. (INSERT, DELETE, UPDATE)
- Verileri sorgulamak, istenilen özelliklerdeki verilere erişmek. (SELECT)
- Depolanmış prosedürler oluşturarak SQL kodlarının tekrar tekrar kullanımını sağlamak. (CREATE PROCEDURE)
- Geçmiş kayıtları tutmak. (Logs)
- Veriler arasında ilişki kurmak. (Relational Database)
- Yetkilendirme yapmak.
- İlişkisel tabloları birbirlerine bağlamak. (JOIN)
- Filtre ve sıralamalara göre veri görüntüleyiciler oluşturmak. (VIEW)
2023 yılı itibariyle SQL’in yapabilecekleri pek tabi bu maddelerden fazladır. Ancak konuyu genişletmemek adına bu kadarından bahsetmek yeterli olacaktır diye düşünüyorum.
SQL Nasıl Çalışır?
SQL (Yapılandırılmış Sorgu Dili), verinin sorgulanması ya da manipüle edilmesini sağlamak için çeşitli işlemler yapar. Uygulanmak istenen kodların yazım şekillerini (syntax) kontrol ederek yapılacak işlemin ne olduğunu anlar, işlemi yapan kullanıcının yetkilerini kontrol eder, veri tabanından erişilecek ya da düzenlenecek veriler için bir plan oluşturur. İşlemlerini tamamladıktan sonra bir sonuç döndürür. Bu sonuç işleme dair olumlu ya da olumsuz bir dönüş ya da verilerin gösterildiği bir tablo olabilir.
Yukarıdaki SQL işlemleri bazı bileşenler yardımıyla tamamlanır:
-
Parser
SQL parser, sorgu komutlarını (query commands) ayrıştırarak yazım şeklinin doğruluğunu ve kullanıcının yetkili olup olmadığını kontrol etmeye yarar. SQL ifadelerinin gramer kurallarına uygun olarak yazılıp yazılmadığı, işlemi yapan kullanıcının yetki sahipliği burada kontrol edilir.
-
Relational engine
Query Processor olarak da bilinen Relational Engine, kullanıcı tarafından gönderilen sorguların işlenmesini sağlar. Sorgu durumuna göre bir plan oluşturur ve uygulamaya koyarak Storage Engine’den depolanan verilerin alınmasını ve işlenerek bir sonuç döndürülmesini sağlar.,
-
Storage Engine
Verilerin depolanmasını ve istendiği taktirde iletilmesini sağlar. Storage Engine’de çeşitli bileşenlerden oluşur: [5]
- Dosya Türleri: Primary, secondary, log olmak üzere 3 çeşit dosya türü bulunur.
- Access Method: İşlem günlükleri, sorgu yürütücüsü, buffer manager arasında bir arabirim oluşturur. [5]
- Buffer Manager: Plan Cache, Data Parsing, Dirty Pages işlemlerinin gerçekleştirir.
- Transaction Manager: İşlemlerin yönetilmesini sağlar.
SQL Yazım Şekli & Syntax Yapısı
SQL (Structured Query Language) diğer dillerdeki gibi belirli gramer kurallarına sahiptir.
- Clause: İngilizce’deki can, may, if, whether gibi SQL’de SELECT, UPDATE, DELETE, CREATE sorgu için yazılacak cümlenin temel elemanlarıdır.
- Expressions: Skaler büyüklükler, tablolardan oluşabilen çeşitli ifadelerdir.
- Predicates: Bool doğruluk tablolarına göre çalışan şartlardır. Eğer 1 + 1 = 2 değil ise gibi bir predicate’de sonuç Bool doğruluk tablosuna göre 0 döner. Böyle bir şartla filtreleme yapılırsa herhangi bir sonuç elde edilmez. Buna benzer şartlı ifadelere predicate denir.
- Queries: SQL’de sorguların yapılmasını sağlayan, clause, expression, predicate vb. bileşenlerin birleşmesiyle oluşmuş yapılara query denir.
- Statements: SQL’de Clause’lar ile kullanılan ifadelere denir. WHERE username = ‘ofcskn;’ bir Statement’dır. SELECT * FROM WHERE username = ‘ofcskn’ iki statement ile oluşturulmuş bir Query’dir.
Temel SQL İfadeleri (Statements) Nelerdir?
- SELECT, SELECT DISTINCT
- WHERE
- AND, OR, NOT
- IS NULL, IS NOT NULL
- INSERT INTO
- UPDATE
- DELETE
- ORDER BY, ORDER BY <column_name> DESC
- CREATE <DATABASE>
- DROP <DATABASE>
Reklam
SQL Server Nedir?
SQL Server, Microsoft tarafından satın alınan ve pazarlanan, kendi mimarisi olan ilişkisel veri tabanı yönetim sistemidir (RDBMS). Çoğunlukla Windows işletim sistemlerinde kullanılan SQL Server, 2016 yılında Linux tabanlı sistemlerde de kullanılabilir olmuştur.
SQL Server, Database Engine ve SQLOS olmak üzere iki temel bileşenden oluşur. [6]
MySQL Nedir?
MySQL, genellikle Linux platformlarında tercih edilen açık kaynak kodlu, hızlı ve sağlam ilişkisel veri tabanı yönetim sistemidir (RDBMS). C ve C++ dilleriyle kodlanan MySQL, Michael Widenius tarafından geliştirilmiş ve 1995’te duyurulmuştur. Açık kaynaklı olması nedeniyle çoğunlukla Linux ortamında tercih edilmektedir.
İlk başlarda MySQL AB, tarafından geliştirilen ve desteklenen MySQL, Oracle Corporation tarafından satın alınmıştır.
İlişkisel veri tabanı fikrinin ortaya atılmasından sonra SQUARE isimli bir ilişkisel veri tabanı dili ortaya atılmıştı. Ancak SQUARE dilinde kullanılan alt ve üst simgelerin (subscript and superscript) kullanımı zorlaştırmasından ötürü daha kolay bir dile ihtiyaç duyulmuştu. Önceleri SEQUEL ismiyle bilinen SQL (Structured Query Language), böylelikle geliştirilmiş oldu. Bu yazımda SQL kavramının ne olduğundan, ilişkisel veri tabanı mantığından, SQL’in ne zaman ortaya çıktığından, nasıl çalıştığından ve ne işe yaradığından, MySQL, NoSQL ve SQLServer’ın ne olduğundan bahsettim. Umarım yazım faydalı olmuştur. Herhangi bir sorunuz olursa yorumlar kısmından iletebilirsiniz. Sağlıcakla.
Kaynaklar
- https://www.reddit.com/r/SQL/comments/doukj2/is_sql_considered_codingprogramming/
- https://learnsql.com/blog/sql-programming-language/
- https://www.datacamp.com/blog/is-sql-a-programming-language#:~:text=Given the definition of a,-Specific Language (DSL).
- https://en.wikipedia.org/wiki/SQL
- https://www.simplilearn.com/what-is-microsoft-sql-server-architecture-article
- https://www.sqlservertutorial.net/getting-started/what-is-sql-server/
İlk yorumu paylaşan siz olun.