SQL - SQL

SQL (Yapılandırılmış Sorgu Dili)
ParadigmaBildirge
AileSorgu dili
Tarafından tasarlandıDonald D. Chamberlin
Raymond F. Boyce
GeliştiriciISO /IEC
İlk ortaya çıktı1974; 46 yıl önce (1974)
Kararlı sürüm
SQL: 2016 / Aralık 2016; 3 yıl once (2016-12)
Yazma disipliniStatik, kuvvetli
işletim sistemiÇapraz platform
İnternet sitesiwww.iso.org/standart/63555.html
Majör uygulamalar
Birçok
Lehçeler
Tarafından etkilenmiş
Veri kaydı
Etkilenen
CQL, LINQ, SPARQL, SOQL, Güç kalkanı,[1] JPQL, JOOQ, N1QL
SQL (dosya biçimi)
Dosya adı uzantısı
.sql
İnternet medya türü
uygulama / sql[2][3]
Tarafından geliştirilmişISO /IEC
İlk sürüm1986 (1986)
Biçim türüVeri tabanı
StandartISO / IEC 9075
Açık format ?Evet
İnternet sitesiwww.iso.org/standart/63555.html

SQL (/ˌɛsˌkjuːˈɛl/ (Bu ses hakkındadinlemek) S-Q-L,[4] /ˈsbenkwəl/ "devamı"; Yapılandırılmış sorgu dili)[5][6][7] bir alana özgü dil programlamada kullanılır ve içinde tutulan verileri yönetmek için tasarlanmıştır. ilişkisel veritabanı yönetim sistemi (RDBMS) veya bir ilişkisel veri akışı yönetim sistemi (RDSMS). Özellikle kullanımda kullanışlıdır yapılandırılmış veriler, yani varlıklar ve değişkenler arasındaki ilişkileri içeren veriler.

SQL, eski okuma-yazmaya göre iki ana avantaj sunar API'ler gibi ISAM veya VSAM. İlk olarak, birçok kayda tek bir komutla erişme kavramını tanıttı. İkincisi, belirleme ihtiyacını ortadan kaldırır Nasıl bir kayda ulaşmak için, ör. olan veya olmayan indeks.

Başlangıçta dayalı ilişkisel cebir ve tuple ilişkisel hesap SQL birçok türden ifadeden oluşur,[8] gayri resmi olarak sınıflandırılabilir alt diller, genellikle: a veri sorgulama dili (DQL),[a] a veri tanımlama dili (DDL),[b] a veri kontrol dili (DCL) ve a veri işleme dili (DML).[c][9] SQL kapsamı, veri sorgulama, veri işleme (ekleme, güncelleme ve silme), veri tanımı (şema oluşturma ve değiştirme) ve veri erişim kontrolü. SQL aslında bir bildirim dili (4GL ), ayrıca şunları içerir: prosedürel elementler.

SQL, kullanılan ilk ticari dillerden biriydi Edgar F. Codd ’S ilişkisel model. Model, 1970 tarihli etkili makalesi "Büyük Paylaşılan Veri Bankaları için İlişkisel Veri Modeli" nde açıklanmıştır.[10] Tamamen bağlı kalmamasına rağmen Codd tarafından açıklanan ilişkisel model, en yaygın kullanılan veritabanı dili haline geldi.[11][12]

SQL bir standart of Amerikan Ulusal Standartlar Enstitüsü (ANSI) 1986'da ve Uluslararası Standardizasyon Örgütü (ISO) 1987'de.[13] O zamandan beri standart, daha geniş bir özellik setini içerecek şekilde revize edildi. Standartların varlığına rağmen, çoğu SQL kodu farklı veritabanı sistemlerine taşınmadan önce en azından bazı değişiklikler gerektirir.

Tarih

SQL başlangıçta şu adreste geliştirildi: IBM tarafından Donald D. Chamberlin ve Raymond F. Boyce İlişkisel modeli öğrendikten sonra Edgar F. Codd[14] 1970'lerin başında.[15] Bu sürüm, başlangıçta SEQUEL (Yapılandırılmış İngilizce Sorgu Dili), içinde depolanan verileri işlemek ve almak için tasarlanmıştır. IBM orijinal yarı ilişkisel veritabanı yönetim sistemi, Sistem R hangi grup IBM San Jose Araştırma Laboratuvarı 1970'lerde gelişti.[15]

Chamberlin ve Boyce'nin ilişkisel bir veritabanı dili için ilk girişimi Square idi, ancak alt simge notasyonu nedeniyle kullanılması zordu. 1973'te San Jose Araştırma Laboratuvarı'na taşındıktan sonra SEQUEL üzerinde çalışmaya başladılar.[14] SEQUEL kısaltması daha sonra SQL olarak değiştirildi çünkü "SEQUEL" bir marka of İngiltere merkezli Hawker Siddeley Dynamics Engineering Limited şirketi.[16]

IBM, sistemin kullanışlılığını ve pratikliğini belirlemek için müşteri test sitelerinde SQL'i test ettikten sonra, IBM System R prototiplerine dayalı ticari ürünler geliştirmeye başladı. Sistem / 38, SQL / DS, ve DB2 sırasıyla 1979, 1981 ve 1983'te ticari olarak temin edilebilen.[17]

1970'lerin sonunda Relational Software, Inc. (şimdi Oracle Corporation ) Codd, Chamberlin ve Boyce tarafından tanımlanan kavramların potansiyelini gördü ve kendi SQL tabanlı RDBMS satma istekleri ile ABD Donanması, Merkezi İstihbarat Teşkilatı, ve diğeri ABD hükümeti ajanslar. Haziran 1979'da Relational Software, Inc. ticari olarak mevcut ilk SQL uygulamasını tanıttı. Oracle V2 (Version2) için VAX bilgisayarlar.

