İçeriğe atla

SQL

SQL, (İngilizce "Structured Query Language", Türkçe: Yapılandırılmış Sorgu Dili, telaffuz: ɛs kjuː ˈɛl/) verileri yönetmek ve tasarlamak için kullanılan bir dildir. SQL, kendi bir programlama dili olmamasına rağmen birçok kişi tarafından programlama dili olarak bilinir. SQL herhangi bir veri tabanı ortamında kullanılan bir alt dildir. SQL ile yalnızca veri tabanı üzerinde işlem yapılabilir; veritabanlarında bulunan sistemlere bilgi ekleme, bilgi değiştirme, bilgi çıkarma ve bilgi sorgulama için kullanılmaktadır. Özellikle de ilişkisel veritabanı sistemleri üzerinde yoğun olarak kullanılmaktadır. SQL'e özgü cümleler kullanarak veri tabanına kayıt eklenebilir, olan kayıtlar değiştirilebilir, silinebilir ve bu kayıtlardan listeler oluşturulabilir.

Tarihçe

Veritabanı yaklaşımı ile birlikte bir veri sorgulama diline veya aracına ihtiyaç duyulmuştur. İlk başta matematiksel bir sözdizimine sahip olan SQUARE adlı bir dil geliştirilmiştir. Geniş kullanıcı kitleleri tarafında kolay kullanılabilmesi için matematiksel söz dizimli SQUARE dilinden vazgeçilerek, İngilizceye benzer sözdizimine sahip bir dil oluşturulmuş ve SEQUEL olarak adlandırılmıştır. Daha sonra da bu SEQUEL dili, İngilizce söylenişine paralel olarak SQL olarak adlandırılmıştır.

SQL dili ilişkisel alanda büyük ilgi görmüş ve İlişkisel Veri Tabanı Yönetim Sistemlerinin (İVTYS) tümünde yer alan standart dil görünümü kazanmıştır. Bu nedenle Veri Tabanı konusunda çalışan tüm bilişim teknik personeli tarafından bilinmesi gereken bir dil konumundadır.

Veri tanımlama olanakları

SQL veri tanımlama deyimlerinden başlıcaları şunlardır:

CREATE TABLE tablo_adi
Yeni bir tablo oluşturmak için kullanılır. Alan isimleri yazılırken sona virgül konulur ve son satır olan işlemimizde virgül konmadan parantez kapatılır.
CREATE TABLE tabloilceler (
  ilceNo mediumint(8) unsigned DEFAULT '0' NOT NULL,
  ilce varchar(30) NOT NULL,
  postakodu varchar(5),
  ilceTel char(3),
  plakaKodu char(2) NOT NULL
)
ALTER TABLE tablo_adı
Yeni bir sütun eklemek, sütunun tipini veya uzunluğunu değiştirmek vb. yapısal değişiklikler yapılması için kullanılır.
DROP TABLE tablo_adı
Tabloyu içerisindeki verilerle birlikte siler.
TRUNCATE TABLE tablo_adı
Tablodaki tüm verileri siler, tablo yapısını korur.:
CREATE VIEW görüş_adı
Görüntü oluşturmak için kullanılır
DROP VIEW görüş_adı
Görüntüyü siler
CREATE INDEX indeks_adı
Tablonun (en azından bir) sütun adı üzerinde indeks oluşturmak için kullanılır.
DROP INDEX indeks_adı
Oluşturulan indeksleri veri tabanından kaldırmak için kullanılır.

Veri işleme olanakları

