• SQL: veritabanlarıyla çalışmak için evrensel bir dil. SQL "aptallar için": yeni başlayanların bilmesi gerekenler

    Söyleyebileceğiniz çeviri:

    Bu makale size SQL dilinin yapısını ve ayrıca alanların içerebileceği veri türleri ve SQL'de var olan bazı belirsizlikler gibi bazı genel kavramları tanıtmaktadır. Bu yazıda bahsedilen her detayı ezberlemek zorunda değilsiniz. Sadece burada kısa inceleme; pek çok ayrıntı, dilde ustalaştıkça daha sonra başvurmak üzere verilmiştir.

    SQL nasıl çalışır?

    SQL, özellikle ilişkisel veritabanlarına (RDB'ler) odaklanan bir dildir. O gerçekleştirir iyi iş C gibi genel bir programlama dili kullanıyorsanız bunu yapmanız gerekir. Bir C RDB oluşturmak için sıfırdan başlamanız gerekir. Herhangi bir sayıda satıra sahip olacak şekilde büyüyebilecek tablo adı verilen bir nesne tanımlamanız ve ardından değerleri eklemek ve almak için aşamalı olarak prosedürler oluşturmanız gerekir.

    Bazı belirli dizeleri bulmak istiyorsanız, aşağıdaki gibi bir prosedür uygulamanız gerekir:

    • Bir tablo satırı düşünün.
    • Bu dizenin ihtiyacınız olan dizelerden biri olup olmadığını kontrol edin.
    • Eğer öyleyse, tablonun tamamı kontrol edilene kadar bir yere kaydedin.
    • Tabloda başka satır olup olmadığını kontrol edin.
    • Evet ise, 1. adıma dönün.
    • Başka satır yoksa, 3. adımda saklanan tüm değerlerin çıktısını alın.

    (Elbette bu gerçek bir C komutları dizisi değil, sadece içinde yer alması gereken adımların mantığıdır. gerçek program.) SQL tüm bunları sizin için yapacak. SQL'deki komutlar, tüm tablo gruplarında tek bir varlık olarak çalışabilir ve bunlardan alınan veya türetilen herhangi bir miktarda bilgiyi tek bir birim olarak işleyebilir.

    ANSI ne yapar?

    Giriş bölümünde de söylediğimiz gibi, SQL standardı ANSI (Amerikan Ulusal Standartlar Enstitüsü) kodu kullanılarak tanımlanır. SQL, ANSI tarafından icat edilmedi. Bu aslında bir IBM icadıdır. Ancak diğer şirketler SQL'i hemen benimsedi. En az bir şirket (Oracle), SQL ürünlerini IBM'den pazarlama hakkını gasp etti.

    Piyasada bir dizi rakip SQL programı ortaya çıktıktan sonra ANSI, bunların getirilmesi gereken standardı belirledi. (Bu tür standartların tanımı ANSI'nin işlevidir). Ancak sonrasında bazı sorunlar ortaya çıktı. ANSI standardizasyonunun bir sonucu olarak bazı kısıtlamalar şeklinde ortaya çıktılar. ANSI her zaman neyin en yararlı olduğunu tanımlamadığından, programlar ANSI standardına uymaya çalışır ve onu çok fazla kısıtlamasına izin vermez. Bu da rastgele tutarsızlıklara yol açar. Veritabanı programları genellikle ANSI SQL verir Ek özellikler ve genellikle birçok kısıtlamayı gevşetir. Bu nedenle, yaygın ANSI çeşitleri de dikkate alınacaktır. Her istisnayı veya varyasyonu açık bir şekilde ele alamasak da, ANSI standardı tarafından tanımlanmasalar bile iyi fikirler benimsenme ve farklı programlarda kullanılma eğilimindedir. ANSI bir tür minimum standarttır ve tanımladığı görevleri yerine getirmek için talimatlarını izlemeniz gerekmesine rağmen izin verdiğinden daha fazlasını yapabilirsiniz.

    Etkileşimli ve İç İçe SQL

    İki SQL vardır: Etkileşimli ve İç İçe. Çoğunlukla, her iki form da aynı şekilde çalışır, ancak farklı şekilde kullanılır. Etkileşimli SQL, müşterisi tarafından kullanılmak üzere çıktı üretmek için doğrudan veritabanı üzerinde çalışmak için kullanılır. Bu SQL'de - bir komut girdiğinizde, hemen yürütülür ve çıktıyı (varsa) hemen görebilirsiniz.

    İç içe SQL, genellikle başka bir dilde (COBOL veya PASCAL gibi) yazılmış programların içine yerleştirilmiş SQL ifadelerinden oluşur. Bu, bu tür programları daha güçlü ve verimli hale getirir.

    Ancak, bu dillere izin verilmesi, kişinin uğraşması gereken SQL yapısı ve bazı etkileşimli SQL uzantıları gerektiren bir veri yönetimi stili. SQL komutlarının iç içe SQL'e iletilmesi, iç içe oldukları program tarafından kullanılan değişkenler veya parametreler için "geçilir".

    Bu kitapta SQL'i interaktif bir şekilde sunacağız. Bu, diğer dillerle nasıl arayüz oluşturdukları konusunda endişelenmeden komutları ve eylemlerini tartışmamızı sağlayacaktır. Etkileşimli SQL, programcı olmayanlar için en kullanışlı biçimdir. Etkileşimli SQL hakkında öğrendiğiniz her şey temel olarak iç içe geçmiş bir form için geçerlidir. Yuvalanmış formu kullanmak için gereken değişiklikler bu kitabın son bölümünde ele alınacaktır.

    SQL alt bölümleri

    Hem etkileşimli hem de iç içe SQL formlarında çok sayıda bölüm veya alt bölüm vardır. SQL okurken bu terminolojiyle karşılaşmanız muhtemel olduğundan, biraz açıklama yapacağız. Ne yazık ki, bu terimler tüm uygulamalarda evrensel olarak kullanılmamaktadır. ANSI tarafından belirlenirler ve kavramsal düzeyde kullanışlıdırlar, ancak çoğu SQL programı bunları neredeyse hiç ayrı ele almaz, bu nedenle esasen SQL komutlarının işlevsel kategorileri haline gelirler.

    • ANSI'deki Şema Açıklama Dili olarak adlandırılan DDL (Veri Tanımlama Dili) bir veritabanında nesneler (tablolar, dizinler, görünümler vb.) oluşturan komutlardan oluşur.
    • DML (Veri Manipülasyon Dili), herhangi bir zamanda tablolarda hangi değerlerin bulunduğunu belirleyen bir dizi komuttur.
    • DCD (Veri Kontrol Dili), kullanıcının belirli eylemleri gerçekleştirmesine izin verilip verilmeyeceğini belirleyen olanaklardan oluşur. Bunlar oluşturan parçalar DDL'den ANSI'ye.

    Bu isimleri unutmayın. Değil çeşitli diller ve işlevlerine göre gruplandırılmış SQL komutlarının bölümleri.

    Çeşitli veri türleri

    Bir tablonun alanlarında olabilecek tüm değer türleri mantıksal olarak aynı değildir. En belirgin fark, sayılar ve metin arasındaki farktır. Numaraları alfabetik sıraya koyamaz veya bir ismi diğerinden çıkaramazsınız.

    RDB sistemleri bilgi parçaları arasındaki ilişkilere dayandığından, farklı veri türlerinin kendi içlerinde uygun süreçlerin ve karşılaştırmaların yapılabilmesi için birbirinden farklı olması gerekir. SQL'de bu, her alana, o alanın içerebileceği değer türünü gösteren bir veri türü atayarak yapılır. Bu alandaki tüm değerler aynı tipte olmalıdır. Örneğin, Müşteriler tablosunda cname ve city değerlendirilecek metin dizeleri içerir ve snum ve cnum sayılardır. Bu nedenle sayısal veri türü olan derecelendirme alanına En yüksek değer veya Yok değeri giremezsiniz. Verilerinize bir yapı dayattığı için bu kısıtlama iyidir. Sıklıkla belirli bir alandaki değerlerin bir kısmını veya tamamını karşılaştırıyor olacaksınız, bu nedenle tümü için değil, yalnızca belirli satırlar üzerinde bir işlem gerçekleştirmek isteyebilirsiniz. Alan değerleri karışık veri türündeyse bunu yapamazsınız.

    Ne yazık ki, bu veri türlerinin tanımı, çoğu ticari veritabanı programının ve resmi SQL standardının her zaman eşleşmediği önemli bir alandır. ANSI SQL standardı yalnızca metin ve sayıları tanırken çoğu ticari program diğer özel türleri kullanır. VERİ (TARİH) ve ZAMAN (ZAMAN) gibi - aslında neredeyse standart türler (tam biçimleri değişse de). Bazı paketler ayrıca MONEY ve BINARY gibi türleri de destekler. (PARA, bilgisayarlar tarafından kullanılan özel bir "para birimi" sistemidir.)

    Bir bilgisayardaki tüm bilgiler ikili sayılar halinde iletilir ve daha sonra diğer sistemlere dönüştürülür, böylece onları kolayca kullanabilir ve anlayabiliriz.

    ANSI birkaç tanımlar sayısal türler, aralarındaki farklar oldukça ince ve bazen kafa karıştırıcı. İzin verilen ANSI veri türleri Ek B'de listelenmiştir. ANSI sayısal türlerinin karmaşıklığı, en azından kısmen, iç içe geçmiş SQL'i bir dizi başka dille uyumlu hale getirme çabasıyla açıklanabilir. İki ANSI sayı türü, INTEGER ve DECIMAL (sırasıyla INT ve DEC olarak kısaltılabilirler), bizim amaçlarımız ve en pratik iş uygulamalarının amaçları için yeterli olacaktır. Doğal olarak, INTEGER tipi, ondalık noktanın sağında herhangi bir basamak içermeyen bir ONDALIK SAYI olarak temsil edilebilir.

    Metin türü, bir metin satırına atıfta bulunan CHAR (veya CHAR) şeklindedir. Alan CHAR türü bu alana girilebilecek maksimum karakter sayısına göre belirlenen bir uzunluğa sahiptir. Çoğu uygulamada ayrıca, bir metin dizesi olan ve uygulama tanımlı bir maksimum değere (genellikle 254 karakter) kadar herhangi bir uzunlukta olabilen VARCHAR adında standart olmayan bir tür bulunur. CHARACTER ve VARCHAR değerleri "metin" olarak tek tırnak içinde yer alır. CHAR ve VARCHAR arasındaki fark, CHAR'ın aşağıdakiler için yeterli bellek ayırması gerektiğidir: maksimum uzunluk dizeleri ve VARCHAR gerektiği gibi bellek ayırır.

    Karakter türleri, sayılar dahil tüm yazdırılabilir karakterlerden oluşur. Ancak 1 rakamı "1" karakteri ile aynı değildir. "1" karakteri, sistem tarafından 1 sayısal değeri olarak tanımlanmayan yalnızca basılı bir metin parçasıdır. Örneğin, 1 + 1 = 2, ancak "1" + "1", "2" ye eşit değildir. Karakter değerleri bilgisayarda ikili değerler olarak saklanır, ancak kullanıcıya basılı metin olarak gösterilir.

    Kullanmakta olduğunuz sistemin belirlediği formata göre dönüştürme işlemi gerçekleştirilir. Bu dönüştürme biçimi, bilgisayar sistemlerinde kullanılan iki standart türden (muhtemelen uzantılarla birlikte) biri olacaktır: ASCII kodu (tüm kişisel ve küçük bilgisayarlarda kullanılır) ve EBCDIC (Extended Binary Decimal Code of Information Interchange) kodu (bilgi alışverişinde kullanılır) büyük bilgisayarlar). Alan değerlerinin alfabetik olarak sıralanması gibi belirli işlemler biçimle birlikte değişecektir.

    DATE tipinin kullanımında ANSI değil piyasayı takip etmeliyiz. (TARİH türünü tanımayan bir sistemde, tarihi elbette bir karakter veya sayısal alan olarak bildirebilirsiniz, ancak bu çoğu işlemi daha fazla zaman alıcı hale getirecektir.)

    Tam olarak hangi veri türlerini desteklediğini öğrenmek için kullanacağınız yazılım paketinin belgelerini gözden geçirmelisiniz.

    SQL. tutarsızlıklar

    SQL dünyasında ürünler arasında ayrı ayrı tutarsızlıklar olduğunu yukarıdaki tartışmadan anlayabilirsiniz. SQL, ticari veritabanı dünyasından bir araç olarak ortaya çıktı ve daha sonra ANSI standardı olarak geliştirildi. Ne yazık ki, ANSI her zaman neyin en yararlı olduğunu tanımlamaz, bu nedenle programlar ANSI standardına uymaya çalışır, ancak ANSI'nin onları çok fazla sınırlamasına izin vermez. ANSI bir tür minimum standarttır - izin verdiğinden daha fazlasını yapabilirsiniz, ancak aynı görevde aynı sonuçları alabilmeniz gerekir.

    "KULLANICI" NEDİR?

    SQL genellikle birden fazla kullanıcısı olan bilgisayar sistemlerinde bulunur ve bu nedenle aralarında ayrım yapması gerekir (PC ailenizin herhangi bir sayıda kullanıcısı olabilir, ancak genellikle bir kullanıcıyı diğerinden ayırt edecek bir yolu yoktur).

    Tipik olarak, böyle bir sistemde, her kullanıcının kendisini tanımlayan bir tür hak kontrol kodu vardır (terminoloji değişir). Bir bilgisayarla oturumun başlangıcında, bir kullanıcı, kendisini belirli bir ID (Tanımlayıcı) ile tanımlayarak bilgisayara kullanıcının kim olduğunu söyleyerek oturum açar (kayıt olur). Erişim Kimliği kullanan herhangi bir sayıda kişi, bireysel kullanıcılardır; ve benzer şekilde, bir kişi temsil edebilir çok sayıda farklı SQL erişim kimlikleri kullanan kullanıcılar (farklı zamanlarda). Çoğu SQL ortamındaki eylemler, belirli bir kullanıcıyla tam olarak eşleşen özel bir Erişim Kimliğine aktarılır. Bir tablo veya başka bir nesne, üzerinde tam yetkiye sahip olan bir kullanıcıya aittir. Kullanıcı, nesne üzerinde bir eylem gerçekleştirme ayrıcalığına sahip olabilir veya olmayabilir. Amaçlarımız doğrultusunda, Bölüm 22'deki ayrıcalıklar tartışmasına özel olarak dönene kadar herhangi bir kullanıcının herhangi bir eylemi gerçekleştirmek için gerekli ayrıcalıklara sahip olduğunu kabul edeceğiz. USER özel değeri, bir komutta bağımsız değişken olarak kullanılabilir. Komutu veren kullanıcının mevcut kimliğini gösterir.

    Sözleşmeler ve terminoloji

    Anahtar kelimeler, SQL'de özel bir anlamı olan kelimelerdir. Komut olabilirler, ancak metin veya nesne adları olamazlar. Anahtar kelimeleri BÜYÜK HARFLERLE yazarak vurgulayacağız. Anahtar kelimeleri terimlerle karıştırmamaya dikkat etmelisiniz.

    SQL, onu tanımlamak için kullanılan belirli teknik terimlere sahiptir. Bunlar arasında dilin tanımlanmasında ve anlaşılmasında en önemli olan ancak SQL için bağımsız bir şey ifade etmeyen "istek", "teklif" ve "yüklem" gibi kelimeler vardır.

    Komutlar veya cümleler, bir SQL veritabanına erişmek için kullandığınız talimatlardır.

    Komutlar, cümle adı verilen bir veya daha fazla ayrı mantıksal parçadan oluşur.

    Cümleler bir anahtar kelime ile başlar ve şunlardan oluşur: anahtar kelimeler ve argümanlar. Örneğin, karşılaşabileceğiniz cümleler "FROM Salespeope" ve "WHERE city = "London"" şeklindedir. Argümanlar bir cümlenin anlamını tamamlar veya değiştirir. Yukarıdaki örneklerde, FROM yan tümcesinin bağımsız değişkeni Salespeople ve anahtar sözcüğü FROM'dur. Benzer şekilde, "şehir = "Londra"", WHERE yan tümcesinin bağımsız değişkenidir.

    Nesneler, adları verilen ve bellekte saklanan veritabanı yapılarıdır. Buna temel tablolar, görünümler ve dizinler dahildir.

    Takımların nasıl oluştuğunu göstermek için örneklerle yapacağız. Bununla birlikte, komutları açıklamak için standartlaştırılmış bir yöntem kullanan daha resmi bir yöntem vardır. sözleşmeler. Bunu daha sonraki bölümlerde kolaylık sağlamak için kullanacağız, böylece diğer SQL belgelerinde bunlara rastlarsanız bu kuralları anlayabilirsiniz.

    Köşeli parantezler () kullanılamayan kısımları, üç nokta (...) ise onlardan önceki her şeyin istenildiği kadar tekrarlanabileceğini gösterir. kelimeler açılı ayraçlar() ne olduklarını açıklayan özel terimlerdir. Standart SQL terminolojisini, anlayışından ödün vermeden büyük ölçüde basitleştirdik.

    Özet

    Bu bölümde kısaca temel bilgileri ele aldık. Ancak niyetimiz, tüm bilgileri kapsayabilmeniz için SQL'in temellerini gözden geçirmekti.

    Artık SQL hakkında birkaç şey biliyorsunuz: yapısı nedir, nasıl kullanılır, verileri nasıl temsil eder ve nasıl tanımlanır (ve beraberinde gelen bazı tutarsızlıklar), onları tanımlamak için kullanılan bazı kurallar ve terimler . Bütün bunlar bir bölüm için çok fazla bilgi; tüm bu ayrıntıları hatırlamanızı beklemiyoruz, ancak ihtiyacınız olursa daha sonra tekrar başvurabilirsiniz.

    SQL yapılandırılmış bir sorgulama dilidir. SQL, veritabanları olmadan olmaz - içine program yazamazsınız ve bu anlamda PHP gibi bir programlama dili değildir, ancak belirli bir DBMS ile uğraşmanız gerektiğinde, SQL bilgisi olmadan yapamazsınız. Üzerine basit sorgular yazabilir veya birkaç karmaşık sorgudan oluşan büyük işlemleri gerçekleştirebilirsiniz. Bir SQL sorgusu, bir veritabanına yönelik bir tür komuttur. Böyle bir komut, belirli kriterleri karşılayan bilgilerin iadesini talep edebilir veya herhangi bir kaydın kaldırılması talimatını verebilir vb. SQL komutu basit dize, Örneğin:

    SEÇİN * Personelden NEREDE departman

    SQL sorguları genellikle İngilizce'deki basit bir ifadeye yakındır. Yukarıdaki komut aşağıdaki gibi Rusça'ya çevrilebilir.

    Personelden TÜMÜNÜ SEÇ WHERE clwjiertme"

    Oldukça anlaşılır bir ekip, sadece İngilizce olarak kaydedilmesi üzücü. Böyle bir sorgunun yürütülmesinin bir sonucu olarak, VTYS Personel tablosundaki kalkış* Mit_id alanının üçe eşit olduğu tüm kayıtları döndürür. Örneğimizde, bu sorgu aslında tüm çalışan tabanından yalnızca programcıları seçer.

    Daha önce bir DBMS ile çalışmadıysanız, makul bir sorunuz olabilir: nerede ve nasıl performans gösterebilirsiniz? verilen istek? SQL sorgularını yürütmenin üç yolu vardır.

    1. VTYS ile etkileşim için etkileşimli ortam. Çoğu DBMS sunucusu için, çalışma ortamında SQL sorguları yazabileceğiniz, çalıştırabileceğiniz ve sonucu alabileceğiniz istemci programları (yerleşik veya üçüncü taraflarca sağlanan) vardır. Tipik olarak, bu tür araçlar veritabanı yöneticileri tarafından kullanılır ve doğrudan PHP programlama ile ilgili değildir. MySQL istemci programına bir örnek, MySQL Yönetici programı (http: /www.mysgl.coin/ product-s/administratoT/) veya çok popüler PHP sistemi phpMyAdmin'dir (http: / /www.phpmyadi'ln.r»et /itumjiage/index.php). Başlamak için, bir konsol arabirimine sahip önceden kurulmuş bir dağıtım kiti yeterli olacaktır. Linux'ta ihtiyacınız olan Komut satırı SQL sorgularına girme daveti içeren bir pencere açmak için mysql komutunu yazın ve Windows'ta aynı arayüzü başlatmak için mysql dosyasını çalıştırmanız gerekir. bin dizininden exe.

    2. Statik SQL sorguları. Tipik olarak, bu tür sorgular veritabanlarının kendilerinde saklı yordamların içine yazılır veya uygulamaların kendilerine fiziksel olarak bağlanır. Statik bir SQL sorgusu önceden tanımlanmıştır ve yalnızca program veya saklı yordam kodu el ile yeniden yazılırsa değişir. PHP'den, böyle bir SQL sorgusu, daha sonra tartışılacak olan özel işlevler kullanılarak yürütülür.

    3. Dinamik SQL sorguları. İLE bu tür Bu tür istekler, uygulama yazarken tam olarak tanımlanamaz. i "örnek, bir çalışanın listesini almak için bir program yazarken" mt işletmenin farklı departmanları, programcının bilmediği, ci "> şirketin departmanları olacağı ve bunlara hangi çalışanların dahil edileceği hakkında i „. Of Elbette bu veriler programa katı bir şekilde yazılabilir ancak şirketin yapısındaki ilk değişiklikle birlikte program atılabilir veya yeniden yazılması gerekebilir. Dinamik sorgular, veri değişikliklerine esnek programlar oluşturmanıza olanak tanır. .PHP'de, bu tür sorgular, statik olanlarla hemen hemen aynı işlevlerle gerçekleştirilir, yalnızca içlerinde '^in'> Bazı parametrelerin iletilmesi mümkün değildir.

    Yukarıdaki üç noktanın bir özeti olarak, SQL sorgularının özel yönetim programlarından veya çeşitli şekillerde PHP betiklerinden yürütüldüğünü söyleyebiliriz.

    DBMS birçok sorunu çözdüğü için, SQL'in de çok işlevli bir dil olması gerekir. yapılabilecek birkaç işlem türü vardır.< \ ществлять с помощью SQL.

    1. Veritabanı yapısının belirlenmesi. Bu tür, tabloları ve dizinleri oluşturan ve değiştiren sorguları içerir. Genellikle bunlar CRE komutlarıdır; "E TA' LE, ALI'R TA' LE, ' ” '. TE DİZİNİ vb.

    2. Veri manipülasyonu. Bu tür, tablolara veri ekleme (move*ve> leni), silme veya değiştirme isteklerini içerir. Bunlar üç ana komuttur: INSERT. SİL VE GÜNCELLE.

    3. Veri seçimi Bu, yalnızca bir SELECT deyimi içerir. Verilerin kendisinde değişiklik yapmaz, ancak bunları veritabanından almanıza izin verir. Verileri almak için yalnızca bir komut kullanılmasına rağmen, çok güçlüdür ve uygulamalarda çok sık kullanılır.

    4. VTYS sunucusunun yönetimi. Bu tür, esas olarak kullanıcıları ve erişim haklarını yönetme isteklerini içerir (örneğin, GRANT komutu).

    İyi bir SQL bilgisi, bir programcının bir veritabanıyla çalışırken işini büyük ölçüde kolaylaştırır. Uygulamalar küçük olabilir, ancak yalnızca SQL'in birçok görevi üstleneceği gerçeği nedeniyle harika işlevselliğe sahip olabilir.

    BT'nin diğer herhangi bir alanında olduğu gibi, SQL'de de standartlar vardır - bu ANSI SQL'dir. ANSI kısaltması, Amrican Ulusal Standartlar Enstitüsü'nün (Amerikan Ulusal Standartlar Enstitüsü) kısaltmasıdır. Bununla birlikte, en azından DBMS'nin kendi işlevselliklerindeki farklılık nedeniyle, SQL'in farklı uygulamalar için uygulanması

    Yine de DBMS birbirinden farklıdır. Şu anda, hemen hemen her DBMS'nin, genellikle genel standarttan çok farklı olmayan, ancak kendi özelliklerine sahip olan kendi lehçesi vardır. Örneğin, PL/SQL, Oracle ve PostgreSQL ile uyumludur ve T-SQL, MS SQL Server ile çalışmak için kullanılır.

    Veritabanlarıyla sonraki çalışmalar için, gelecekte çalışmayı planladığınız standardı hemen incelemenizi öneririz. Çoğu Web geliştiricisi için, MySQL DBMS'nin işlevselliği (ve ücretsiz olarak kullanılabilir) şu anda kafa için yeterlidir, bu nedenle bu kitapta, bu DBMS'nin lehçesinde sırasıyla tüm MySQL örnekleri verilecektir. MySQL için sorgu dili belgeleri www.mysql.com adresinde bulunabilir.

    çok sayıda bilgisayar sisteminde çalışabilen veritabanları Çeşitli türler. Gerçekten de, onun yardımıyla, kullanıcılar ister kişisel bir bilgisayarda, ister ağa bağlı bir iş istasyonunda veya bir ana bilgisayarda çalışıyor olsunlar, verileri manipüle edebilirler.

    İlişkisel veri modelinin gelişmesi sonucunda ortaya çıkan dillerden biri de şu anda oldukça yaygın olan ve fiilen bir hal almış olan SQL dilidir (Structured Query Language). standart dil ilişkisel veritabanları. Standart SQL, 1986'da Amerikan Ulusal Standartlar Enstitüsü (ANSI) tarafından yayınlandı ve 1987'de Uluslararası Standartlar Örgütü (ISO) tarafından uluslararası bir dil olarak kabul edildi. Geçerli SQL standardı, SQL/92 olarak bilinir.

    Herhangi bir standardın kullanılmasıyla, yalnızca çok sayıda ve oldukça belirgin avantajlar değil, aynı zamanda bazı dezavantajlar da ilişkilidir. Her şeyden önce standartlar, ilgili endüstrinin gelişimini belirli bir yönde yönlendirir; SQL dili söz konusu olduğunda, güçlü temel ilkelerin varlığı, nihayetinde çeşitli uygulamalarının uyumluluğuna yol açar ve hem artan taşınabilirliğe katkıda bulunur. yazılım ve genel olarak veritabanları ve veritabanı yöneticilerinin çalışmalarının çok yönlülüğü. Öte yandan standartlar, belirli bir uygulamanın esnekliğini ve işlevselliğini sınırlar. Altında dil uygulaması SQL anlaşıldı yazılımİlgili üreticinin SQL'i. İşlevselliği genişletmek için birçok standart tabanlı geliştirici standart dil SQL çeşitli uzantılar. Standartların tamamlanmış herhangi bir dil uygulamaları SQL belirli özelliklere sahiptir ve yalnızca tüm rakip uygulamalar arasında birlikte çalışabilirliğe yol açmakla kalmayan, aynı zamanda SQL programcılarının ve kullanıcılarının değerine de katkıda bulunan ana eğilimleri geniş ölçüde yansıtır. ilişkisel veritabanları Açık modern pazar yazılım.

    Tüm özel dil uygulamaları birbirinden biraz farklı. Uygulamalarının taşınabilirlik ve kullanıcı deneyimi için mevcut ANSI standartlarını karşılamasını sağlamak, üreticilerin çıkarınadır. Bununla birlikte, SQL'in her uygulaması, belirli bir veritabanı sunucusunun ihtiyaçlarını karşılamak için geliştirmeler içerir. SQL dilindeki bu geliştirmeler veya uzantılar, ek komutlar ve standart pakete eklenen ve söz konusu uygulamada mevcut olan seçenekler.

    Şu anda, SQL dili birçok düzinelerce DBMS tarafından desteklenmektedir. çeşitli tipler kişisel bilgisayarlardan ana bilgisayarlara kadar çok çeşitli bilgi işlem platformları için tasarlanmıştır.

    Gelişinden önce birçok DBMS için oluşturulmuş tüm veri işleme dilleri ilişkisel veritabanları, mantıksal dosya kayıtları olarak temsil edilen verilerle yapılan işlemlere odaklanmıştı. Elbette bu, kullanıcının veri depolama organizasyonu hakkında detaylı bilgi sahibi olmasını ve hangi veriye ihtiyaç duyulduğunu, nerede bulunduğunu ve nasıl elde edileceğini belirlemek için ciddi bir çaba gerektirdi.

    Ele alınan SQL dili, mantıksal olarak birbirine bağlı ilişki tablosu kümeleri biçiminde sunulan verilerle yapılan işlemlere odaklanır. Yapılarının en önemli özelliği, bu işleme prosedürüne değil, veri işlemenin nihai sonucuna odaklanmasıdır. SQL dili, verilerin nerede bulunduğunu, indekslendiğini ve hatta bir sonuç elde etmek için en verimli işlem dizisinin kullanılması gerektiğini belirler ve bu nedenle, bu ayrıntıları bir veritabanı sorgusunda belirtmek gerekli değildir.

    İstemci-sunucu teknolojisine giriş

    Pazar genişlemesi nedeniyle bilgi hizmetleri yazılım üreticileri giderek daha akıllı ve dolayısıyla büyük ölçekli yazılım sistemleri üretmeye başladı. Birçok kuruluş ve bireysel kullanıcılarçoğu zaman satın aldıkları ürünleri kendi bilgisayarlarına yerleştiremezler. Bilgi alışverişi ve yayılması için bilgisayar ağları oluşturuldu ve özel dosya sunucularına genelleştirici programlar ve veriler kurulmaya başlandı.

    Dosya sunucuları ile çalışan DBMS sayesinde birçok kullanıcı aynı veritabanlarına erişim sağlar. Çeşitli geliştirmeleri basitleştirir otomatik sistemler Organizasyon yönetimi. Ancak bu yaklaşımla, programlardan veya kullanıcı bilgisayarlarının terminallerinden gelen isteklerin tüm işlemleri bunlar üzerinde gerçekleştirilir, bu nedenle basit bir isteği gerçekleştirmek için bile okumak gerekir. dosya sunucusu veya tüm dosyaları ona yazın ve bu, çakışma durumlarına ve ağ tıkanıklığına yol açar. Bu eksiklikleri ortadan kaldırmak için önerilen istemci-sunucu teknolojisi, ancak aynı zamanda, sunucuyla iletişim kurmak için tek bir dile ihtiyaç vardı - seçim SQL'e düştü.

    İstemci-sunucu teknolojisi bu tür bir etkileşim anlamına gelir yazılım bileşenleri tek bir sistem oluşturdukları yer. Adından da anlaşılacağı gibi, belirli kaynakları gerektiren belirli bir müşteri süreci vardır. sunucu süreci bu kaynakları sağlayan. Aynı bilgisayarda olmaları gerekli değildir. Sunucuyu yerel ağdaki bir düğüme ve istemcileri diğer düğümlere yerleştirmek yaygındır.

    Bir veritabanı bağlamında, istemci, kullanıcı arabirimini ve uygulama mantığını yönetir; iş istasyonu hangi veritabanı uygulamalarının çalıştığı. İstemci, kullanıcıdan bir istek alır, sözdizimini kontrol eder ve SQL'de veya uygulama mantığıyla eşleşen başka bir veritabanı dilinde veritabanına bir sorgu oluşturur. Ardından sunucuya bir mesaj gönderir, yanıt bekler ve alınan verileri kullanıcıya sunulmak üzere biçimlendirir. Sunucu, sorguları veritabanına alır ve işler ve ardından sonuçları istemciye geri gönderir. Bu tür işlemler, müşterinin kimlik bilgilerinin kontrol edilmesini, bütünlük gereksinimlerinin uygulanmasını ve bir sorgunun yürütülmesini ve verilerin güncellenmesini içerir. Aynı zamanda eşzamanlılık ve kurtarma yönetimini de destekler.

    İstemci-sunucu mimarisinin birçok avantajı vardır.

    Yapılandırılmış Sorgu Dili (yapılandırılmış sorgulama dili) veya SQL- yarı ilişkisel veritabanlarında kullanım için bildirime dayalı bir programlama dilidir. SQL'in orijinal özelliklerinin çoğu, tuple hesapları tarafından devralındı, ancak SQL'e yapılan son uzantılar, giderek daha fazla ilişkisel cebir içeriyor.
    SQL orijinal olarak IBM tarafından oluşturulmuştur, ancak birçok satıcı kendi lehçelerini geliştirmiştir. 1986 yılında Amerikan Ulusal Standartlar Enstitüsü (ANSI) ve 1987 yılında ISO tarafından bir standart olarak kabul edilmiştir. SQL Programlama Dili Standardında ANSI, SQL'in resmi telaffuzunun "es cue el" olduğunu belirtti. Bununla birlikte, birçok veritabanı uzmanı, dilin orijinal adı olan ve daha sonra IBM'deki ticari marka ve adlandırma çakışmaları nedeniyle değiştirilen Sequel'i yansıtan "argo" telaffuzu "Sequel" i kullandı. Yeni başlayanlar için programlama.
    SQL programlama dili 1992'de revize edildi ve bu sürüm SQL-92'ler olarak biliniyor. Ardından 1999, SQL: 1999 (AKA SQL3) olarak yeniden revize edildi. Aptallar için programlama. SQL 1999, daha önce diğer sürümlerde desteklenmeyen nesneleri destekler, ancak yalnızca 2001'in sonlarında, yalnızca birkaç veritabanı yönetim sistemi SQL uygulamalarını destekler: 1999.
    SQL, ANSI ve ISO olarak tanımlansa da, Oracle şirketinin "PL/SQL" uygulaması veya "Transact-SQL" adlı Sybase ve Microsoft uygulaması gibi çoğu kendine has özelliklere sahip birçok varyasyona ve uzantıya sahiptir. programlamanın temelleri kullanıcının kafasını karıştırabilir. Ticari uygulamaların, standardın tarih ve saat gibi veri türleri gibi temel özelliklerine yönelik desteği kendi bazılarının lehine atlaması da alışılmadık bir durum değildir. Sonuç olarak, genellikle büyük yapısal değişiklikler olmadan platformdan platforma taşınabilen ANSI C veya ANSI Fortran'ın aksine, SQL programlama dili sorguları, büyük değişiklikler olmaksızın nadiren farklı veritabanı sistemleri arasında taşınabilir. Veritabanı alanındaki çoğu kişi, bu uyumluluk eksikliğinin kasıtlı olarak her geliştiricinin kendi sistemi veritabanı yönetimi ve alıcıyı belirli bir veritabanına bağlama.
    Adından da anlaşılacağı gibi, SQL programlama dili belirli, sınırlı bir amaç için tasarlanmıştır - ilişkisel bir veritabanında bulunan verileri sorgulamak. Bu nedenle, çok daha geniş bir dizi sorunu çözmek için tasarlanmış C veya BASIC gibi prosedürel bir dilden ziyade, veri örnekleri oluşturmak için bir dizi programlama dili talimatıdır. "PL/SQL" gibi dil uzantıları, SQL'in avantajlarını korurken SQL'e yordamsal öğeler ekleyerek bu sınırlamayı gidermek için tasarlanmıştır. Başka bir yaklaşım, SQL sorgularının prosedürel programlama dili komutlarını yerleştirmesine ve veritabanıyla etkileşime girmesine izin vermektir. Örneğin, Oracle ve diğerleri destekler java dili veritabanında, PostgreSQL ise Perl, Tcl veya C'de işlevler yazmanıza izin verir.
    Bir SQL şakası: "SQL ne yapılandırılmıştır ne de bir dildir." Şakanın amacı, SQL'in bir Turing dili olmamasıdır. .

    T'den * seçin
    C1 C2
    1 A
    2 B
    C1 C2
    1 A
    2 B
    T'den C1'i seçin
    C1
    1
    2
    C1 C2
    1 A
    2 B
    T'den * seçin, burada C1=1
    C1 C2
    1 A

    Bir T tablosu verildiğinde, Select * from T sorgusu tablodaki tüm satırların tüm öğelerini görüntüler.
    Aynı tablodan, T'den C1 Seç sorgusu, tablodaki tüm satırların C1 sütunundaki öğeleri görüntüler.
    Aynı tablodan, C1=1 olan T'den * seçin sorgusu, C1 sütununun değerinin "1" olduğu tüm satırların tüm öğelerini görüntüler.

    SQL anahtar sözcükleri

    SQL kelimeleri birkaç gruba ayrılır.

    Birincisi Veri Manipülasyon Dili veya DML(veri yönetimi dili). DML, veritabanlarını sorgulamak, veri eklemek, güncellemek ve silmek için kullanılan dilin bir alt kümesidir.

    • SELECT, en sık kullanılan DML komutlarından biridir ve kullanıcının istenen sonucun bir küme olarak açıklaması olarak bir sorgu belirtmesine olanak tanır. Sorgu, sonuçların nasıl düzenlenmesi gerektiğini belirtmez - sorguyu veritabanında yapılabilecek bir forma çevirmek, veritabanı sisteminin, daha spesifik olarak sorgu optimize edicinin işidir.
    • INSERT, mevcut bir tabloya satır (resmi küme) eklemek için kullanılır.
    • UPDATE, mevcut bir tablo satırındaki veri değerlerini değiştirmek için kullanılır.
    • DELETE, tablodan kaldırılacak mevcut satırları belirtir.

    Diğer üç anahtar kelimenin DML grubuna girdiği söylenebilir:

    • ÇALIŞMAYA BAŞLAYIN (veya SQL'in lehçesine bağlı olarak İŞLEMİ BAŞLAT), tamamen çalışacak veya hiç çalışmayacak bir veritabanı işleminin başlangıcını işaretlemek için kullanılabilir.
    • COMMIT, işlemler tamamlandıktan sonra tüm veri değişikliklerinin kaydedildiğini belirtir.
    • GERİ DÖNÜŞ, son işleme veya geri alma işleminden bu yana, veritabanına bir "geri alma" olarak kaydedilen noktaya kadar tüm veri değişikliklerinin yok edilmesi gerektiğini belirtir.

    COMMIT ve ROLLBACK, işlem kontrolü ve kilitler gibi alanlarda kullanılır. Her iki talimat da tüm geçerli işlemleri (veritabanı işlemleri kümeleri) tamamlar ve tablolardaki değişen veriler üzerindeki tüm kilitleri serbest bırakır. ÇALIŞMAYA BAŞLA veya benzeri bir ifadenin varlığı veya yokluğu, SQL'in özel uygulamasına bağlıdır.

    İkinci anahtar kelime grubu, grubu ifade eder. Veri Tanımlama Dili veya DDL (Veri Tanımlama Dili). DDL kullanıcının yeni tablolar ve ilgili öğeler tanımlamasına olanak tanır. Çoğu ticari üs SQL verileri standart olmayan, ancak genellikle hayati önem taşıyan üzerinde kontrole izin veren kendi DDL uzantılarına sahip olmak önemli unsurlarözel sistem.
    DDL'nin ana noktaları, oluştur ve sil komutlarıdır.

    • CREATE, veritabanında oluşturulacak nesneleri (tablolar gibi) belirtir.
    • DROP, veritabanındaki hangi mevcut nesnelerin genellikle kalıcı olarak bırakılacağını belirtir.
    • Bazı veri tabanı sistemleri, kullanıcının mevcut bir nesneyi mevcut bir tabloya sütun eklemek gibi farklı şekillerde değiştirmesine izin veren ALTER komutunu da destekler.

    SQL anahtar kelimelerinin üçüncü grubu, Veri Kontrol Dili veya DCL(Veri Kontrol Dili). DCL veri erişim haklarından sorumludur ve kullanıcının veritabanındaki verileri görüntülemek veya değiştirmek için kimin erişimi olduğunu kontrol etmesine izin verir. Burada iki ana anahtar kelime var:

    • GRANT - kullanıcının işlemleri gerçekleştirmesine izin verir
    • İPTAL - kullanıcının işlemleri gerçekleştirme yeteneğini kaldırır veya kısıtlar.

    SQL kullanan veritabanı sistemleri

    • Ara Taban
    • MySQL
    • kehanet
    • postgresql
    • SQL Server

    Nasıl bir web sitesi geliştirme uzmanı olunur ve kazanmaya başlanır? Giriş niteliğinde bir giriş içeren ucuz video kursları.

    İstemci programları

    TFTP protokolü

    TFTP- Aynı FTP protokolü, ama bitti UDP protokolü(yani teslimat garantisi olmayan bir protokol). İletim hızının daha önemli olduğu bir yerel alan ağında kullanılabilir. Pratikte nadiren kullanılır.

    FTP- Program komut satırından başlatılır.

    Windows Komutanı- bir FTP istemcisi olarak çalışabilir. Uzak dizinlerle, yerel dizinlerle aynı şekilde çalışmanıza izin verir.

    NetVampir- indirmenize izin veren özel bir FTP istemcisi büyük dosyalar ve kötü kanallardan indirme.

    SQL (Structured Query Language), ilişkisel veritabanları için yapılandırılmış bir sorgulama dilidir. Bu dil, gerekli verileri çıkaran, değiştiren, tablolar oluşturan ve yapılarını değiştiren, verilere erişim haklarını belirleyen ve çok daha fazlasını yapan ifadeleri (sorguları) formüle etmek için kullanılabilir.

    Sorgular, veritabanı yönetim sistemi (DBMS) tarafından yürütülür. Veritabanı geliştirme ve yönetimi konusunda uzman değilseniz, mevcut tablolardaki verileri görüntüleyen ve/veya değiştiren onların kullanıcısı olabilirsiniz. Çoğu durumda, bu ve diğer veritabanı işlemleri kullanılarak gerçekleştirilir. özel uygulamalar kullanıcı sağlayan Kullanıcı dostu arayüz. Uygulamalar genellikle yazılır özel diller programlama (C, Pascal, Visual Basic vb.) ve çoğunlukla Delphi, C++ Builder, vb. gibi entegre geliştirme ortamları kullanılarak oluşturulur. Ancak, veritabanına bunlar olmadan erişilebilir - yalnızca SQL kullanılarak. Ayrıca, özel uygulamaların veritabanına erişirken genellikle SQL kod parçalarını kullandığına dikkat edilmelidir.

    Bu nedenle SQL, ilişkisel veritabanlarıyla çalışmak için yaygın olarak kabul edilen standart dildir. Bu dilin sözdizimi, sadece programcıların değil, sıradan kullanıcıların da kullanabileceği kadar basittir. Şu anda, tipik bir bilgisayar kullanıcısının en azından bir metin düzenleyicide yetkin olması gerekir (örneğin, Microsoft Word) ve elektronik tablolar (Microsoft Excel gibi). Veritabanlarını nasıl kullanacağını da biliyorsa fena değil. Pek çok farklı DBMS vardır, ancak veritabanlarıyla çalışmak için tek bir evrensel araç vardır - SQL. SQL bilgisi, en azından temelleri ve onu verileri aramak ve analiz etmek için uygulama yeteneği temel bir parçadır. bilgisayar okuryazarlığı sıradan kullanıcılar bile.

    İlişkisel veri tabanı yönetim sistemlerinin (ilişkisel DBMS) ilk geliştirmeleri 1970'lerin başında IBM'de gerçekleştirildi. Aynı zamanda bu sistemlerde çalışacak şekilde tasarlanmış bir veri dili oluşturulmuştur. Bu dilin deneysel versiyonuna İngilizce'den SEQUEL adı verildi. Yapılandırılmış İngilizce QUEry Dili (yapılandırılmış İngilizce sorgulama dili). Fakat Resmi sürüm kısaca - SQL (Yapılandırılmış Sorgu Dili) olarak adlandırıldı. Daha doğrusu SQL, verinin bir alt dilidir, çünkü DBMS başka dil olanaklarını içerir.

    1981'de IBM, ilişkisel VTYS SQL/DS. Bu zamana kadar, İlişki Yazılım A.Ş. (bugün Oracle Corporation'dır) ilişkisel DBMS'sini zaten yayınladı. Bu ürünler hemen veri tabanı yönetim sistemleri için standart haline geldi. Bu ürünler aynı zamanda veri alt dilleri için fiili standart haline gelen SQL'i de içermektedir. Diğer DBMS'lerin üreticileri kendi SQL sürümlerini yayınlamıştır. Yalnızca IBM ürünlerinin temel özelliklerine sahip değillerdi. Satıcılar, "kendi" DBMS'leri için bir miktar avantaj elde etmek için bazı SQL uzantılarını tanıttı. Aynı zamanda, genel olarak tanınan bir SQL standardının oluşturulması için çalışmalar başladı.

    1986'da Amerikan Ulusal Standartlar Enstitüsü (ANSI), 1989'da SQL-89 olarak güncellenen resmi SQL-86 standardını yayınladı. 1992'de bu standarda SQL-92 (ISO/IEC 9075:1992) adı verildi. SQL standardının en son sürümü SQL:2003'tür (ISO/IEC 9075X:2003).

    Belirli bir DBMS'de herhangi bir SQL uygulaması, üretici tarafından beyan edilen standarttan biraz farklıdır. Bu nedenle, birçok DBMS (örneğin, Microsoft Erişimi 2003, PostgreSQL 7.3) SQL-92'yi tam olarak desteklemez, ancak yalnızca bir düzeyde uyumlulukla. Ayrıca standartta yer almayan unsurları da desteklerler. Bununla birlikte, DBMS geliştiricileri, ürünlerinin yeni sürümlerinin mümkün olduğunca SQL standardına uygun olmasını sağlamaya çalışır.

    Dikkat. Bu eğitimde, tamamı mevcut DBMS'ler tarafından desteklenmeyen SQL2003 öğeleri açıklanmaktadır. Bunları uygulamaya koymadan önce, VTYS'nizde çalışacaklarından emin olmalısınız. Bu konuda şu adresten bilgi edinebilirsiniz. teknik döküman. Açıklanan öğelerin çoğu şuna karşılık gelir ve daha fazlası erken sürümler SQL, özellikle yaygın SQL-92.

    SQL, ilişkisel bir veritabanı için doğal dile (daha doğrusu İngilizce'ye) yakın basit bir sorgulama dili olarak tasarlandı. Biçimsel olarak doğal dile olan yakınlığın, SQL'i geniş kullanım için uygun bir araç haline getireceği varsayılmıştır. sıradan kullanıcılar veritabanları, sadece programcılar değil. Başlangıçta SQL, geleneksel programlama dillerinde bulunan kontrol yapılarının hiçbirini içermiyordu. Sözdizimi oldukça basit olan istekler, doğrudan konsoldan arka arkaya girildi ve aynı sırayla yürütüldü. Ancak SQL hiçbir zaman bankacılar, uçak ve tren bileti satıcıları, ekonomistler ve çeşitli firmaların diğer çalışanları için veritabanlarında depolanan bilgileri kullanan bir araç olmadı. Onlar için basit SQL, doğal soru diline yakınlığına rağmen çok karmaşık ve elverişsiz çıktı.

    Uygulamada, veritabanı genellikle programcılar tarafından C, Visual Basic, Pascal, Java vb. prosedür dillerinde yazılan uygulamalar aracılığıyla çalışır. Uygulamalar genellikle Delphi, Microsoft Access, Visual dBase gibi özel görsel geliştirme ortamlarında oluşturulur. vb. Aynı zamanda, geliştirme sistemi onun için yaptığı için uygulama geliştiricisinin pratikte program kodları yazması gerekmez. Her neyse, birlikte çalışmak program kodu minimum olduğu ortaya çıkıyor. Bu uygulamalar uygun GUI, kullanıcıyı doğrudan SQL sorguları girmeye zorlamaz. Bunun yerine, uygulama yapar. Ancak, bir uygulama veritabanına erişmek için SQL kullanabilir veya kullanmayabilir. SQL tek değil, çok etkili çare veri alma, ekleme ve değiştirme ve uygulamada kullanmak mümkün ise bu yapılmalıdır.

    ilişkisel temeller sağlayan uygulamalardan bağımsız olarak veriler var olabilir ve vardır. Kullanıcı arayüzü. Herhangi bir nedenle böyle bir arayüz yoksa, veritabanına SQL kullanılarak, konsol veya veritabanına bağlanabileceğiniz, bir SQL sorgusu girip gönderebileceğiniz bazı uygulamalar kullanılarak erişilebilir (örneğin, Borland SQL Explorer ).

    SQL dili, programların yazıldığı dillerin aksine bildirimsel (tanımlayıcı) bir dil olarak kabul edilir. Bu, SQL ifadelerinin nasıl yapılması gerektiğini değil, yapılması gerekenleri açıkladığı anlamına gelir.

    Örneğin 102 numaralı departmanın çalışanlarının isim ve pozisyonları ile ilgili bilgileri çalışanlar tablosundan seçmek için aşağıdaki sorguyu çalıştırmanız yeterlidir:

    Personelden Soyadı, Pozisyon SEÇİN NEREDE Departman=102;

    Rusça'da bu ifade şöyle görünür:

    SEÇMEK Soyadı, Görevi İTİBAREN Çalışanlar ŞARTIYLA Departman = 102;

    Değeri değiştirmek için " İvanov " Açık " Petrov " kolon Soyadı , sadece aşağıdaki sorguyu çalıştırın:

    GÜNCELLEME Çalışanlar SET Lastname="Petrov" WHERE Lastname="Ivanov";

    Rusçada bu ifade şöyle görünür:

    GÜNCELLEME Çalışanlar AYARLAYARAK Soyadı EŞİT" Petrov " NEREDE Soyadı = "İvanov" ;

    Tablodan sorguda belirtilen verileri seçmek için VTYS'nin gerçekleştirmesi gereken eylemleri ayrıntılı olarak açıklamanıza gerek yoktur. Ne almak istediğinizi basitçe tanımlarsınız. Sorgu yürütmenin bir sonucu olarak, VTYS, talep ettiğiniz verileri içeren bir tablo döndürür. Veritabanında sorguyla eşleşen veri yoksa boş bir tablo döndürülür.

    Fakat son sürümler SQL, prosedürel kontrol dillerinde ortak olan hesaplama kontrol ifadelerini (koşullu atlama ve döngü ifadeleri) destekler. Bu nedenle, SQL artık tamamen bildirimsel bir dil değildir.

    Tablolardan veri almaya, eklemeye, değiştirmeye ve silmeye ek olarak SQL, veritabanlarını oluşturmak, değiştirmek ve güvenli hale getirmek için gerekli tüm eylemleri gerçekleştirmenize olanak tanır. Tüm bu özellikler üç SQL bileşeni arasında dağıtılır:

    · DML (Veri işleme dili - veri işleme dili ) veritabanını desteklemek için tasarlanmıştır: seçin ( SEÇME ), eklemeler ( SOKMAK ), değişiklikler ( GÜNCELLEME ) ve kaldırma ( SİLMEK ) tablolardan veriler. Bu işleçler (komutlar), hesaplananlar da dahil olmak üzere ifadeler ve ayrıca alt sorgular - başka bir sorguda yer alan sorgular içerebilir. Genel olarak, bir sorgu ifadesi o kadar karmaşık olabilir ki, ne işe yaradığını hemen anlayamazsınız. Bununla birlikte, karmaşık bir sorgu zihinsel olarak analiz edilmesi daha kolay olan parçalara bölünebilir. Benzer şekilde, karmaşık sorgular, nispeten anlaşılması kolay ifadelerden (alt sorgular) oluşturulur.

    · DDL (Veri Tanımlama Dili - veri tanımlama dili ) tabloları ve tüm veritabanını oluşturmak, değiştirmek ve silmek için tasarlanmıştır. DDL'de yer alan ifadelerin örnekleri şunlardır: TABLO OLUŞTUR (Tablo oluştur)," GÖRÜNÜM OLUŞTUR (görünüm oluştur) ŞEMA OLUŞTUR (şema oluştur) TABLOYU DEĞİŞTİR (masayı değiştir), DÜŞÜRMEK (kaldır) vb.

    · DCL (Veri Kontrol Dili - veri yönetimi dili ) veritabanını çeşitli zararlardan korumak için tasarlanmıştır. DBMS otomatik olarak bir miktar veri koruması sağlar. Ancak bazı durumlarda DCL tarafından sağlanan ek önlemler dikkate alınmalıdır.