SQL

Sizler için profesyonel yazarlarımız ile hazırladığımız makalelerimizi okuyun ve kendinizi geliştirin.

Sql Komutları
Sql Komutları
Sql komutlarından DISTINCT, IN, NOT IN, IN(SELECT...), ANY, ALL, EXISTS, NOT EXISTS, UNION, EXCEPT, BETWEEN kullanımı DISTINCT Veritabanımızda oluşturduğumuz tablonun içinde birbirinin aynı veriler bulunabilir.Bu verilerden aynı olanların listeleme esnasında bir kez yazılması için Distinct sözcüğü kullanılır Örnek: 12 ATB sınıfında adı Burak olan öğrencilerden sıralamada ilk gelen gösterilir.  SELECT DISTINCT adFROM 12atb;   komutunu kullanınca aşağıdaki ekran gelir. IN “IN” İngilizce'de de olduğu gibi içinde anlamına gelmektedir.Veri tabanımızda sahip olduğumuz verilerden sadece istediklerimize IN sözcüğüyle ulaşabiliriz.ÖRNEK: 12 ATB sınıfında numarası 13,20,24 olan öğrenciler kimdir? SELECT *FROM 12atbWHERE no IN (13, 20, 24); NOT IN  NOT IN, IN deyiminin tam tersidir. Veri tabanımızda sahip olduğumuz verilerden istemediklerimizi NOT IN sözcüğüyle belirtiriz. ÖRNEK: 12 ATB sınıfında numarası 13,20,24 olmayan öğrenciler kimdir?  SELECT *FROM 12atbWHERE no NOT IN (13, 20, 24); BETWEEN İngilizde'de de olduğu gibi arasında anlamına gelir Veri tabanımızda belirttiğimiz aralıklarla ilişki kurulmasını sağlar.ÖRNEK: 12ATB sınıfında numarası 10 ile 25 arasında olan öğrencilerin soyadları?  SELECT *FROM 12atbWHERE no BETWEEN 10AND 25;  IN(SELECT...) IN SELECT komutunda içteki Select komutunun bulduğu sonuca IN komutunu uygulamamız için kullanılır.ÖRNEK: Kadıköyde’te oturan öğrencinin çalıştığı projelerin adlarını ve yerlerini listeleme.   SELECT proj_ad,yerFROM projeWHERE proj_no IN(SELECT proje_noFROM ogrenci,çalışmaWHERE sosy_g_no = per_s_g_noAND adres LIKE '%kadiköy%');   ANY İngilizce'de de herhangi biri anlamına gelen any komutu sql komutumuzda da herhangi biri anlamını taşır.ÖRNEK: Makine bölümünde çalışan ogrencinin her hangi birinden daha düşük not alan ve elektronik bölümündeki bulunan ogrencileri listele.Bu örnekte; makine bölümü kodu = 2 ve elektronik bölümü kodu = 1 alınmıştır.  SELECT * FROM ogrenciWHERE NOT < ANY(SELECT NOT FROM ogrenciWHERE böl_no = 2) AND böl_no =1;   ALL İngilizce'de de hepsi anlamına gelen ALL komutu sql komutumuzda da hepsi anlamını taşır.ÖRNEK: Elektronik bölümünde çalışan ve makine bölümündeki ogrencilerin hepsinden daha fazla not alan ogrencileri listele.Bu örnekte Makine bölümü kodu = 2 ve Elektronik bölümü kodu = 1 alınmıştır.  SELECT * FROM ogrenciWHERE NOT >ALL (SELECT NOTFROM ogrenciWHERE bolum_no = 1)AND bolum_no = 2; EXISTS Mevcut anlamına gelir. AND,OR,NOT operatörleri ile kullanılabilir.ÖRNEK: Mandalina satan pazarcılarla ilişkili tüm bilgileri listele.  SELECT *FROM pazarciWHERE EXISTS(SELECT *FROM mey_satWHERE sat_no = pazarci_nAND meyve =mandalina);   NOT EXISTS Mevcut değil anlamına gelir. AND,OR,NOT operatörleri ile kullanılabilir.  ÖRNEK: Mandalina satmayan pazarcılarla ilişkili tüm bilgileri listele.  SELECT *FROM pazarciWHERE NOT EXISTS(SELECT *FROM mey_satWHERE sat_no = pazarci_nAND meyve =mandalina); UNION İki ayrı SELECT komutunun sonucunda elde edilen tabloların birleşimi işlemini gerçekleştirir.ÖRNEK: Adı Sadullah ve Soyadı Abdurrahman olan kişi yada kişileri işletmenin yürüttüğü projelerde çalışan bir kişi (sıradan bir personel yada bölüm yöneticisi)olarak bulunduran projelerin isimlerini ve projelerin yürütüldüğü yerleri listele.  (SELECT proj_ad,yerFROM proj,bölüm,personelWHERE bl_no=bölüm_no ANDy_sos gno = sosy_g_noAND ad ='Sadullah' AND soyad ='Abdurrahman')UNION (SELECT proj_ad,yerFROM proje,çalışma,personelWHERE proj_no = proje_no ANDPer_s_g_no = sosy_g_no AND ad ='Sadullah'AND soyad ='Abdurrahman')   KOŞULLAR:UNION  ile birden fazla SELECT ’in sonucu olan tabloların küme birleşimi işlemine tabi tutulması için 2 koşul gereklidir.    1) SELECT komutları sonucunda elde edilecek tablolar aynı sayıda kolon içermelidirler.    2)Sonuç tabloları karşılıklı olarak kolonların aynı veri tipi ve aynı genişlikte olmalıdır. EXCEPT Birden fazla tabloda birinde olup diğerinde olmayan şeklindeki bağıntıları kurmamız için kullandığımız komuttur..ÖRNEK: Metal bölümündeki ogrenci adlarından,tesviye bölümünde bulunmayanları listele. SELECT * FROM(SELECT ad FROM ogrenciWHERE bol_no=1EXCEPTSELECT ad FROM ogrenciWHERE bol_no =2);
Sql Fonksıyonlar
Sql Fonksıyonlar
Sql fonksıyonlar, count, sum, avg, max, mın, lower, upper, length, round, mod, left, right, concat, if COUNT( ):Bir tabloda seçili olan alan içerisindeki değerleri saymak için COUNT deyimini kullanırız. Anket uygulamalarımızda, bir makale için yorum,hit sayısını belirtmede kullanabiliriz.  SELECT COUNT(evet)  AS bilgi FROM anket;  Uygulamamızda anket tablomuzda yer alan evet seçeneğini kullananların sayısını buluruz. Burada AS ifadesinide gördük. biraz açalım sorgumuzu. veritabanımızda yer alan anket tablosundan cevabı evet olanların değerini topladık ve AS komutu ile oluşturduğumuz bilgi değişkenine aktardık.   SUM( ) : Belirtilen kolondaki kayıtların değerlerinin Sayısal toplamını bulur.Örnek: SELECT SUM(basari) FROM notlar; Öğrencilerin başarı notlarının toplamını ekrana verecektir.   AVG :Belirlenen bir alan içerisindeki verilerin aritmetik ortalamasını alır.  SELECT AVG(kolon_adı) FROM tablo;  Örnek :Aylık ödenen ücret ortalamasını bulmak istersek ;  SELECT AVG(aylik_ucret) FROM ucretler;   MAX:Tabloda seçtiğimiz alanda en yüksek sayısal değeri almak için MAX komutunu kullanırız.  SELECT MAX(yas) FROM uyeler GROUP BY ad; sorgumuzda uyeler tablosunda yaşı en büyük olan üyelerimizi bulabiliriz.   GROUP BY Deyimini kullandık bu ise bulduğumuz değerleri adlarına göre grupladık.   MIN:MIN komutuda MAX komutunun tam tersi olarak seçtiğimiz alandaki en düşük sayısal değeri bulmamıza yarar.  SELECT MIN(yas) FROM uyeler GROUP BY kullanici_adi; sorgumuzda uyeler yablosunda yaşı en küçük olan üyelerimizi bulabiliriz. GROUP BY deyimi ile de değerlerimizi kullanıcı adına göre gruplarız.   LOWER( ):Belirli alan içindeki verileri küçük harfe çevirir.  SELECT LOWER('text');   UPPER( ): Text olarak belirtilen alanı büyük harfe çevirir. SELECT UPPER('text');   LENGTH: Yazıda boşluklar dahil, kaç karakter olduğunu verir.  lenght('ahmet mehmet veli') "Toplam Karakter"Toplam Karakter ... 17   ROUND:Belirlenen alandaki sayının virgülden sonraki kısmının yuvarlatılmasını sağlar.  ROUND(45.923,2) -->45.92   MOD: İki sayısal değerin bölümünden kalanı verir.  mod(13,5) 3
Sql Komutlarından View Oluşturma Ve Faydaları, Myadminde Gösterimi
Sql Komutlarından View Oluşturma Ve Faydaları, Myadminde Gösterimi
View Oluşturmanın YararlarıVeri güvenliği;Veri tabanı içinde bulunan tablolardaki bazı sütunlarda bulunan bilgilerin, herkes tarafından görülmesi istenmeyebilir.Örneğin, personelin maaşlarının herkes tarafından listelenebilir olması mahsurlu olabilir. Bu durumda, Personel adlı temel (base) tablodan, persview adlı bir view oluşturulabilir.          CREATE VIEW persview          AS SELECT sicil,sos_g_no,ad,soyad,dog_tar,adres,cinsiyet,bol_no,yon_s_g_n          FROM Personel;   persview adlı view, herkesin kullanımına açık, Personel adlı temel (base) tablo ise, yetkili kişiler dışındakilere, erişilemez  hale getirilirse, maaşların herkes tarafından erişilebilir bilgi olması önlenmiş olur.      Bir view’den bilgi listelenmesi temel tablodan bilgi listelenmesinden farklı değildir.       SELECT *      FROM persview;   persview’den maaşlar hariç, tüm personel bilgileri listelenecektir. Bir temel tablodan bir view oluşturulurken, temel tablodaki aynı sütun (alan) isimlerini kullanmak zorunda değildir. Örneğin, Parça adlı ve par_no, par_ad, pr_no, fiyat ve ağırlık adlı sütun (alan) isimlerini içeren tablo kullanılarak oluşturulan parview içinde, par_no yerine parc_no, fiyat yerine fiy ve ağırlık yerine ağır isimleri kullanılmıştır:      CREATE VIEW      Parview(parc_no,fiy,ağır)      AS SELECT par_no,fiyat,ağırlık      FROM Parça;   Sorgulamanın daha basit hale gelmesiKarmaşık sorgulamalarda, bazı SELECT komutlarının sonuçları diğer SELECT komutlarınca kullanıldığında, sorgulamanın düzenlenmesinde yanlışlıklar yapma olasılığı artar.Karmaşık sorgulamalar, VIEW özelliği kullanılarak daha basit hale getirilebilir. Burada temel fikir şudur: Madem ki bir view, bir sorgulama sonucu elde edilen bilgiyi (tabloyu) isimlendirerek elde edilen bir virtüel tablodur; o halde karmaşık SELECT komutu içinde, sonucu kullanılacak başka bir SELECT komutu kullanmak yerine, bu sonucu bir view olarak isimlendirerek, view adını kullanmak. Bazı durumlarda ise, işletmenin veri tabanı uygulamasında çok sık olarak sorulan karmaşık soruları bir view yapısı içinde saklayarak, daha sonra aynı tip sorgulamalar için bu view yapısını kullanarak daha basit ifadeler kullanmakta olasıdır.Örnek: Satış bölümünde çalışan personelin herhangi birinden daha düşük maaş alan ve mühendislik bölümünde çalışan kişileri listelemek.            SELECT *            FROM Personel            WHERE maas<ANY(SELECT maas                             FROM Personel                              WHERE bol_no=2) AND            bol_no=1;         (Satış bölümü kodu 2 ve mühendislik bölümü kodu ise 1 kabul ediliyor.)Şimdi bu örneğin tablosu bir view olarak saklanırsa:      CREATE VIEW S1view      AS SELECT *      FROM Personel      WHERE maas<ANY(SELECT maas                        FROM Personel                         WHERE bol_no=2) AND      bol_no=1;   bundan sonra aynı tip sorgulama için sadece     SELECT *    FROM S1view;   yazmak yeterli olacaktır.Sadece view kullanılarak gerçekleşebilen sorgulamalarBir tablodan elde edilecek  bilgiler için, iki kademeli işlem gerektiren sorgulamalarda, ilk adımda bir view oluşturup ikinci adımda esas sorgulamayı bu view yardımı ile gerçekleştirmek, çoğu kez kaçınılmaz bir durumdur.Aşağıdaki örnek SQL ifadeleri bu konuda bir fikir verecektir:Örnek: Her bölümde, o bölümdeki ortalama maaştan daha yüksek maaş alanları listeleyiniz.Bu örnek için önce her bölümdeki ortalama maaşların bulunması gereklidir.      CREATE VIEW BOL_OR_VIEW(bol_no,ort,maas)      AS SELECT bol_no,AVG(maas)      FROM Personel      GROUP BY bol_no;  Daha sonra, yaratılan BOL_OR_VIEW yardımı ile (bu view, bölüm no’ları ve bölüm ortalama maaşlarını saklamaktadır) sorulan sorunun cevabı elde edilebilir:    SELECT *      FROM Personel      WHERE bol_no=BOL_OR_VIEW.bol_no      . AND.maas>ort_maas;    (Bu sorunun cevabını, şu ana kadar anlatılan diğer bilgilerle bulmaya çalışınız.)Veri bütünlüğünün sağlanmasıView oluşturma esnasında CHECK sözcüğünün kullanılması ile, o view’i oluştururken sağlanması gereken koşulların, daha sonra view içine veri ekleme ya da değişiklik işlemlerinde de ihmal edilmesi engellenmiş olur.      Örneğin aşağıdaki gibi bir VIEW oluşturulsun:       CREATE VIEW UST_PER_VIEW      AS SELECT FROM Personel      WHERE maas>25000000,      WITH CHECK OPTION;   Burada,maaşı 25000000’un üstünde olan personelden oluşan bir UST_PEVIEW adlı view oluşturulmuştur. Daha sonra bu view içine;      INSERT INTO UST_PER_VIEW      VALUES(27521,&#8217;27865427&#8217;,&#8217;Ayşe&#8217;     &#8216;Okan&#8217;,{01/05/62},&#8217;Cumh. Cad. 46-Taksim&#8217;,     .F.,13000000,1,&#8217;27651112&#8217;);  komutu ile maaşı 13000000 olan bir personel eklenmek istendiği zaman şu hata mesajı alınacaktır.     Error: not enough non-null values  Eğer CHECK opsiyonu kullanılmasaydı hata mesajı alınmadan bu veri view içine yüklenecekti. Bir tablo ya da view üzerinde veri ekleme, güncelleme ve silme işlemleri bir sonraki bölümde incelenecektir.