SELECT deyimi
Select deyimi, ilişkili veri tabanından veri almak için kullanılır.:SELECT ilçe, postakodu FROM tabloIlceler WHERE plakaKodu = '34'
İstanbul'un ilçeleri ile posta kodlarını gösterir
UPDATE deyimi
Update deyimi, ilişkili veri tabanındaki verileri güncellemek için kullanılır.:UPDATE tabloIlceler SET postakodu = '06720' WHERE ilce = 'Bala'
Bala'nın posta kodunu değiştirir
INSERT deyimi
Insert deyimi, ilişkili veri tabanına veri eklemek için kullanılır.:INSERT INTO tabloIlceler VALUES (, 'Yenişehir', , , '53')
Yeni veriler ekler
DELETE deyimi
Delete deyimi, ilişkili veri tabanından veri silmek için kullanılır.:DELETE FROM tabloIlceler WHERE plakaKodu = '53'
plakaKodu 53 olan bütün verileri siler

SQL dilini kullanan veritabanları

Dış bağlantılar

İlgili Araştırma Makaleleri

<span class="mw-page-title-main">MySQL</span>

MySQL, altı milyondan fazla sistemde yüklü bulunan çoklu iş parçacıklı, çok kullanıcılı, hızlı ve sağlam bir veri tabanı yönetim sistemidir.

Hibernate, Java platformunda yazılmış bir ORM aracıdır. ORM, nesne odaklı dillerdeki nesnelerin, ilişkisel veri tabanlarındaki kayıtlara nasıl karşılık geldiğini yürüten bir teknolojidir. NHibernate adında .NET çatısı için yeniden yazılmış bir türevi bulunur.

Veritabanları, yapılandırılmış bilgi veya verilerin depolandığı alanlardır. Bilgi artışıyla birlikte bilgisayarda bilgi depolama ve bilgiye erişim konularında yeni yöntemlere ihtiyaç duyulmuştur. Veritabanları; büyük miktardaki bilgileri depolamada geleneksel yöntem olan "dosya-işlem sistemine" alternatif olarak geliştirilmiştir. Telefonlardaki kişi rehberi günlük hayatta çok basit bir şekilde kullanılan veri tabanı örneği olarak kabul edilebilir. Bunların dışında internet sitelerindeki üyelik sistemleri, akademik dergilerin ve üniversitelerin tez yönetim sistemleri de veritabanı kullanımına örnektir. Veritabanları sayesinde bilgilere ulaşılabilir ve onları düzenlenebilir. Veritabanları genellikle bireysel olarak satın alınamayacak kadar yüksek meblağlara sahip olmasına karşın; ücretsiz kullanıma açılan akademik veritabanları da bulunmaktadır. Akademik veritabanları aracılığıyla bazen bibliyografik bilgi bazen de tam metinlere erişmek mümkündür. Veritabanları, veritabanı yönetim sistemleri aracılığıyla oluşturulur ve yönetilir. Bu sistemlere; Microsoft Access, MySQL, IBM DB2, Informix, Interbase, Microsoft SQL Server, PostgreSQL, Oracle ve Sysbase örnek olarak verilebilir.

ABAP,İngilizce Advanced Business Application Programming kelimelerinin baş harflerinden oluşan bir kısaltmadır ve Alman yazılım şirketi SAP tarafından geliştirilen üst seviye bir nesne tabanlı programlama dilidir. SAP'nin iş uygulamaları geliştirmek için kullanılan NetWeaver platformunun parçası olan Web Uygulama Sunucusu'nu programlamak amacıyla kullanılır. Sözdizimi COBOL'a benzemektedir.

Trigger yani tetikleyici, ilişkisel veri tabanı yönetim sistemlerinde bir tabloda belirli olaylar meydana geldiği zaman yani ekleme, güncelleme, silme işlemlerinden biri gerçekleşmeden önce veya sonra çalışan ve belirli işlemleri kodlandığı şekilde yerine getiren yordamdır.

Kaydedilmiş işlev, veritabanı yönetim sistemlerinde veritabanı istemcisinden tüm komut dizilerini çağırmak için kullanılabilen bir komuttur. Bu nedenle, bir dizi kayıtlı komutu çalıştıran bağımsız bir komuttur. Kaydedilmiş işlevler, ilgili veritabanının veri sözlüğüne kaydedilir.