1986 yılına kadar, ANSI ve ISO standart gruplar resmi olarak standart "Veritabanı Dili SQL" dil tanımını benimsedi. Standardın yeni versiyonları 1989, 1992, 1996, 1999, 2003, 2006, 2008, 2011'de yayınlandı[14] ve son olarak 2016.[kaynak belirtilmeli ]

Sözdizimi

Tek bir ifade oluşturan SQL dil öğelerinin birkaçını gösteren bir grafik

SQL dili, aşağıdakiler de dahil olmak üzere çeşitli dil unsurlarına bölünmüştür:

  • Maddeleri, ifadelerin ve sorguların kurucu bileşenleri olan. (Bazı durumlarda bunlar isteğe bağlıdır.)[18]
  • İfadeya üretebilir skaler değerler veya tablolar oluşan sütunlar ve satırlar verilerin
  • Dayanaklar, SQL olarak değerlendirilebilecek koşulları belirten üç değerli mantık (3VL) (doğru / yanlış / bilinmiyor) veya Boole gerçek değerler ve ifadelerin ve sorguların etkilerini sınırlamak veya program akışını değiştirmek için kullanılır.
  • Sorguları, verileri belirli kriterlere göre alan. Bu önemli bir unsurdur SQL.
  • İfadelerşema ve veriler üzerinde kalıcı bir etkiye sahip olabilecek veya kontrol edebilecek işlemler program akışı, bağlantılar, oturumlar veya tanılama.
    • SQL deyimleri ayrıca şunları içerir: noktalı virgül (";") ifade sonlandırıcı. Her platformda gerekli olmasa da SQL dilbilgisinin standart bir parçası olarak tanımlanır.
  • Önemsiz boşluk SQL deyimlerinde ve sorgularında genellikle yok sayılır, bu da SQL kodunu okunabilirlik için biçimlendirmeyi kolaylaştırır.

Prosedürel uzantılar

SQL belirli bir amaç için tasarlanmıştır: sorgulamak veri bir ilişkisel veritabanı. SQL bir Ayarlamak tabanlı, bildirim temelli programlama dili, değil zorunlu programlama dili sevmek C veya TEMEL. Ancak, Standart SQL uzantıları prosedürel programlama dili akış denetimi yapıları gibi işlevsellik. Bunlar şunları içerir:

KaynakKısaltmaAd Soyad
ANSI / ISO StandardıSQL / PSMSQL / Kalıcı Saklanan Modüller
Interbase / FirebirdPSQLProsedürel SQL
IBM DB2SQL PLSQL Prosedür Dili (SQL / PSM uygular)
IBM InformixSPLSaklanan Prosedür Dili
IBM NetezzaNZPLSQL[19](Postgres PL / pgSQL'e göre)
İnvantifPSQL[20]Invantive Procedural SQL (uygular SQL / PSM ve PL / SQL )
MariaDBSQL / PSM, PL / SQLSQL / Kalıcı Depolanan Modül (SQL / PSM uygular), Prosedür Dili / SQL ( Ada )[21]
Microsoft / SybaseT-SQLİşlem-SQL
Mimer SQLSQL / PSMSQL / Kalıcı Depolanan Modül (SQL / PSM uygular)
MySQLSQL / PSMSQL / Kalıcı Depolanan Modül (SQL / PSM uygular)
MonetDBSQL / PSMSQL / Kalıcı Depolanan Modül (SQL / PSM uygular)
NuoDBSSPStarkey Depolanan Prosedürler
OraclePL / SQLProsedürel Dil / SQL (dayalı Ada )
PostgreSQLPL / pgSQLProsedürel Dil / PostgreSQL Yapılandırılmış Sorgu Dili (azaltılmış PL / SQL )
SAP R / 3ABAPGelişmiş İş Uygulama Programlama
SAP HANASQLScriptSQLScript
SybaseWatcom-SQLHer Yerde SQL Watcom-SQL Dialect
TeradataSPLSaklanan Prosedür Dili

Standart SQL / PSM uzantılarına ve özel SQL uzantılarına ek olarak, prosedürel ve nesne odaklı programlanabilirlik, diğer dillerle DBMS entegrasyonu aracılığıyla birçok SQL platformunda mevcuttur. SQL standardı tanımlar SQL / JRT uzantıları (Java Programlama Dili için SQL Rutinleri ve Türleri) Java SQL veritabanlarında kod. Microsoft SQL Server 2005 kullanır SQLCLR (SQL Server Ortak Dil Çalışma Zamanı) yönetilen barındırmak için .AĞ Veritabanındaki derlemeler, SQL Server'ın önceki sürümleri, öncelikle C'de yazılmış, yönetilmeyen genişletilmiş depolanmış yordamlarla sınırlıdır. PostgreSQL kullanıcıların çok çeşitli dillerde işlevler yazmasına olanak tanır; Perl, Python, Tcl, JavaScript (PL / V8) ve C.[22]

Birlikte çalışabilirlik ve standardizasyon

Genel Bakış

SQL uygulamaları, satıcılar arasında uyumsuzdur ve standartlara tam olarak uyması gerekmez. Özellikle tarih ve saat sözdizimi, dize birleştirme, BOŞs ve karşılaştırma büyük küçük harf duyarlılığı satıcıdan satıcıya değişir. Özel istisnalar şunlardır: PostgreSQL[23] ve Mimer SQL[24] PostgreSQL, alıntılanmamış isimlerin nasıl katlanacağı konusunda standarda uymasa da, standartlara uyum için çabalamaktadır. PostgreSQL'de tırnaksız isimlerin küçük harfe katlanması SQL standardı ile uyumsuzdur,[25] bu, tırnaksız isimlerin büyük harfe katlanması gerektiğini söylüyor.[26] Böylece, Foo eşdeğer olmalı FOO değil foo standarda göre.

Popüler SQL uygulamaları genellikle Standart SQL'in temel özellikleri için desteği içermez. TARİH veya ZAMAN veri tipleri. Bu türden en açık örnekler ve tesadüfen en popüler ticari ve tescilli SQL DBMS'ler Oracle'dır ( TARİH gibi davranır DATETIME,[27][28] ve eksik ZAMAN türü)[29] ve MS SQL Server (2008 sürümünden önce). Sonuç olarak SQL kodu, nadiren veritabanı sistemleri arasında değişiklik yapılmadan taşınabilir.

Uyumsuzluğun nedenleri

Veritabanı sistemleri arasındaki bu taşınabilirlik eksikliğinin birkaç nedeni vardır:

  • SQL standardının karmaşıklığı ve boyutu, çoğu uygulayıcının tüm standardı desteklemediği anlamına gelir.
  • Standart, birkaç önemli alandaki veritabanı davranışını belirtmez (ör. dizinler, dosya depolama ...), nasıl davranılacağına karar vermek için uygulamalar bırakılır.
  • SQL standardı, uyumlu bir veritabanı sisteminin uygulaması gereken sözdizimini kesin olarak belirtir. Bununla birlikte, standardın dil yapılarının anlambilimine ilişkin özellikleri daha az iyi tanımlanmıştır ve belirsizliğe yol açar.
  • Birçok veritabanı satıcısının büyük mevcut müşteri tabanları vardır; SQL standardının daha yeni sürümünün satıcının veritabanının önceki davranışıyla çeliştiği durumlarda, satıcı kırmak istemeyebilir geriye dönük uyumluluk.
  • Satıcıların, kullanıcıların veritabanı tedarikçilerini değiştirmesini kolaylaştırmak için çok az ticari teşvik vardır (bkz. satıcıya bağlı kalma ).
  • Veritabanı yazılımını değerlendiren kullanıcılar, performans gibi diğer faktörleri önceliklerinde standartlara uygunluktan daha yükseğe yerleştirme eğilimindedir.

Standardizasyon geçmişi

SQL, bir standart olarak benimsenmiştir. Amerikan Ulusal Standartlar Enstitüsü (ANSI) 1986'da SQL-86 olarak[30] ve Uluslararası Standardizasyon Örgütü (ISO) 1987'de.[13] Tarafından korunur ISO / IEC JTC 1, Bilgi teknolojisi, Alt Komite SC 32, Veri yönetimi ve değişimi.

1996 yılına kadar Ulusal Standartlar ve Teknoloji Enstitüsü (NIST) veri yönetimi standartları programı, SQL standardı ile SQL DBMS uyumluluğu onayladı. Satıcılar artık ürünlerinin uygunluğunu kendileri onaylıyor.[31]

Orijinal standart, "SQL" için resmi telaffuzun bir ilkcilik: /ˌɛsˌkjuːˈɛl/ ("ess cue el").[11] Ne olursa olsun, İngilizce konuşan birçok veritabanı uzmanı ( Donald Chamberlin kendisi[32]) kullan kısaltma -like telaffuz /ˈsbenkwəl/ ("netice"),[33] dilin yayın öncesi geliştirme adı olan "SEQUEL" i yansıtır.[15][16][32]
SQL standardı bir dizi revizyondan geçmiştir:

YılİsimAliasYorumlar
1986SQL-86SQL-87İlk olarak ANSI tarafından resmileştirildi.
1989SQL-89FIPS 127-1FIPS 127-1 olarak kabul edilen, bütünlük kısıtlamaları ekleyen küçük revizyon.
1992SQL-92SQL2, FIPS 127-2Büyük revizyon (ISO 9075), Giriş Seviyesi SQL-92, FIPS 127-2 olarak kabul edildi.
1999SQL: 1999SQL3Normal ifade eşleşmesi eklendi, yinelemeli sorgular (Örneğin. Geçişli kapatma ), tetikler, prosedürel ve akış denetimi ifadeleri, skaler olmayan türler (diziler) ve bazı nesne yönelimli özellikler (ör. yapısal tipler ). Java'da SQL yerleştirme desteği (SQL / OLB ) ve tam tersi (SQL / JRT ).
2003SQL: 2003Tanıtıldı XML ilgili özellikler (SQL / XML ), pencere fonksiyonları, standartlaştırılmış diziler ve otomatik oluşturulan değerlere sahip sütunlar (kimlik sütunları dahil).
2006SQL: 2006ISO / IEC 9075-14: 2006, SQL'in XML ile kullanılabileceği yolları tanımlar. XML verilerini bir SQL veritabanına içe aktarmanın ve depolamanın, veritabanı içinde işleyip hem XML hem de geleneksel SQL verilerini XML biçiminde yayınlamanın yollarını tanımlar. Ek olarak, uygulamaların sorguları SQL kodlarına entegre etmesine olanak tanır. XQuery, World Wide Web Consortium tarafından yayınlanan XML Sorgu Dili (W3C ), sıradan SQL verilerine ve XML belgelerine aynı anda erişmek için.[34]
2008SQL: 2008Dış imleç tanımlarını ORDER BY yasallaştırır. INSTEAD OF tetikleyicileri, TRUNCATE ifadesi ekler,[35] FETCH maddesi.
2011SQL: 2011Geçici verileri ekler (PERIOD FOR)[36] (daha fazla bilgi için: Geçici veritabanı # Geçmiş ). İçin geliştirmeler pencere fonksiyonları ve FETCH maddesi.[37]
2016SQL: 2016Satır deseni eşleştirme, polimorfik tablo işlevleri, JSON.
2019SQL: 2019Bölüm 15, çok boyutlu diziler (MDarray tipi ve operatörler) ekler.

Mevcut standart

Standart genellikle şu modelle gösterilir: ISO / IEC 9075-n: yyyy Bölüm n: başlıkveya kısayol olarak, ISO / IEC 9075.

ISO / IEC 9075 ile tamamlanmaktadır ISO / IEC 13249: SQL Multimedya ve Uygulama Paketleri (SQL / MM), video, ses ve video gibi uygulamaları geniş çapta yaymak için SQL tabanlı arayüzleri ve paketleri tanımlayan mekansal veri İlgili taraflar SQL standartları belgelerini ISO'dan satın alabilir,[38] IEC veya ANSI. Bir SQL: 2008 taslağı, bir zip Arşiv.[39]

SQL Standardının Anatomisi

SQL standardı on bölüme ayrılmıştır. Eski parçaların geri çekilmesi nedeniyle numaralandırmada boşluklar var.

  • ISO / IEC 9075-1: 2016 Bölüm 1: Çerçeve (SQL / Çerçeve). Mantıksal kavramlar sağlar.[40]
  • ISO / IEC 9075-2: 2016 Bölüm 2: Yapı temeli (SQL / Temel). Dilin en merkezi unsurlarını içerir ve her ikisinden de oluşur zorunlu ve isteğe bağlı özellikleri.
  • ISO / IEC 9075-3: 2016 Bölüm 3: Çağrı Seviyesi Arayüzü (SQL / CLI ). Ada, C sırasıyla C ++, COBOL, Fortran, MUMPS, Pascal veya PL / I ile yazılmış uygulamalardan SQL ifadelerini yürütmek için kullanılabilecek arayüz bileşenlerini (yapılar, prosedürler, değişken bağlamalar) tanımlar. (Java için 10. bölüme bakın.) SQL / CLI, SQL ifadeleri ve SQL / CLI prosedür çağrılarının, çağıran uygulamanın kaynak kodundan ayrı olarak ele alınacağı şekilde tanımlanır. Açık Veritabanı Bağlantısı iyi bilinen bir SQL / CLI üst kümesidir. Standardın bu bölümü yalnızca aşağıdakilerden oluşur: zorunlu özellikleri.
  • ISO / IEC 9075-4: 2016 Bölüm 4: Kalıcı depolanan modüller (SQL / PSM ). Kontrol akışı, koşul işleme, ifade koşul sinyalleri ve iptaller, imleçler ve yerel değişkenler ve değişkenlere ve parametrelere ifadelerin atanması dahil olmak üzere SQL için prosedürel uzantıları standartlaştırır. Ek olarak, SQL / PSM kalıcı veritabanı dili rutinlerinin (örneğin, "depolanmış prosedürler") bildirimini ve bakımını resmileştirir. Standardın bu bölümü yalnızca aşağıdakilerden oluşur: isteğe bağlı özellikleri.
  • ISO / IEC 9075-9: 2016 Bölüm 9: Dış Verilerin Yönetimi (SQL / MED ). SQL'in harici verileri yönetmesine izin vermek için yabancı veri sarmalayıcılarını ve veri bağlantısı türlerini tanımlayan SQL uzantıları sağlar. Dış veriler, SQL tabanlı bir DBMS tarafından erişilebilen ancak yönetilemeyen verilerdir. Standardın bu bölümü yalnızca aşağıdakilerden oluşur: isteğe bağlı özellikleri.
  • ISO / IEC 9075-10: 2016 Bölüm 10: Nesne dili bağlamaları (SQL / OLB ). Sözdizimini ve anlambilimini tanımlar SQLJ, Java'da gömülü olan SQL (ayrıca bkz. bölüm 3). Standart ayrıca SQLJ uygulamalarının ikili taşınabilirliğini sağlamak için mekanizmaları açıklar ve çeşitli Java paketlerini ve bunların içerdiği sınıfları belirtir. Standardın bu bölümü yalnızca aşağıdakilerden oluşur: isteğe bağlı özellikleri. SQL / OLB'nin aksine JDBC tanımlar API ve SQL standardının bir parçası değildir.[kaynak belirtilmeli ]
  • ISO / IEC 9075-11: 2016 Bölüm 11: Bilgi ve tanım şemaları (SQL / Schemata ). Bilgi Şemasını ve Tanım Şemasını tanımlar ve SQL veritabanlarını ve nesneleri kendi kendini tanımlayan nesneler yapmak için ortak bir araç seti sağlar. Bu araçlar arasında SQL nesne tanımlayıcısı, yapı ve bütünlük kısıtlamaları, güvenlik ve yetkilendirme özellikleri, ISO / IEC 9075 özellikleri ve paketleri, SQL tabanlı DBMS uygulamaları tarafından sağlanan özelliklerin desteği, SQL tabanlı DBMS uygulama bilgileri ve boyutlandırma öğeleri ve DBMS uygulamaları tarafından desteklenen değerler.[41] Standardın bu bölümü hem zorunlu ve isteğe bağlı özellikleri.
  • ISO / IEC 9075-13: 2016 Bölüm 13: Java TM programlama dilini kullanan SQL Rutinleri ve türleri (SQL / JRT ). Statik Java yöntemlerini SQL uygulamaları ('Veritabanında Java') içinden rutinler olarak çağırma yeteneğini belirtir. Ayrıca, Java sınıflarını SQL yapılandırılmış kullanıcı tanımlı türler olarak kullanma yeteneğini de gerektirir. Standardın bu bölümü yalnızca aşağıdakilerden oluşur: isteğe bağlı özellikleri.
  • ISO / IEC 9075-14: 2016 Bölüm 14: XML İle İlgili Özellikler (SQL / XML ). XML'i SQL ile birlikte kullanmak için SQL tabanlı uzantıları belirtir. XML bir SQL veritabanında XML'in işlenmesini ve depolanmasını desteklemek için veri türünün yanı sıra çeşitli yordamlar, işlevler ve XML'den SQL'e veri türü eşlemeleri tanıtıldı.[34] Standardın bu bölümü yalnızca aşağıdakilerden oluşur: isteğe bağlı özellikleri.[kaynak belirtilmeli ]
  • ISO / IEC 9075-15: 2019 Bölüm 15: Çok boyutlu diziler (SQL / MDA). MD dizileri, MD-dizisi dilimleri, MD-dizisi hücreleri ve ilgili özellikler üzerindeki işlemlerin yanı sıra SQL için çok boyutlu bir dizi türü (MDarray) belirtir. Standardın bu bölümü yalnızca aşağıdakilerden oluşur: isteğe bağlı özellikleri.

ISO / IEC Standardına Uzantılar

ISO / IEC 9075, ISO / IEC 13249 ile tamamlanmaktadır SQL Multimedya ve Uygulama Paketleri. Bu yakından ilişkili ancak ayrı standart aynı komite tarafından geliştirilmiştir. SQL tabanlı arayüzleri ve paketleri tanımlar. Amaç, metin, resimler, veri madenciliği gibi tipik veritabanı uygulamalarına birleşik bir erişimdir. mekansal veri.

  • ISO / IEC 13249-1: 2016 Bölüm 1: Çerçeve
  • ISO / IEC 13249-2: 2003 Bölüm 2: Tam metin
  • ISO / IEC 13249-3: 2016 Bölüm 3: Mekansal
  • ISO / IEC 13249-5: 2003 Bölüm 5: Hareketsiz görüntü
  • ISO / IEC 13249-6: 2006 Bölüm 6: Veri madenciliği
  • ISO / IEC 13249-7: 2013 Bölüm 7: Tarih
  • ISO / IEC 13249-8: xxxx Bölüm 8: Meta Veri Kayıt Erişimi MRA (devam eden iş)

Teknik Raporlar

ISO / IEC 9075'e 8 kısım halinde ISO / IEC TR 19075 olarak yayınlanan bir dizi Teknik Rapor da eşlik etmektedir. Bu Teknik Raporlar, SQL'in bazı özelliklerinin gerekçesini ve kullanımını açıklayarak, uygun yerlerde örnekler verir. Teknik Raporlar normatif değildir; 9075'ten herhangi bir tutarsızlık varsa, 9075'teki metin geçerli olur. Halihazırda mevcut olan 19075 Teknik Raporları şunlardır:

  • ISO / IEC TR 19075-1: 2011 Bölüm 1: SQL'de XQuery Normal İfade Desteği
  • ISO / IEC TR 19075-2: 2015 Bölüm 2: Zamanla İlgili Bilgiler için SQL Desteği
  • ISO / IEC TR 19075-3: 2015 Bölüm 3: Java programlama dilini kullanan Programlara Gömülü SQL
  • ISO / IEC TR 19075-4: 2015 Bölüm 4: Rutinlerle SQL ve Java programlama dilini kullanan türler
  • ISO / IEC TR 19075-5: 2016 Bölüm 5: SQL'de Satır Modeli Tanıma
  • ISO / IEC TR 19075-6: 2017 Bölüm 6: JavaScript Nesne Gösterimi (JSON) için SQL desteği
  • ISO / IEC TR 19075-7: 2017 Bölüm 7: SQL'de polimorfik tablo fonksiyonları
  • ISO / IEC TR 19075-8: 2019 Bölüm 8: Çok Boyutlu Diziler (SQL / MDA)

Alternatifler

Dil olarak SQL'e alternatifler ile ilişkisel modelin kendisine alternatifler arasında bir ayrım yapılmalıdır. Aşağıda, SQL diline önerilen ilişkisel alternatifler verilmiştir. Görmek seyir veritabanı ve NoSQL ilişkisel modele alternatifler için.

Dağıtılmış SQL işleme

Dağıtılmış İlişkisel Veritabanı Mimarisi (DRDA) 1988-1994 döneminde IBM bünyesindeki bir çalışma grubu tarafından tasarlandı. DRDA, ağ bağlantılı ilişkisel veritabanlarının SQL isteklerini yerine getirmek için işbirliği yapmasını sağlar.[43][44]

Etkileşimli bir kullanıcı veya program, yerel bir RDB'ye SQL deyimleri yayınlayabilir ve uzak RDB'lerden yanıt olarak veri tabloları ve durum göstergeleri alabilir. SQL ifadeleri ayrıca paketler olarak uzak RDB'lerde derlenebilir ve depolanabilir ve ardından paket adıyla çağrılabilir. Bu, karmaşık, yüksek frekanslı sorgular veren uygulama programlarının verimli çalışması için önemlidir. Erişilecek tabloların uzak sistemlerde bulunması özellikle önemlidir.

DRDA'nın mesajları, protokolleri ve yapısal bileşenleri, Dağıtılmış Veri Yönetim Mimarisi.

Eleştiriler

Tasarım

SQL, teorik temeli olan ilişkisel model ve Onun demet hesabı. Bu modelde bir tablo bir Ayarlamak tuple sayısı, SQL'de ise tablolar ve sorgu sonuçları listeler satır sayısı: Aynı satır birden çok kez oluşabilir ve satırların sırası sorgularda kullanılabilir (örneğin LIMIT yan tümcesinde).

Eleştirmenler, SQL'in kesinlikle orijinal temele dönen bir dil ile değiştirilmesi gerektiğini savunuyorlar: örneğin, bkz. Üçüncü Manifesto. Ancak, böyle bir benzersizliğin SQL'e eklenemeyeceğine dair bilinen bir kanıt yoktur,[45] veya en azından bir SQL varyasyonu. Diğer bir deyişle, sektörün benzersizliği elde etmek için tamamen farklı bir sorgu diline geçmesine gerek kalmayacağı şekilde SQL'in "sabitlenmesi" veya en azından bu açıdan iyileştirilmesi oldukça olasıdır. Bununla ilgili tartışma hala açık.

Diğer eleştiriler

Chamberlin, 2012 tarihli bir makalede SQL'in dört tarihsel eleştirisini tartışıyor:[14]

Diklik ve tamlık

İlk belirtimler, birincil anahtarlar gibi ana özellikleri desteklemiyordu. Sonuç kümeleri adlandırılamadı ve alt sorgular tanımlanmadı. Bunlar 1992'de eklendi.[14]

Boş

Kavramı Boş bazılarının konusu tartışmalar. Null işaretçisi, bir tamsayı sütunu için 0 veya bir metin sütunu için 0 uzunluğunda bir dize olsa bile hiçbir değer olmadığını gösterir. Nulls kavramı, SQL'de 3 değerli mantık genelin somut bir uygulaması olan 3 değerli mantık.

Yinelenenler

Diğer bir popüler eleştiri, yinelenen satırlara izin vermesi ve aşağıdaki gibi dillerle entegrasyon sağlamasıdır. Python, veri türleri verileri doğru bir şekilde temsil etmeyi zorlaştırabilecek,[14] ayrıştırma açısından zor ve modülerliğin olmaması.[46]

Bu, tablodaki bir satırı benzersiz şekilde tanımlayan bir veya daha fazla alanla benzersiz bir kısıtlama bildirmekten kaçınılabilir. Bu kısıtlama aynı zamanda tablonun birincil anahtarı olabilir.

Empedans uyumsuzluğu

Benzer anlamda Nesne-ilişkisel empedans uyumsuzluğu, bildirim temelli SQL dili ile SQL'in tipik olarak gömülü olduğu yordamsal diller arasında bir uyumsuzluk vardır.

Veri Bütünlüğü Kategorileri

Her RDBMS'nin ana veri bütünlüğü kategorileri.

Varlık bütünlüğü

Tabloda birincil anahtarın her satır için benzersiz bir değere sahip olduğunu belirler ve bir tabloda yinelenen satırlar olmasını önleyerek birincil anahtarın değerinin benzersizliğini kontrol eder.

Etki alanı bütünlüğü

Tablodaki bir sütun için geçerli girişlere uygulanan türü, biçimi ve değer aralığını kısıtlar

Bilgi tutarlılığı

Diğer kayıtlar tarafından kullanılan bir tablodaki satırların silinmesini imkansız hale getirir

Kullanıcı tanımlı bütünlük

Yukarıda yer almayan diğer özel kurallar geçerlidir

SQL veri türleri

SQL standardı üç tür veri türünü tanımlar:

  • önceden tanımlanmış veri türleri
  • inşa edilmiş tipler
  • kullanıcı tanımlı türler.

Önceden tanımlanmış veri türleri

  • Karakter Tipleri
  • Karakter (CHAR)
  • Karakter Değişimi (VARCHAR)
  • Karakter Büyük Nesne (CLOB)
  • İkili Türler
  • İkili (İKİLİ)
  • İkili Değişken (VARBINARY)
  • İkili Büyük Nesne (BLOB)
  • Sayısal Türler
  • Tam Sayısal Türler (NUMERIC, DECIMAL, SMALLINT, INTEGER, BIGINT)
  • Yaklaşık Sayısal Tipler (FLOAT, REAL, DOUBLE HASSAS)
  • Tarih ve Saat Türleri (DATE, TIME, TIMESTAMP)
  • Aralık Türü (INTERVAL)
  • Boole
  • XML
  • JSON

Oluşturulan tipler

Oluşturulan tipler ARRAY, MULTISET, REF (erence) veya ROW değerlerinden biridir.
Kullanıcı tanımlı türler kendi kurucuları, gözlemcileri, değiştiricileri, yöntemleri, kalıtım, aşırı yükleme, üzerine yazma, arayüzler vb. ile nesne yönelimli dildeki sınıflarla karşılaştırılabilir.

Ayrıca bakınız

Notlar

  1. ^ Resmi olarak, "SQL-veri" ifadeleri hariç "SQL veri değişikliği" ifadeleri; bu öncelikle Seçiniz Beyan.
  2. ^ Resmi olarak, "SQL şeması" ifadeleri.
  3. ^ Resmi olarak, "SQL veri değişikliği" ifadeleri

Referanslar

  1. ^ Paul, Ryan. "Microsoft Komut Kabuğu'nun rehberli turu". Ars Technica. Alındı 10 Nisan 2011.
  2. ^ "Uygulama / sql için Ortam Türü kaydı". İnternette Atanan Numaralar Kurumu. 10 Nisan 2013. Alındı 10 Nisan 2013.
  3. ^ "Uygulama / sql Medya Türü, RFC 6922". İnternet Mühendisliği Görev Gücü. Nisan 2013. s. 3. Alındı 10 Nisan 2013.
  4. ^ Beaulieu Alan (Nisan 2009). Mary E Treseler (ed.). SQL öğrenmek (2. baskı). Sebastopol, CA, ABD: O'Reilly. ISBN  978-0-596-52083-0.
  5. ^ "SQL". Britannica.com. Alındı 2013-04-02.
  6. ^ "SQL". Oxforddictionaries.com. Alındı 2017-01-16.
  7. ^ "Yapılandırılmış Sorgu Dili (SQL)". Msdn.microsoft.com. Alındı 2017-01-16.
  8. ^ SQL-92, 4.22 SQL ifadeleri, 4.22.1 SQL ifadelerinin sınıfları "SQL ifadelerini sınıflandırmanın en az beş yolu vardır:", 4.22.2, işleve göre sınıflandırılan SQL ifadeleri "Aşağıdakiler, SQL ifadelerinin ana sınıflarıdır: "; SQL: 2003 4.11 SQL ifadeleri ve sonraki revizyonlar.
  9. ^ Chatham Mark (2012). Örneğe Göre Yapılandırılmış Sorgu Dili - Cilt I: Veri Sorgulama Dili. s.8. ISBN  978-1-29119951-2.
  10. ^ Codd, Edgar F. (Haziran 1970). "Büyük Paylaşılan Veri Bankaları için İlişkisel Veri Modeli". ACM'nin iletişimi. 13 (6): 377–87. CiteSeerX  10.1.1.88.646. doi:10.1145/362384.362685.
  11. ^ a b Chapple, Mike. "SQL Temelleri". Veritabanları. About.com. Alındı 2009-01-28.
  12. ^ "Yapılandırılmış Sorgu Dili (SQL)". Uluslararası İş Makineleri. 27 Ekim 2006. Alındı 2007-06-10.
  13. ^ a b "ISO 9075: 1987: Bilgi teknolojisi - Veritabanı dilleri - SQL - Bölüm 1: Çerçeve (SQL / Çerçeve)". 1987-06-01.
  14. ^ a b c d e f Chamberlin Donald (2012). "SQL'in Erken Tarihi". IEEE Bilişim Tarihinin Yıllıkları. 34 (4): 78–82. doi:10.1109 / MAHC.2012.61.
  15. ^ a b c Chamberlin, Donald D; Boyce, Raymond F (1974). "SEQUEL: Yapılandırılmış İngilizce Sorgu Dili" (PDF). Veri Tanımlama, Erişim ve Kontrol üzerine 1974 ACM SIGFIDET Çalıştayı Bildirileri. Bilgi İşlem Makinaları Derneği: 249–64. Arşivlenen orijinal (PDF) 2007-09-26 tarihinde. Alındı 2007-06-09.
  16. ^ a b Oppel, Andy (27 Şubat 2004). Veritabanları Sade. San Francisco, CA: McGraw-Hill Osborne Medya. s. 90–1. ISBN  978-0-07-146960-9.
  17. ^ "IBM'in Tarihi, 1978". IBM Arşivleri. IBM. Alındı 2007-06-09.
  18. ^ ANSI / ISO / IEC Uluslararası Standardı (IS). Veritabanı Dili SQL — Bölüm 2: Temel (SQL / Temel). 1999.
  19. ^ "IBM PureData System for Analytics, Sürüm 7.0.3".
  20. ^ "Invantive Procedural SQL".
  21. ^ "PROSEDÜR OLUŞTURMA". MariaDB KnowledgeBase. Alındı 2019-04-23.
  22. ^ PostgreSQL katkıda bulunanlar (2011). "PostgreSQL sunucu programlama". PostgreSQL 9.1 resmi belgeleri. postgresql.org. Alındı 2012-03-09.
  23. ^ PostgreSQL katkıda bulunanlar (2012). "PostgreSQL Hakkında". PostgreSQL 9.1 resmi web sitesi. PostgreSQL Küresel Geliştirme Grubu. Alındı 9 Mart 2012. PostgreSQL, standartlara uyumluluktan gurur duyar. SQL uygulaması ANSI-SQL: 2008 standardına büyük ölçüde uygundur
  24. ^ "Mimer SQL, Standartlar Üzerine Oluşturuldu". Mimer SQL resmi web sitesi. Mimer Bilgi Teknolojisi. 2009.
  25. ^ "4.1. Sözcüksel Yapı". PostgreSQL belgeleri. 2018.
  26. ^ "(İkinci Resmi Olmayan İnceleme Taslağı) ISO / IEC 9075: 1992, Veritabanı Dili SQL, Bölüm 5.2, sözdizimi kuralı 11". 30 Temmuz 1992.
  27. ^ Lorentz, Diana; Roeser, Mary Beth; Abraham, Sundeep; Amor, Angela; Arora, Geeta; Arora, Vikas; Ashdown, Lance; Baer, ​​Hermann; Bellamkonda, Shrikanth (Ekim 2010) [1996]. "Oracle SQL'in Temel Öğeleri: Veri Türleri". Oracle Database SQL Language Reference 11g Sürüm 2 (11.2). Oracle Veritabanı Dokümantasyon Kitaplığı. Redwood Şehri, CA: Oracle USA, Inc. Alındı 29 Aralık 2010. Her biri için TARİH Oracle şu bilgileri saklar: yüzyıl, yıl, ay, tarih, saat, dakika ve saniye
  28. ^ Lorentz, Diana; Roeser, Mary Beth; Abraham, Sundeep; Amor, Angela; Arora, Geeta; Arora, Vikas; Ashdown, Lance; Baer, ​​Hermann; Bellamkonda, Shrikanth (Ekim 2010) [1996]. "Oracle SQL'in Temel Öğeleri: Veri Türleri". Oracle Database SQL Language Reference 11g Sürüm 2 (11.2). Oracle Veritabanı Dokümantasyon Kitaplığı. Redwood Şehri, CA: Oracle USA, Inc. Alındı 29 Aralık 2010. Tarih ve saat veri türleri TARİH...
  29. ^ Lorentz, Diana; Roeser, Mary Beth; Abraham, Sundeep; Amor, Angela; Arora, Geeta; Arora, Vikas; Ashdown, Lance; Baer, ​​Hermann; Bellamkonda, Shrikanth (Ekim 2010) [1996]. "Oracle SQL'in Temel Öğeleri: Veri Türleri". Oracle Database SQL Language Reference 11g Sürüm 2 (11.2). Oracle Veritabanı Dokümantasyon Kitaplığı. Redwood Şehri, CA: Oracle USA, Inc. Alındı 29 Aralık 2010. Sütunları aşağıdaki SQL / DS ve DB2 veri türleriyle tanımlamayın çünkü bunların karşılık gelen Oracle veri türü yoktur: ... ZAMAN
  30. ^ "Yardım Bulma". X3H2 Kayıtları, 1978–95. Amerikan Ulusal Standartlar Enstitüsü.
  31. ^ Doll, Shelley (19 Haziran 2002). "SQL Artık Standart mı?". TechRepublic's Builder.com. TechRepublic. Arşivlenen orijinal 2012-07-05 tarihinde. Alındı 2016-04-12.
  32. ^ a b Gillespie, Patrick. "SQL'i telaffuz etmek: S-Q-L veya Sequel?". Alındı 12 Şubat 2012.
  33. ^ Melton, Jim; Alan R Simon (1993). "1.2. SQL nedir?". Yeni SQL'i Anlamak: Tam Bir Kılavuz. Morgan Kaufmann. s.536. ISBN  978-1-55860-245-8. SQL (biraz yaygın olan "netice" yerine "ess cue ell" doğru telaffuz edilir) ...
  34. ^ a b Wagner, Michael (2010). SQL / XML: 2006 - Evaluierung der Standardkonformität ausgewählter Datenbanksysteme. Diplomica Verlag. s. 100. ISBN  978-3-8366-9609-8.
  35. ^ "SQL: 2008 artık onaylanmış bir ISO uluslararası standardı". Sybase. Temmuz 2008. Arşivlenen orijinal 2011-06-28 tarihinde.
  36. ^ Krishna Kulkarni, Jan-Eike Michels (Eylül 2012). "SQL'deki zamansal özellikler: 2011" (PDF). SIGMOD Kaydı. 41 (3).
  37. ^ Fred Zemke (2012). "SQL'deki yenilikler: 2011" (PDF). Oracle Corporation.
  38. ^ "ISO / IEC 9075-2: 2016: Bilgi teknolojisi - Veritabanı dilleri - SQL - Bölüm 2: Temel (SQL / Temel)". Aralık 2016.
  39. ^ SQL: 2008 taslağı (Zip), Whitemarsh Bilgi Sistemleri Şirketi
  40. ^ "ISO / IEC 9075-1: 2016: Bilgi teknolojisi - Veritabanı dilleri - SQL - Bölüm 1: Çerçeve (SQL / Çerçeve)".
  41. ^ ISO / IEC 9075-11: 2008: Bilgi ve Tanım Şemaları (SQL / Schemata)
  42. ^ Fernando Saenz-Perez. "Tümdengelimli Veritabanı Sisteminde Dış Birleşimler" (PDF). Lbd.udc.es. Alındı 2017-01-16.
  43. ^ Reinsch, R. (1988). "SAA için dağıtılmış veritabanı". IBM Systems Journal. 27 (3): 362–389. doi:10.1147 / sj.273.0362.
  44. ^ Dağıtılmış İlişkisel Veritabanı Mimarisi Referansı. IBM Corp. SC26-4651-0. 1990.
  45. ^ "Khan Academy | Ücretsiz Çevrimiçi Kurslar, Dersler ve Uygulama". Khan Academy. Alındı 2020-05-29.
  46. ^ Schauder, Jen. "Neden SQL Berbat". Schauderhaft. Alındı 3 Şubat 2018.

Kaynaklar

SQL standartları belgeleri

ITTF halka açık standartlar ve teknik raporlar

ISO /IEC Bilgi Teknolojisi Görev Gücü yayınlar halka açık standartlar SQL dahil. Teknik Düzeltmeler (düzeltmeler) ve Teknik Raporlar (tartışma belgeleri) burada yayınlanır.

SQL - Bölüm 1: Çerçeve (SQL / Çerçeve)

Taslak belgeler

Resmi SQL standartları şu adresten edinilebilir: ISO ve ANSI bir ücret karşılığında. Bilgilendirici kullanım için, katı standartlara uyumun aksine, geç taslaklar genellikle yeterlidir.

Dış bağlantılar