• SQL komut yapısı. Yapılandırılmış Sorgu Dili SQL'e Giriş

    Dil yapılandırılmış sorgular Yapılan geliştirme sonucunda Yapı Sorgulama Dili (SQL) oluşturulmuştur. ilişkisel model veri ve şu anda fiili dil standardıdır ilişkisel VTYS. Günümüzde SQL dili, çeşitli türlerde çok sayıda DBMS tarafından desteklenmektedir.

    İsim SQL dili genellikle "es-q-el" harfleriyle telaffuz edilir. Anımsatıcı adı "See-Quel" bazen kullanılır.

    SQL dili, kullanıcıya (kendi adına minimum çabayla) aşağıdaki özellikleri sağlar:

    İle veritabanları ve tablolar oluşturun tam tanım yapıları

    Temel veri işleme işlemlerini gerçekleştirin: verileri ekleyin, değiştirin, silin

    Hem basit hem de karmaşık sorgular gerçekleştirin.

    SQL dili ilişkisel olarak tamamlandı.

    Komutlarının yapısı ve sözdizimi oldukça basittir ve dilin kendisi evrenseldir, yani komutlarının sözdizimi ve yapısı bir DBMS'den diğerine geçerken değişmez.

    SQL dilinin iki ana bileşeni vardır:

    Veritabanı yapılarını tanımlamak ve verilere erişimi kontrol etmek için DDL (Veri Tanımlama Dili)

    Verileri almak ve güncellemek için DML (Veri Manipülasyon Dili) kullanılır.

    SQL dili prosedürel değildir, yani onu kullanırken, nasıl elde edileceğini değil, hangi bilgilerin elde edileceğini belirtmelisiniz. SQL komutları sıradan kelimelerdir İngilizce(SEÇ, EKLE, vb.). Önce SQL DML deyimlerini göz önünde bulundurun:

    SEÇ - veritabanından veri alma

    INSERT - bir tabloya veri ekleme

    GÜNCELLEME - tablodaki verileri güncelleme

    DELETE - bir tablodan veri silme

    deyimi SEÇ

    SELECT deyimi, aşağıdaki işlemlere eşdeğer eylemler gerçekleştirir. ilişkisel cebir: örnekleme, yansıtma ve birleştirme.

    Bunu kullanan en basit SQL sorgusu şöyle görünür:

    tbl'DEN col_name SEÇİN

    Select anahtar sözcüğünü, sorgu sonucunda verileri döndürülecek sütunların virgülle ayrılmış listesi izler. From anahtar sözcüğü, verilerin hangi tablodan (veya görünümden) alındığını belirtir.

    Seçme sorgusunun sonucu her zaman sonuç tablosu olarak adlandırılan bir tablodur. Ayrıca, bir select deyimi ile yürütülen bir sorgunun sonuçları yeni bir tablo oluşturmak için kullanılabilir. İki sorgunun sonuçları ise farklı tablolar aynı biçime sahip olduklarından tek bir tabloda birleştirilebilirler. Ayrıca bir sorgulama sonucu elde edilen tablo daha sonraki sorgulamalara konu olabilir.

    Bir tablonun tüm sütunlarını ve tüm satırlarını seçmek için SELECT * FROM tbl;

    Şunun için fiyat bilgilerini içeren bir Ürün tablosu düşünün: Farklı türdeürünler:

    Sonuç iste

    Üründen * SEÇİN;

    tüm tablo Ürün olacaktır.

    Sorgu kullanarak bir tablonun belirli sütunlarını seçebilirsiniz.

    tbl'DEN col1, col2, … , coln SEÇİN;

    Yani, sorgu sonucu

    Üründen Cinsini, Fiyatını SEÇİN;

    bir masa olacak

    Elde edilen tablodaki sütunların sırasını değiştirmek gerekirse, select deyimindeki sütunların listesi de kullanılır:

    Tablonun yalnızca belirli kısıtlamaları karşılayan satırlarını seçmek için özel bir anahtar kelime ardından bir boole durumu gelir. Giriş bu koşulu sağlıyorsa sonuca dahil edilir. Aksi takdirde, giriş atılır.

    Örneğin, Ürün tablosundan fiyatı Fiyat koşulunu karşılayan ürünleri seçmek<3200, можно осуществить, используя запрос

    Fiyatın Bulunduğu Üründen * SEÇİN<3200;

    Onun sonucu:

    Koşul, NOT , AND, OR, XOR mantıksal işleçleri kullanılarak birleştirilebilir ve birleştirilebilir, örneğin: burada id_ Fiyat>500 AND Fiyat<3500. Допускается также использование выражений в условии: where Price>(1+1) ve dizi sabitleri: burada name= "otomatik dengelemeler".

    BETWEEN var1 AND var2 yapısını kullanmak, bir ifadenin değerlerinin var1 ile var2 arasındaki aralık içinde olup olmadığını kontrol etmenizi sağlar (bu değerler dahil):

    SEÇİN * Fiyatı 3000 İLE 3500 ARASINDAKİ ÜRÜNDEN;

    NOT BETWEEN operatörüne benzer şekilde, NOT IN operatörü vardır.

    SELECT yan tümcesinde belirtilen sütun adları yeniden adlandırılabilir. Bunun için, dolaylı olarak ima edildiğinden atlanabilen AS anahtar kelimesi kullanılır. Örneğin, bir istek

    Type_id =3 olan Üründen AS modeli yazın, Type_id AS num SEÇİN

    dönecektir (takma adlar tırnak işaretleri olmadan yazılmalıdır):

    LIKE operatörü, bir diziyi bir kalıpla karşılaştırmak içindir:

    "abc" GİBİ sütun_adı olan tbl'den * SEÇİN

    Bu sorgu yalnızca col_name sütununda abc dize değerini içeren kayıtları döndürür.

    Modelde iki joker karaktere izin verilir: "_" ve "%". Bunlardan ilki, şablondaki rasgele bir karakterin yerini alır ve ikincisi, bir rasgele karakter dizisinin yerini alır. Yani "abc%", abc ile başlayan herhangi bir dizeyle, "abc_", abc ile başlayan 4 karakterlik herhangi bir dizeyle, "%z", z ile biten herhangi bir dizeyle ve son olarak "%z%", z içeren karakter dizileriyle eşleşir.

    Type değerinin "a" harfi ile başladığı Product tablosundaki tüm kayıtları aşağıdaki gibi bulabilirsiniz:

    SEÇİN * Üründen "a%" GİBİ Yazın;

    kamyon kantarı

    Arama dizesi bir joker karakter içeriyorsa, ESCAPE yan tümcesinde bir kontrol karakteri belirtmeniz gerekir. Bu kontrol karakteri, kalıpta joker karakterden önce kullanılmalıdır ve bu, ikincisinin normal bir karakter olarak ele alınması gerektiğini belirtir. Örneğin, belirli bir alanda "_" karakterini içeren tüm değerleri bulmak istiyorsanız, "%_%" deseni tablodaki tüm kayıtları döndürür. Bu durumda şablon aşağıdaki gibi yazılmalıdır:

    "%|_%" KAÇIŞ "|"

    Değerin "%20" dizesiyle eşleşip eşleşmediğini kontrol etmek için aşağıdaki işleci kullanabilirsiniz:

    "%20#" KAÇIŞ "#" GİBİ

    IS NULL operatörü, bir tablonun alanlarında bir NULL değerinin yokluğunu (varlığını) kontrol etmenizi sağlar. Bu durumlarda normal karşılaştırma işleçlerinin kullanılması yanlış sonuçlara yol açabilir, çünkü NULL'a karşı karşılaştırma BİLİNMEYEN (bilinmeyen) sonuçlar verir. Böylece, seçim koşulu şöyle görünmelidir:

    col_name burada col_name=NULL yerine NULL IS.

    Varsayılan getirme sonucu, kayıtları veritabanında saklandıkları sırayla döndürür. Kayıtları sütunlardan birine göre sıralamak istiyorsanız, ORDER BY yan tümcesini kullanmalısınız, ardından bu sütunun adı belirtilir:

    SEÇ * tbl ORDER BY col_name'den;

    Bu sorgu sonucunda sütun_adı özniteliğinin değerinin artan sırasına göre kayıtlar döndürülür.

    Kayıtlar ayrıca birden çok sütuna göre sıralanabilir. Bunu yapmak için adları ORDER BY'den sonra virgülle ayrılarak belirtilmelidir:

    Sütun_adı1, sütun_adı2 TARAFINDAN tbl ORDER'DAN * SEÇİN.

    Kayıtlar col_name1 alanına göre sıralanacaktır; sütun_adı1 sütununda aynı değere sahip birkaç kayıt varsa bunlar sütun_adı2 alanına göre sıralanır.

    Kayıtları ters sırada sıralamak istiyorsanız (örneğin, azalan tarihe göre), ORDER BY sütun_adı DESC belirtmelisiniz.

    Doğrudan sıralama için varsayılan değer olarak kabul edilen ASC anahtar sözcüğü bulunmaktadır.

    Seçimin sonucu yüzlerce ve binlerce kayıt içeriyorsa bunların çıktısı ve işlenmesi önemli miktarda zaman alır.

    Bu nedenle, bilgiler genellikle sayfalara ayrılır ve kullanıcıya parçalar halinde sunulur. Sayfalandırma, limit anahtar sözcüğü ve ardından görüntülenecek giriş sayısı ile birlikte kullanılır. Aşağıdaki sorgu, col_name1 alanında aynı anda sıralama yaparken ilk 10 kaydı alır:

    SEÇ * tbl'DEN SİPARİŞ TARAFINDAN sütun_adı1 TANIM LİMİTİ 10

    Sonraki 10 kaydı ayıklamak için limit anahtar sözcüğü iki değerle birlikte kullanılır: ilki sonucun görüntüleneceği konumu belirtir ve ikincisi alınacak kayıt sayısını belirtir:

    SEÇ * tbl'den SİPARİŞ BY col_name1 DESC LIMIT 10,10

    Sonraki 10 kaydı almak için LIMIT 20, 10 yapısını kullanın.

    02/07/07 11.6K

    İlişkisel Veritabanı Yönetimine Giriş

    sql genellikle veritabanı yönetim sistemleri (DBMS) için Esperanto dili olarak anılır. Gerçekten de, programlarda bu kadar yaygın olarak kullanılan veritabanlarıyla (DB) çalışmak için dünyada başka bir dil yoktur. İlk sol standardı 1986'da ortaya çıktı ve şimdiye kadar evrensel kabul gördü. İlişkisel olmayan DBMS ile çalışırken bile kullanılabilir. Profesyonel programcıların ayrıcalığı olan C ve Cobol gibi diğer yazılım araçlarının aksine sql, çok çeşitli alanlardan uzmanlar tarafından kullanılır. Programcılar, DBMS yöneticileri, iş analistleri - hepsi sql kullanarak verileri başarıyla işler. Bu dili bilmek, veritabanıyla uğraşmak zorunda olan herkes için yararlıdır.

    Bu yazımızda sql'in temel kavramlarını ele alacağız. Geçmişini anlatacağız (ve yol boyunca birkaç efsaneyi ortadan kaldıracağız). İlişkisel modeli tanıyacak ve dile daha fazla hakim olmanıza yardımcı olacak sql ile çalışma konusunda ilk becerileri edinebileceksiniz.

    Sql öğrenmek zor mu? Bu, özün ne kadar derinine ineceğinize bağlıdır. Profesyonel olmak için çok şey öğrenmeniz gerekiyor. Sql dili, 1974 yılında 23 sayfalık küçük bir araştırma makalesinin konusu olarak başladı ve o zamandan beri çok yol kat etti. Mevcut standardın metni - "uluslararası standart veritabanı dili sql" (genellikle sql-92 olarak adlandırılır) resmi belgesi - altı yüzden fazla sayfa içerir, ancak microsoft, oracle, sybase vb.

    Ancak sıradan bir kullanıcı için sql'yi bütünüyle bilmek hiç de gerekli değildir. Tıpkı anlaşılmaz bir dilin konuşulduğu bir ülkede kendini bulan bir turist gibi, yalnızca birkaç genel ifadeyi ve dilbilgisi kuralını öğrenmek yeterlidir, bu nedenle sql'de - biraz bilgi sahibi olmak, birçok yararlı sonuç elde edebilirsiniz. Bu yazımızda temel sql komutlarına, veri seçimi için kriter belirleme kurallarına bakacağız ve sonuçların nasıl alınacağını göstereceğiz. Sonuç olarak, bağımsız olarak tablolar oluşturabilecek ve bunlara bilgi girebilecek, sorgular oluşturabilecek ve raporlarla çalışabileceksiniz. Bu bilgi, sql'nin daha bağımsız gelişimi için temel olabilir.

    sql nedir?

    sql, verileri tanımlamanıza, ilişkisel DBMS'den bilgi seçmenize ve işlemenize izin veren, prosedürel olmayan özel bir dildir. Uzmanlık, sol'un yalnızca veritabanıyla çalışmaya yönelik olduğu anlamına gelir; yalnızca bu dilin araçlarını kullanarak tam teşekküllü bir uygulama sistemi oluşturmak imkansızdır - bunun için sql komutlarını yerleştirebileceğiniz diğer dilleri kullanmanız gerekecektir. Bu nedenle sql, veri işleme için yardımcı bir dil aracı olarak da adlandırılır. Yardımcı dil, yalnızca diğer dillerle birlikte kullanılır.

    Genel amaçlı bir uygulama dilinde, genellikle prosedür oluşturmak için olanaklar vardır, ancak sql'de bunlar yoktur. Belirli bir görevin nasıl yapılması gerektiğini belirtmek için kullanılamaz, yalnızca tam olarak ne olduğunu belirlemek için kullanılabilir. Başka bir deyişle, sql ile çalışırken, onları elde etme prosedürleriyle değil, sonuçlarla ilgileniriz.

    Sql'nin en önemli özelliği ilişkisel veritabanlarına erişebilmesidir. Hatta birçok kişi "sql ile işlenmiş veritabanı" ve "ilişkisel veritabanı" ifadelerinin eşanlamlı olduğunu düşünür. Ancak kısa süre sonra aralarında bir fark olduğunu göreceksiniz. Sql-92 standardında ilişki terimi bile yoktur.

    İlişkisel VTYS nedir?

    Ayrıntılara girmeden, ilişkisel bir VTYS, ilişkisel bir veri yönetimi modeline dayalı bir sistemdir.

    İlişkisel model kavramı ilk olarak 1970 yılında yayınlanan Dr. E. F. Codd'un çalışmasında önerildi. Bu, verileri yapılandırmak ve yönetmek için matematiksel aygıtı tanımladı ve ayrıca herhangi bir gerçek bilgiyi temsil etmek için soyut bir model önerdi. Bundan önce, bir veritabanı kullanırken, içinde bilgi depolamanın belirli özelliklerini dikkate almak gerekiyordu. Veritabanının iç yapısı değiştirilmişse (örneğin performansı artırmak için), mantıksal düzeyde herhangi bir değişiklik olmasa bile uygulama programlarının yeniden çalışılması gerekiyordu. İlişkisel model, veri depolamanın belirli özelliklerini uygulama programı seviyesinden ayırmayı mümkün kıldı. Gerçekten de model, bilgilerin nasıl depolandığını ve bunlara nasıl erişildiğini açıklamaz. Sadece bu bilgilerin kullanıcı tarafından nasıl algılandığı dikkate alınır. İlişkisel modelin ortaya çıkışı sayesinde, veri yönetimine yaklaşım niteliksel olarak değişti: endüstride devrim niteliğinde bir gelişmeye yol açan bir sanattan bir bilime dönüştü.

    İlişkisel modelin temel kavramları

    İlişkisel modele göre ilişki, veri içeren bir tür tablodur. Bir ilişki, bu tablonun sütunlarına karşılık gelen bir veya daha fazla özniteliğe (özelliklere) ve bu özniteliklerin kümelerini temsil eden (bunlara n-ary demetleri veya kayıtlar denir) ve tablonun satırlarına karşılık gelen bazı veri kümelerine (muhtemelen boş) sahip olabilir.

    Herhangi bir demet için, öznitelik değerleri sözde etki alanlarına ait olmalıdır. Aslında, bir etki alanı, tüm geçerli değerlerin kümesini tanımlayan bir veri kümesidir.

    Bir örneğe bakalım. Pazartesiden Pazara değerleri içeren bir Haftanın Günleri alanı olsun. İlişkinin bu etki alanıyla eşleşen bir DayWeek özniteliği varsa, ilişkideki herhangi bir demet, DayWeek sütununda listelenen değerlerden birine sahip olmalıdır. Ocak veya Kedi değerlerinin görünmesine izin verilmez.

    Lütfen dikkat: öznitelik geçerli değerlerden birine sahip olmalıdır. Aynı anda birden fazla değer belirtmek yasaktır. Bu nedenle, öznitelik değerlerinin belirli bir alana ait olması gerekliliğine ek olarak, atomik durumunun da gözetilmesi gerekir. Bu, bu değerler için ayrıştırmaya izin verilmediği, yani ana anlamını kaybetmeden daha küçük parçalara bölünemeyeceği anlamına gelir. Örneğin, özellik değeri aynı anda Pazartesi ve Salı'yı içeriyorsa, orijinal anlam korunarak iki bölüm ayırt edilebilir - Haftanın Günü; bu nedenle, bu öznitelik değeri atomik değildir. Bununla birlikte, "Pazartesi" nin anlamını parçalara ayırmaya çalışırsanız, "P" den "K" ye kadar bir dizi ayrı harf alırsınız; orijinal anlam kaybolur, bu nedenle "Pazartesi" değeri atomiktir.

    İlişkilerin başka özellikleri de vardır. Bunlardan en önemlisi, kapalı işlemlerin matematiksel özelliğidir. Bu, bir ilişki üzerinde herhangi bir işlem yapılması sonucunda yeni bir ilişkinin ortaya çıkması gerektiği anlamına gelir. Bu özellik, ilişkiler üzerinde matematiksel işlemler gerçekleştirirken öngörülebilir sonuçlar almanızı sağlar. Ayrıca, işlemleri farklı iç içe geçme seviyeleri ile soyut ifadeler olarak temsil etmek mümkün hale gelir.

    Orijinal çalışmasında Dr. Codd, ilişkisel cebir adı verilen sekiz operatörden oluşan bir dizi tanımladı. Dört operatör - birleşim, mantıksal çarpma, fark ve Kartezyen çarpım - geleneksel küme teorisinden alınmıştır; işleçlerin geri kalanı özellikle ilişkileri yönetmek için yaratılmıştır. Dr. Codd, Chris Date ve diğerleri tarafından yapılan müteakip çalışma, ek operatörler önermiştir. Bu makalenin ilerleyen kısımlarında üç ilişkisel işleç ele alınacaktır - üretim (proje), kısıtlamalar (seçme veya kısıtlama) ve birleştirme (birleştirme).

    sql ve ilişkisel model

    Artık ilişkisel modele aşina olduğunuza göre, onu unutalım. Elbette sonsuza kadar değil, sadece şunu açıklamak için: sql'nin geliştirilmesinde kullanılan Dr. Codd tarafından önerilen ilişkisel model olmasına rağmen, aralarında tam veya gerçek bir uygunluk yoktur (ilişki teriminin sql-92 standardında olmamasının nedenlerinden biri de budur). Örneğin, sql tablosu ve ilişki kavramları eşdeğer değildir, çünkü tablolar aynı anda birkaç özdeş satıra sahip olabilirken, ilişkilerde aynı demetlere izin verilmez. Ek olarak, veri türleri bir dereceye kadar rol oynamasına rağmen SQL, ilişkisel alanların kullanımını sağlamaz (ilişkisel modelin bazı etkili savunucuları şimdi ilişkisel alanların gelecekteki sql standardına dahil edilmesini sağlamaya çalışıyor).

    Ne yazık ki, sql ve ilişkisel model arasındaki uyumsuzluk, yıllar boyunca pek çok yanlış anlama ve tartışma yarattı. Ancak makalenin ana konusu ilişkisel model değil sql çalışması olduğundan, bu sorunlar burada dikkate alınmamaktadır. Sadece sql'de ve ilişkisel modelde kullanılan terimler arasında farklılıklar olduğunu unutmayın. Makalede ayrıca sadece sql'de kabul edilen terimler kullanılacaktır. İlişkiler, nitelikler ve demetler yerine, bunların sql karşılıklarını kullanacağız: tablolar, sütunlar ve satırlar.

    statik ve dinamik sql

    Statik ve dinamik sql gibi terimlere zaten aşina olabilirsiniz. Bir sql sorgusu, programın yürütülmesinden önceki bir aşamada derlenir ve optimize edilirse statiktir. C veya Cobol programlarına sql komutlarını gömmekten bahsederken bir tür statik sql'den zaten bahsetmiştik (bu tür ifadeler için başka bir ad vardır - gömülü sql). Muhtemelen tahmin edebileceğiniz gibi, program yürütülürken dinamik bir sql sorgusu derlenir ve optimize edilir. Kural olarak, sıradan kullanıcılar, anlık ihtiyaçlara göre sorgular oluşturmalarına olanak tanıyan dinamik sql kullanır. Dinamik sql sorgularını kullanma seçeneklerinden biri, işleme için gönderilen sorgular terminalden etkileşimli olarak girildiğinde etkileşimli veya doğrudan aramalarıdır (hatta özel bir terim vardır - directsql). Statik ve dinamik sql arasında kullanılan yapıların sözdizimi ve yürütme özelliklerinde belirli farklılıklar vardır, ancak bu konular makalenin kapsamı dışındadır. Sadece, anlaşılır olması için örneklerin doğrudan sql sorguları şeklinde verildiğini not ediyoruz, çünkü bu yalnızca programcıların değil, aynı zamanda çoğu son kullanıcının da sql kullanmayı öğrenmesine olanak tanır.

    sql nasıl öğrenilir

    Artık ilk sql sorgularınızı yazmaya hazırsınız. Veritabanına sql üzerinden erişiminiz varsa ve örneklerimizi pratikte kullanmak istiyorsanız, şunları göz önünde bulundurun: sınırsız ayrıcalıklara sahip bir kullanıcı olarak oturum açmalısınız ve sql sorgularının etkileşimli olarak işlenmesi için yazılım araçlarına ihtiyacınız olacak (bir ağ veritabanından bahsediyorsak, size uygun hakları vermek için veritabanı yöneticisi ile görüşmelisiniz). Veritabanına sql üzerinden erişiminiz yoksa üzülmeyin: tüm örnekler çok basit ve bunları makineye erişmeden "kuru" olarak çözebilirsiniz.

    Sql'de herhangi bir işlemi gerçekleştirmek için sql dilinde bir ifade çalıştırmanız gerekir. Birkaç ifade türü vardır, ancak bunlar arasında üç ana grup ayırt edilebilir: ddl-komutları (veri tanımlama dili - veri tanımlama dili), dml-komutları (veri işleme dili - veri işleme dili) ve veri kontrol araçları. Böylece bir anlamda sql de üç farklı dil birleştirilmiş oluyor.

    Veri Açıklama Dili Komutları

    Ana ddl komutlarından biriyle başlayalım - tablo oluştur (Tablo oluştur). Sql'de birkaç tür tablo vardır, ana olanlar iki türdür: temel (taban) ve seçici (görünümler). Temel tablolar, gerçek hayattaki verilerle ilgili tablolardır; seçici - bunlar, temel tablolardan elde edilen bilgilere dayanarak oluşturulan "sanal" tablolardır; ancak kullanıcılara formlar normal tablolar gibi görünür. Tablo oluştur komutu, temel tabloları oluşturmak içindir.

    Tablo oluştur komutunda tablonun adını, sütun listesini ve içerdikleri veri türlerini belirtmeniz gerekir. Diğer isteğe bağlı öğeler de parametre olarak mevcut olabilir, ancak önce yalnızca ana parametrelere bakalım. Bu komut için en basit sözdizimsel formu gösterelim:

    tablo oluştur TableName (Column DataType) ;

    create ve table sql anahtar kelimeleridir; TableName, Column ve DataType, kullanıcının her seferinde gerçek değerleri girdiği yerine resmi parametrelerdir. Column ve DataType parametreleri parantez içine alınır. Sql'de, parantezler genellikle bireysel öğeleri gruplandırmak için kullanılır. Bu durumda, bir sütun için tanımları birleştirmenize izin verirler. Sondaki noktalı virgül, komut ayırıcıdır. Sql dilindeki herhangi bir ifadeyi tamamlamalıdır.

    Bir örnek düşünün. Tüm randevular (randevular) hakkındaki verileri depolamak için bir tablo oluşturmak istediğinizi varsayalım. Bunu yapmak için sql'de şu komutu girin:

    masa randevuları oluştur (appointment_date tarih) ;

    Bu komutu yürüttükten sonra, tarih türündeki verileri depolayabilen bir randevu_tarihi sütununun bulunduğu, randevular adlı bir tablo oluşturulur. Henüz herhangi bir veri girişi yapılmadığı için tablodaki satır sayısı sıfırdır (tablo oluştur komutu sadece tabloyu tanımlar; daha sonra ele alınacak olan insert komutu ile gerçek değerler girilir).

    Randevular ve randevu_tarihi parametreleri tanımlayıcı olarak adlandırılır çünkü bunlar belirli veritabanı nesnelerinin adlarını, bu durumda sırasıyla tablo ve sütun adlarını belirtirler. Sql'de iki tür tanımlayıcı vardır: normal (normal) ve adanmış (sınırlanmış). Sınırlandırılmış tanımlayıcılar çift tırnak içine alınır ve büyük/küçük harfe duyarlıdır. Normal tanımlayıcılar herhangi bir sınırlı karakterle ayırt edilmezler ve büyük/küçük harfe duyarlı değildirler. Bu makale yalnızca normal tanımlayıcıları kullanır.

    Tanımlayıcıları oluşturmak için kullanılan semboller belirli kurallara uymalıdır. Normal tanımlayıcılar yalnızca harfleri (Latince olması gerekmez, aynı zamanda diğer alfabeleri de), sayıları ve alt çizgi karakterini kullanabilir. Tanımlayıcı noktalama işaretleri, boşluklar veya özel karakterler (#, @, % veya!) içermemelidir; ayrıca bir rakam veya alt çizgi ile başlayamaz. Tanımlayıcılar için ayrı sql anahtar sözcükleri kullanabilirsiniz, ancak bu önerilmez. Tanımlayıcı bir nesneyi belirtmek için tasarlanmıştır, bu nedenle benzersiz (belirli bir bağlam içinde) bir ada sahip olmalıdır: veritabanında zaten bulunan bir adla bir tablo oluşturamazsınız; Aynı tabloda aynı ada sahip sütunlar olamaz. Bu arada, randevuların ve randevuların sql için aynı adlar olduğunu unutmayın. Yalnızca harflerin durumunu değiştirerek yeni bir tanımlayıcı oluşturmak mümkün değildir.

    Bir tablonun yalnızca bir sütunu olsa da, pratikte genellikle birden çok sütunu olan tablolar gerekir. Böyle bir tablo oluşturma komutu genel olarak şöyle görünür:

    tablo oluştur TableName (DataType Column [( , DataType Column ) ]) ;

    Köşeli parantezler, isteğe bağlı öğeleri belirtmek için kullanılır, süslü parantezler, tek yönlü yapıların listesi olabilecek öğeleri içerir (gerçek bir sql komutu girerken, bu parantezlerin hiçbiri koyulmaz). Bu sözdizimi, herhangi bir sayıda sütun belirtmenize olanak tanır. İkinci öğeden önce bir virgül geldiğine dikkat edin. Listede birden fazla parametre varsa, bunlar birbirinden virgülle ayrılır.

    tablo oluştur randevular2 (randevu_tarihi tarih, randevu_saati, açıklama varchar (256)) ;

    Bu komut, randevular2 tablosunu oluşturur (randevular tablosu zaten veritabanında bulunduğundan, yeni tablonun farklı bir adı olmalıdır). İlk tablo gibi, randevuların tarihini kaydetmek için bir randevu_tarihi sütunu vardır; ayrıca bu randevuların zamanlarını kaydetmek için bir randevu_saat sütunu bulunmaktadır. Açıklama parametresi, en fazla 256 karakter içerebilen bir metin dizisidir. Bu parametre için belirtilen tür varchar'dır (karakter değişkeninin kısaltması), kayıt için ne kadar yer gerekeceği önceden bilinmediği için ancak açıklamanın 256 karakteri geçemeyeceği açıktır. Karakter dizisi türünde (ve diğer bazı türlerde) bir parametre açıklanırken, parametrenin uzunluğu belirtilir. Değeri, tür adının sağında parantez içinde verilmiştir.

    Dikkate alınan iki örnekte, komut girişinin farklı biçimlendirildiğini fark etmiş olabilirsiniz. İlk durumda komut tamamen bir satıra yerleştirilmişse, ikinci durumda, ilk açık parantezden sonra giriş yeni bir satırdan devam eder ve sonraki her sütunun tanımı yeni bir satırdan başlar. Sql'de, kayıt biçimlendirme için özel gereksinimler yoktur. Bir kaydı satırlara bölmek okumayı kolaylaştırır. Sql dili, komutları yazarken, yalnızca komutu satırlara ayırmaya değil, aynı zamanda satırların başına girintiler ve kayıt öğeleri arasına boşluklar eklemeye de izin verir.

    Artık temel kuralları bildiğinize göre, çok sütunlu bir tablo oluşturmanın daha karmaşık bir örneğine bakalım. Yazının başında çalışanlar tablosu gösterildi. Aşağıdaki sütunları içerir: soyadı, adı, istihdam tarihi, departman, kategori ve yıl için maaş. Bu tabloyu tanımlamak için aşağıdaki sql komutu kullanılır:

    tablo çalışanları oluştur (soyadı karakteri (13) boş değil, ilk_adı karakteri (10) boş değil, işe alma tarihi tarihi, şube_ofis karakteri (15), not_seviyesi küçük, maaş ondalık (9 , 2) );

    Takımda birkaç yeni unsur var. Birincisi, soyadı ve ilk_ad sütun tanımlarının sonundaki boş olmayan ifadedir. Bu tür yapıların yardımıyla, uyulması gereken gereksinimler belirlenir. Bu durumda, girilirken soyadı_ad ve ad_ad alanlarının doldurulması gerektiği belirtilir; bu sütunları boş bırakamazsınız (bu oldukça mantıklı: bir çalışanı adını bilmeden nasıl tanımlayabilirsiniz?).

    Ek olarak, örnekte üç yeni veri türü vardır: karakter, küçük ve ondalık. Şimdiye kadar tipler hakkında pek konuşmadık. Sql'de ilişkisel alanlar olmamasına rağmen, bir dizi temel veri türü vardır. Bu bilgi, bellek tahsis edilirken ve değerler karşılaştırılırken kullanılır; olası giriş değerleri listesini bir dereceye kadar daraltır, ancak sql'nin tip kontrolü diğer dillere göre daha az katıdır.

    Sql'de bulunan tüm veri türleri altı gruba ayrılabilir: karakter dizileri, tam sayısal değerler, yaklaşık sayısal değerler, bit dizileri, tarih saat ve aralıklar. Tüm varyasyonları listeledik, ancak bu makale yalnızca bazılarını ayrıntılı olarak ele alacaktır (örneğin, bit dizileri, sıradan kullanıcıların özel ilgisini çekmez).

    Bu arada, tarih saatin bir yazım hatası olduğunu düşünüyorsanız, yanılıyorsunuz. Bu grup (datetime), sql'de kullanılan zamanla ilgili veri türlerinin çoğunu içerir (zaman aralıkları gibi parametreler ayrı bir gruptadır). Önceki örnekte, tarih ve saat grubundan iki veri türüyle zaten karşılaşılmıştı - tarih ve saat.

    Halihazırda aşina olduğunuz bir sonraki veri türü, karakter değişkenliğidir (veya sadece varchar); karakter dizileri grubuna aittir. Değişken uzunluktaki dizileri depolamak için varchar kullanılıyorsa, üçüncü örnekte karşılaşılan char türü, sabit sayıda karakter içeren dizeleri yazmak için tasarlanmıştır. Örneğin, son_ad sütunu, ister poe ister penworth-chickering olsun, fiilen girilen soyadlarından bağımsız olarak 13 karakterlik dizeler içerecektir (poe durumunda, kalan 10 karakter boşluklarla doldurulacaktır).

    Kullanıcı açısından varchar ve char aynı anlama gelir. İki türü tanıtmak neden gerekliydi? Gerçek şu ki, pratikte genellikle hız ve disk alanı tasarrufu arasında bir uzlaşma bulmanız gerekir. Kural olarak, sabit uzunluklu diziler kullanmak erişim hızında bir miktar kazanç sağlar, ancak dizi uzunluğu çok uzunsa disk alanı boşa harcanır. Randevularda2 yorumun her satırı için 256 karakter ayrılırsa, bu mantıksız olabilir; çoğu zaman satırlar çok daha kısa olacaktır. Öte yandan, soyadlarının da farklı uzunlukları vardır, ancak genellikle yaklaşık 13 karakter gerektirirler; bu durumda kayıplar minimum olacaktır. İyi bir pratik kural vardır: bir dizgenin uzunluğunun çok az değiştiği biliniyorsa veya nispeten küçükse, o zaman char kullanın; aksi halde varchar.

    Sonraki iki yeni veri türü, küçük ve ondalık, kesin sayısal değerler grubuna aittir. smallint, küçük tam sayının kısaltmasıdır. SQL ayrıca bir tamsayı veri türü sağlar. Bu durumda iki benzer türün varlığı da yer tasarrufu düşünülerek açıklanmaktadır. Örneğimizde derece_seviye değerleri iki basamaklı bir sayı olarak gösterilebilir, bu nedenle küçük tip kullanılır; ancak pratikte parametrelerin sahip olabileceği maksimum değerlerin ne olduğu her zaman bilinmemektedir. Böyle bir bilgi yoksa, tamsayı kullanın. Smallint ve tamsayı parametreleri için gerçek depolama alanı ve bu parametreler için karşılık gelen değer aralığı platforma özeldir.

    Finansal muhasebe için yaygın olarak kullanılan ondalık veri türü, istenen ondalık basamak sayısına sahip bir model belirtmenize olanak tanır. Bu tür, tam sayısal gösterim için kullanıldığından, ondalık veriler üzerinde matematiksel işlemler gerçekleştirirken kesinliği garanti eder. Ondalık değerler için yaklaşık sayısal gösterim grubundan kayan nokta (kayan noktalı sayı) gibi veri türlerini kullanırsanız, bu durum yuvarlama hatalarına yol açacağından bu seçenek finansal hesaplamalar için uygun değildir. Ondalık tipteki parametreleri tanımlamak için aşağıdaki notasyon kullanılır:

    burada p ondalık basamak sayısı, d ondalık basamak sayısıdır. Kullanılan değerlerde p yerine anlamlı basamakların toplam sayısını, d yerine virgülden sonraki basamak sayısını yazmalısınız.

    "Tablo Oluşturma" kenar çubuğu, tablo oluştur komutunun tam özetini gösterir. Yeni öğeler içerir ve dikkate alınan tüm veri türlerinin biçimini gösterir (Prensipte başka veri türleri de vardır, ancak bunları henüz dikkate almıyoruz).

    İlk başta, sql komutlarının sözdizimi çok karmaşık görünebilir. Ancak yukarıdaki örnekleri dikkatlice incelerseniz kolayca anlayabilirsiniz. Diyagramda ek bir öğe belirdi - dikey bir çizgi; alternatif tasarımlar arasında ayrım yapmaya yarar. Yani her bir sütunu tanımlarken uygun veri tipini seçmeniz gerekiyor (hatırladığınız gibi isteğe bağlı parametreler köşeli parantezler içine alınmış, kıvrık parantezler içinde defalarca tekrar edilebilecek yapılar; gerçek sql komutlarında bu özel karakterler yazılmıyor). Şemanın ilk kısmı veri tiplerinin tam isimlerini, ikinci kısım ise kısaltılmış isimlerini gösterir; pratikte bunlardan herhangi biri kullanılabilir.

    Makalenin ilk bölümü tamamlandı. İkincisi, dml komutlarını ekleme, seçme, güncelleme ve silme çalışmalarına ayrılacaktır. Ayrıca veri örnekleme koşulları, karşılaştırma ve mantıksal operatörler, boş değerlerin kullanımı ve üçlü mantık ele alınacaktır.

    Tablo oluşturma. Tablo oluştur komutunun sözdizimi: isteğe bağlı parametreler köşeli parantez içinde, tekrarlanan yapılar kıvrık parantez içinde gösterilir.

    tablo oluştur (sütun karakter (uzunluk) [ kısıtlama ] | değişen karakter (uzunluk) [ kısıtlama ] | tarih [ kısıtlama ] | zaman [ kısıtlama ] | tamsayı [ kısıtlama ] | küçük [ kısıtlama ] | ondalık (kesinlik, ondalık basamaklar) [ kısıtlama ] | kayan nokta (kesinlik) [ kısıtlama ] [( , sütun karakteri (uzunluk) [ kısıtlama ] | varchar (uzunluk) [ kısıtlama) ] | tarih [ kısıtlama ] | zaman [ kısıtlama ] | int [ kısıtlama ] | smallint [ kısıtlama ] | dec (kesinlik, ondalık basamaklar) [ kısıtlama ] | float (kesinlik) [ kısıtlama ] )]) ​​​​;

    sql isim sırrı

    1970'lerin başında IBM, Dr. Codd tarafından önerilen ilişkisel veritabanı modelini uygulamaya başladı. Donald Chamberlin ve İleri Araştırma Birimi'ndeki diğer bir grup, yapılandırılmış İngilizce sorgulama dili veya basitçe devamı olarak adlandırılan bir prototip dil ​​yarattı. Daha sonra genişletildi ve geliştirildi. IBM tarafından önerilen yeni varyantın adı devam filmi/2'dir. IBM'in ilk ilişkisel veritabanı sistemi system/r'yi tasarlamak için bir programlama arabirimi (api) olarak kullanıldı. IBM, yasal nedenlerle, netice/2 olan adı sql (yapılandırılmış sorgu dili) olarak değiştirmeye karar verdi. Bu kısaltma genellikle "si-ku-el" olarak telaffuz edilir.

    Erken netice prototipleri ile artık çeşitli kuruluşlar tarafından tanınan sql standardı arasında önemli farklılıklar vardır. sql-92 standardını hazırlayan Jim Melton, hatta birçok kişinin yanlışlıkla "yapılandırılmış" kelimesinin bu dilin özelliklerini doğru bir şekilde yansıttığını düşündüğünü belirtti (jim melton ve alan r.simon "yeni sql'yi anlamak: tam bir rehber". san francisco: morgan kaufmann, 1993. isbn: 1-55860-245-3). Bu nedenle, aslında, sql sadece bir isimdir, s-q-l harflerinden oluşan bir dizidir ve başka bir şey değildir.

    İyi kötü

    çeşitli türden çok sayıda bilgisayar sisteminde çalışabilen veritabanları. 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ığı, sonuçta, çeşitli uygulamalarının uyumluluğuna yol açar ve hem genel olarak yazılım ve veritabanlarının artan taşınabilirliğine hem de veritabanı yöneticilerinin çalışmalarının çok yönlülüğüne katkıda bulunur. Öte yandan standartlar, belirli bir uygulamanın esnekliğini ve işlevselliğini sınırlar. Altında dil uygulaması SQL, ilgili üreticinin SQL yazılım ürününü ifade eder. İş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ı Bugünün yazılım pazarında.

    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, standart pakete ek olan ve bu özel uygulamada kullanılabilen ek komutlar ve seçeneklerdir.

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

    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ş

    Bilgi hizmetleri pazarının genişlemesiyle bağlantılı olarak, yazılım üreticileri giderek daha akıllı ve dolayısıyla büyük ölçekli yazılım sistemleri üretmeye başladı. Çoğu kuruluş ve bireysel kullanıcı, satın alınan ürünleri genellikle kendi bilgisayarlarında barındıramadı. 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. Kuruluşları yönetmek için çeşitli otomatik sistemlerin geliştirilmesi basitleştirilmektedir. Bununla birlikte, bu yaklaşımla, programlardan veya kullanıcı bilgisayarlarının terminallerinden gelen isteklerin tüm işlemleri onlar üzerinde gerçekleştirilir, bu nedenle basit bir isteği gerçekleştirmek için bile dosya sunucusundan okumak veya tüm dosyaları ona yazmak gerekir ve bu, çakışma durumlarına ve ağın aşırı yüklenmesine 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 tek bir sistem oluşturdukları yazılım bileşenleri arasında böyle bir etkileşim yolu anlamına gelir. 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, veritabanı uygulamalarını çalıştıran bir iş istasyonu gibi hareket ederek kullanıcı arabirimini ve uygulama mantığını yönetir. İ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 verilerin sorgulanmasını ve güncellenmesini içerir. Aynı zamanda eşzamanlılık ve kurtarma yönetimini de destekler.

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

    Bugün, "aptallar için" SQL kursları giderek daha popüler hale geliyor. Bu çok basit bir şekilde açıklanabilir, çünkü modern dünyada sözde "dinamik" web hizmetlerini giderek daha fazla görebilirsiniz. Oldukça esnek bir kabuk ile ayırt edilirler ve siteleri ayırmaya karar veren tüm acemi programcılara dayanırlar, her şeyden önce "aptallar için" SQL kurslarına kaydolurlar.

    Neden bu dili öğreniyorsunuz?

    Her şeyden önce, günümüzün en popüler blog motorlarından biri olan WordPress için çok çeşitli uygulamalar oluşturmak için SQL öğretilir. Birkaç basit dersten geçtikten sonra, yalnızca bu dilin basitliğini onaylayan herhangi bir karmaşıklıkta sorgular oluşturabileceksiniz.

    SQL nedir?

    Ya da yapılandırılmış bir sorgulama dili, tek bir amaç için yaratılmıştır: onlara erişim sağlamayı belirlemek ve bunları oldukça kısa sürelerde işlemek. SQL değerini biliyorsanız, bu sunucunun sözde "prosedürel olmayan" dillere ait olduğunu anlayacaksınız. Yani, yetenekleri yalnızca gelecekte sitede görmek istediğiniz herhangi bir bileşenin veya sonucun açıklamasını içerir. Ancak ne zaman sonuçların tam olarak ne alacağını göstermez. Bu dildeki her yeni istek, adeta ek bir "eklenti" dir. Sorguların yürütüleceği, veritabanına girildikleri sıradadır.

    Bu dil kullanılarak hangi işlemler gerçekleştirilebilir?

    Sadeliğine rağmen, SQL veritabanı çok çeşitli sorgular oluşturmanıza olanak tanır. Peki bu önemli programlama dilini öğrenirseniz ne yapabilirsiniz?

    • çeşitli tablolar oluşturun;
    • alınan verileri almak, saklamak ve değiştirmek;
    • tabloların yapısını kendi takdirinize göre değiştirin;
    • alınan bilgileri tek bloklarda birleştirin;
    • alınan verileri hesaplayın;
    • bilgilerin tam olarak korunmasını sağlamak.

    Bu dilde en popüler olan komutlar nelerdir?

    SQL "aptallar için" kurslarına katılmaya karar verirseniz, onunla sorgu oluşturmak için kullanılan komutlar hakkında ayrıntılı bilgi alacaksınız. Bugün en yaygın olanları:

    1. DDL, verileri tanımlayan bir komuttur. Veritabanındaki çok çeşitli nesneleri oluşturmak, değiştirmek ve silmek için kullanılır.
    2. DCL, verileri yöneten bir komuttur. Veritabanındaki bilgilere farklı kullanıcıların erişimini sağlamak, tabloları veya görünümleri kullanmak için kullanılır.
    3. TCL, çeşitli işlemleri yöneten bir ekiptir. Temel amacı, bir işlemin gidişatını belirlemektir.
    4. DML - alınan verileri değiştirir. Görevi, kullanıcının çeşitli bilgileri veritabanından taşımasına veya oraya girmesine izin vermektir.

    Bu sunucuda bulunan ayrıcalık türleri

    Ayrıcalıklar, belirli bir kullanıcının durumuna göre gerçekleştirebileceği eylemlerdir. Elbette en asgari olanı, düzenli bir oturum açmadır. Elbette ayrıcalıklar zaman içinde değişebilir. Eskiler kaldırılacak ve yenileri eklenecektir. Bugün, "aptallar için" SQL Server kurslarına katılan herkes, izin verilen birkaç eylem türü olduğunu bilir:

    1. Nesne türü - kullanıcının herhangi bir komutu yalnızca veritabanında bulunan belirli bir nesneyle ilgili olarak yürütmesine izin verilir. Aynı zamanda, ayrıcalıklar farklı nesneler için farklılık gösterir. Ayrıca yalnızca belirli bir kullanıcıya değil, aynı zamanda tablolara da bağlıdırlar. Birisi yeteneklerini kullanarak bir tablo oluşturduysa, o tablonun sahibi olarak kabul edilir. Bu nedenle içindeki bilgilerle ilgili olarak diğer kullanıcılara yeni ayrıcalıklar atamak onun hakkıdır.
    2. Sistem türü sözde veri telif hakkıdır. Bu tür ayrıcalıklara sahip olan kullanıcılar, veritabanında çeşitli nesneler oluşturabilir.

    SQL Oluşturma Tarihi

    Bu dil, 1970 yılında IBM Research Lab tarafından oluşturuldu. O zamanlar adı biraz farklıydı (SEQUEL), ancak birkaç yıl kullanımdan sonra değişti, biraz azaldı. Buna rağmen, bugün bile programlama alanında birçok tanınmış dünya uzmanı, adı hala eski şekilde telaffuz ediyor. SQL, yalnızca sıradan İnternet kullanıcılarının bile sorunsuz bir şekilde öğrenebileceği kadar basit bir dil icat etmek amacıyla oluşturuldu. İlginç bir gerçek şu ki, o zamanlar SQL bu tür tek dil değildi. California'da başka bir uzman grubu benzer bir Ingres geliştirdi, ancak hiçbir zaman yaygınlaşmadı. 1980'den önce, birbirinden yalnızca biraz farklı olan birkaç SQL varyasyonu vardı. Karışıklığı önlemek için 1983'te bugün hala popüler olan standart bir versiyon oluşturuldu. "Aptallar için" SQL kursları, hizmet hakkında çok daha fazla şey öğrenmenize ve birkaç hafta içinde tam olarak anlamanıza olanak tanır.

    İstemci programları

    TFTP protokolü

    TFTP- ayrıca FTP protokolü, ancak UDP protokolü üzerinden (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- Büyük dosyaları indirmenize ve kötü kanallardan indirmenize izin veren özel bir FTP istemcisi.

    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ıcı dostu bir arayüz sağlayan özel uygulamalar kullanılarak gerçekleştirilir. Tipik olarak, uygulamalar özel programlama dillerinde (C, Pascal, Visual Basic vb.) Yazılır ve çoğunlukla Delphi, C ++ Builder vb. 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. Günümüzde, tipik bir bilgisayar kullanıcısının en azından bir metin düzenleyici (örn. Microsoft Word) ve elektronik tablolar (örn. Microsoft Excel) konusunda yetkin olması gerekir. 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 verileri aramak ve analiz etmek için kullanma yeteneği, sıradan kullanıcılar için bile bilgisayar okuryazarlığının temel bir parçasıdır.

    İ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). Ancak, resmi sürüm daha kısa olarak adlandırıldı - SQL (Yapılandırılmış Sorgu Dili). Daha doğrusu SQL, verinin bir alt dilidir, çünkü DBMS başka dil olanaklarını içerir.

    1981'de IBM, SQL/DS ilişkisel DBMS'yi piyasaya sürdü. 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 Access 2003, PostgreSQL 7.3) SQL-92'yi tam olarak desteklemez, yalnızca bir düzeyde uyumlulukla destekler. 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, teknik belgelerde bulunabilir. Açıklanan öğelerin çoğu, SQL'in önceki sürümlerine, özellikle de yaygın SQL-92'ye karşılık gelir.

    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 yalnızca programcılar tarafından değil, sıradan veritabanı kullanıcıları tarafından yaygın kullanım için uygun bir araç haline getirmesi gerekiyordu. 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, veritabanlarında depolanan bilgileri kullanan bankacılar, uçak ve tren bileti satıcıları, ekonomistler ve çeşitli firmaların diğer çalışanları için hiçbir zaman bir araç haline gelmedi. 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 yordamsal dillerde, örneğin C, Visual Basic, Pascal, Java, vb. yazılan uygulamalar aracılığıyla çalışır. Uygulamalar genellikle Delphi, Microsoft Access, Visual dBase vb. Her durumda, program koduyla çalışma minimumdur. Bu uygulamalar, kullanıcıyı doğrudan SQL sorguları girmeye zorlamayan, kullanıcı dostu bir grafik arayüze sahiptir. Bunun yerine, uygulama yapar. Ancak, bir uygulama veritabanına erişmek için SQL kullanabilir veya kullanmayabilir. SQL, çok etkili olmasına rağmen veri almanın, eklemenin ve değiştirmenin tek yolu değildir ve bir uygulamada kullanmak mümkünse, bu yapılmalıdır.

    İlişkisel veritabanları, kullanıcı arabirimini sağlayan uygulamalardan bağımsız olarak var olabilir ve vardır. Herhangi bir nedenle böyle bir arayüz yoksa, veritabanına SQL kullanılarak, konsol veya veritabanına bağlanabilen, bir SQL sorgusu girip gönderebilen 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 geliyor:

    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.

    Bununla birlikte, SQL'in son sürümleri, prosedürel kontrol dillerine özgü 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.