İlişkisel veri tabanı yönetim sistemi, verilerin tablolarda satır ve sütunlar hâlinde tutulduğu ve yüksek bir veri tutarlılığına sahip veri depolama sistemidir.

<span class="mw-page-title-main">Microsoft SQL Server</span>

Microsoft SQL Server, Microsoft tarafından geliştirilen ve yönetilen bir ilişkisel veritabanı yönetim sistemidir. SQL Server, büyük ve karmaşık veritabanlarını depolamak, yönetmek, sorgulamak ve işlemek için kullanılan bir yazılım ürünüdür. Veri depolama, veri güvenliği, yedekleme, geri yükleme, veri entegrasyonu, analiz ve raporlama gibi çeşitli veritabanı yönetimi işlevlerini destekler.

MyISAM, MySQL ilişkisel veri tabanı yönetim sisteminin kullandığı ön tanımlı kayıt motorudur. Öncülü ISAM kodu temel alınarak geliştirilen MyISAM birçok yararlı özelliğe sahiptir. Ne var ki, MySQL'in son sürümleri aktarım ve veri tutarlılığı kısıtlamaları desteği sunan ve yüksek eşgüdüm öngören InnoDB'yi yeğlemektedir.

EJB QL veya EJB-QL Enterprise Java Beans için bir veritabanı sorgulama dili olup her veritabanında koşabilir. J2EE uygulamalarında kullanılır. SQL'e kıyasla daha karmaşık olup ifâde gücü daha azdır.

<span class="mw-page-title-main">Hash tablosu</span>

Bilişim bilimlerinde komut çizelgesi, komut işlevini tanıyıcı değer olarak bilinen benzersiz anahtarı bir değerle eşleyen bir veri yapısıdır. Böylece komut çizelgesi bir birleşik dizidir. Komut işlevi, ilişkin değerin arandığı anahtarı bir dizi elemanının indisine çevirir.

Bilgisayar bilimleri'nde NoSQL, klasik ilişkisel veritabanı yönetim sistemlerinden (İVTYS) bir şekilde farklı olan veritabanı yönetim sistemleri için kullanılan bir kavramdır. Bu veri depolarının sabit tabela düzenlerine ihtiyaçları olmayabilir, alışılagelmiş join işlemleri kullanılmaz, tipik olarak yatay ölçeklemeye gidilir. Akademisyenlerce ve makalelerde tipik olarak böyle veri depolarına yapılanmış bellek denir. Bu kavram klasik ilişkisel veritabanlarını altküme olarak görür. Bu kavram aynı zamanda SQL ve Daha Fazlası olarak da adlandırılmaktadır.

Bir uzamsal (mekansal) veri tabanı verileri depolamak ve bir geometrik uzayda/uzamda/mekanda tanımlanmış nesneleri temsil için sorgu verileri ile en uygun hale getirilmiş bir veri tabanıdır. En gelişmiş uzamsal veri tabanları, noktalar, çizgiler ve çokgenler gibi basit geometrik nesnelerin temsiline izin verir. Bazı uzamsal veri tabanları, 3D nesneler, topolojik kapatıcılık, doğrusal ağlar ve Üçgenlenmiş Düzensiz Ağ gibi daha karmaşık yapıları işlemektedir. Özgün veri tabanları çeşitli sayısal veriler ve karakter tiplerini yönetmek için tasarlanmış olsa da veri tabanlarına etkin uzamsal veri türlerini işlemek için ek işlevsellik eklenmesi gerekiyor. Bunlara genellikle geometri veya özellik denir. Open Geospatial Consortium basit özelliklerin belirtimini oluşturdu ve veri tabanı sistemlerinde uzamsal işlevsellik eklemek için ölçütleri belirliyor.

<span class="mw-page-title-main">SQL enjeksiyonu</span>

SQL enjeksiyonu, veri tabanına dayalı uygulamalara saldırmak için kullanılan bir atak tekniğidir; burada saldırgan SQL dili özelliklerinden faydalanarak standart uygulama ekranındaki ilgili alana yeni SQL ifadelerini ekler.. SQL enjeksiyonu, uygulamaların yazılımları içindeki bir güvenlik açığından faydalanır, örneğin, uygulamanın kullanıcı giriş bilgileri beklediği kısma SQL ifadeleri gömülür, eğer gelen verinin içeriği uygulama içerisinde filtrelenmiyorsa veya hatalı şekilde filtreleniyorsa, uygulamanın, içine gömülmüş olan kodla beraber hiçbir hata vermeden çalıştığı görülür. SQL enjeksiyonu, çoğunlukla web siteleri için kullanılan bir saldırı türü olarak bilinse de SQL veri tabanına dayalı tüm uygulamalarda gerçeklenebilir.

Aşağıdaki tablolarda mevcut veritabanı yöneticisi araçların bir dizisi için genel ve teknik bilgilerin karşılaştırılması verilmiştir. Daha fazla bilgi için bireysel ürün makalelerine bakınız. Bu makale her şey dahil mutlaka günceldir.

İlişkisel veritabanı, 1970 yılında Edgar Frank Codd tarafından önerildiği gibi, organizasyonu ilişkisel veri modeline dayanan bir dijital veritabanıdır. İlişkisel veritabanlarını korumak için kullanılan çeşitli yazılım sistemleri bir ilişkisel veritabanı yönetim sistemi (RDBMS) olarak bilinir. Neredeyse tüm ilişkisel veritabanı sistemleri, sorgulama ve veritabanının bakımı için dil olarak SQL(Structured Query Language) kullanmaktadırlar.

Bir veritabanı dizini, veri ve dizinin veri yapısını koruyan ve ek depolama alanı maliyetiyle bir veritabanı tablosundaki veri alma işlemlerinin hızını artıran bir veri yapısıdır. İndeksler, bir veritabanı tablosuna yapılan bütün erişimlerde, veritabanı tablosundaki her satırı tek tek aramaya gerek kalmadan hızlı bir şekilde verileri bulmak için kullanılır. İndeksler, hızlı rastgele aramalarda ve sipariş edilen kayıtların verimli bir biçimde erişimine olanak sağlayan bir veritabanı tablosunun bir veya daha fazla sütunu kullanılarak ve genişletilerek oluşturulabilir.

Bir pivot tablo, daha geniş bir tabloyu özetleyen istatistik tablosudur. Bu özet, pivot tabloyu anlamlı bir şekilde gruplayan toplamları, ortalamaları veya diğer istatistikleri içerebilir.

BSON, bir bilgisayar veri değişim biçimidir. "BSON" adı, JSON terimine dayanmaktadır ve "Binary JSON" anlamına gelir. İlişkisel diziler, tam sayı indeksli diziler ve bir dizi temel skaler tip dahil olmak üzere basit veya karmaşık veri yapılarını temsil etmek için ikili bir şekildir. BSON, 2009 yılında MongoDB'de ortaya çıktı. Çeşitli skaler veri türleri MongoDB için özel ilgi alanıdır ve biçim, MongoDB veri tabanı için hem veri depolama hem de ağ aktarım biçimi olarak kullanılır, ancak MongoDB olmadan da bağımsız bir şekilde kolaylıkla kullanılabilir. C, C++, C#, D, Delphi, Erlang, Go, Haskell, Java, JavaScript, Julia, Lua, OCaml, Perl, PHP, Python, Ruby, Rust, Scala, Smalltalk ve Swift gibi çeşitli programlama dillerinde uyarlamaları bulunmaktadır.

Zamansal veri tabanı, zaman örnekleriyle ilgili verileri depolar. Zamansal veri türleri sunar ve geçmiş, şimdiki ve gelecekteki zamanla ilgili bilgileri depolar. Zamansal veri tabanları tek zamanlı, iki zamanlı veya üç zamanlı olabilir.