ACCESS PLATFORMUNDA SQL (STRUCTURED QUERY LANGUAGE) KODLAMA ÖRNEKLERİ
DISTINCT : Bir alanda birbirinin aynı kayıtlar bulunabilir. Öğrenciler tablosundaki aynı isimde öğrencilerin bulunması durumunda aynı isimlerin bir kere yazılması için DISTINCT deyimi kullanılır. Distinct ifadesi Select deyiminden sonra belirtilir ve tekrarlanması istenmeyen alanınbaşında yazılır. SELECT DISTINCT [BOLUM KODU] FROM OGRENCILER Bu SQL ifadesi ile OGRENCILER tablosunda kaç farklı bölümde öğrenci olduğu görülebilir. OGRENCILER tablosunda birbirinden farklı bölüm numaraları listelenmiş olacaktır. SORGU-1 : SQL - Basit SELECT - (DISTINCT PERCENT) İŞLEV : Öğrenciler tablosundaki aynı olmayan kayıtların tümü listelenir. SELECT DISTINCT (adi & " " & soyadi) AS öğrenci FROM öğrenciler;
SORGU-2 : SQL - Basit SELECT - (PERCENT) İŞLEV : Öğrenciler tablosundaki aynı olmayan ilk 5 kayıt için ad ve soyad alanlarındaki verileri listeler. SELECT TOP 5 (adi & " " & soyadi) AS öğrenci FROM öğrenciler ORDER BY soyadi DESC;
SORGU-3 : SQL - Basit SELECT - (DISTINCT, PERCENT) İŞLEV : Öğrenciler tablosundaki aynı olmayan kayıtlardan ilk 6 kayıt listelenir. SELECT DISTINCT TOP 6 (adi & " " & soyadi) AS öğrenci FROM öğrencilerğ ORDER BY (adi & " " & soyadi) ASC;
SORGU-4 : SQL - Basit SELECT - Öğrencilerin i gittiği kurslar - (LIKE) İŞLEV : Öğrenciler ve kurslar tablolarından, ad, soyad, kurs adı, kurs süresi bilgilerini adının ilk harfi S, soyadının son harfi L olan öğrenciler için listeler SELECT [adi], [soyadi],[kurs adı] AS [kursun adı], [kurs süresi i(ay)] FROM öğrenciler LEFT JOIN kurslar ON öğrenciler.[ogrenci no] = kurslar.[ogrenci no] WHERE [adi] Like 'S*' AND [soyadi] Like '*L';
SORGU-5 : SQL - Basit SELECT - Öğrencilerin i gittiği kurslar-(is not null) İŞLEV : Öğrenciler ve kurslar tablolarından, ad, soyad, kurs adı, kurs süresi bilgilerini seçerek yalnızca kurs süresinin tabloya veri olarak girildiği kayıtları sergiler SELECT [adi], [soyadi], [kurs adı] AS [kursun adı], [kurs süresi i(ay)] FROM öğrenciler LEFT JOIN kurslar ON öğrenciler.[ogrenci no]=kurslar.[ogrenci no] WHERE [kurs süresi (AY)] IS NOT NULL;
SORGU-6 : SQL - Basit SELECT - Öğrencinin i çalıştığı ğ yerler - koşul yok İŞLEV : Öğrenciler ve iş deneyimleri tablosundan ad, soyad, kurum adı, çalıştığı kurum, giriş tarihi bigilerini kriter olmaksızın listeler. SELECT [adi] & " " & [soyadi] AS [Öğrencinin adı soyadı], [kurum adı] AS [çalıştığı ğ kurum], [giriş ii tarihi] i FROM öğrenciler LEFT JOIN [is deneyimleri] ON öğrenciler.[ogrenci no]=[is deneyimleri].[ogrenci no];
SORGU-7 : SQL - Basit SELECT - Öğrencininğ çalıştığı ş ğ yerler (between) ile koşul koyarak. İŞLEV : Öğrenciler ve iş deneyimleri tablosundan ad, soyad, kurum adı, çalıştığı kurum, giriş tarihi bilgilerini kriter koyarak ; burada 1.1.2001 ile 1.1.2004 arasındaki tarihler arasında işe girenler. SELECT [adi] & " " & [soyadi] AS [Öğrencinin adı soyadı], [kurum adı] AS [çalıştığı kurum], [giriş tarihi] FROM öğrenciler LEFT JOIN [is deneyimleri] ON öğrenciler.[ogrenci no] = [is deneyimleri].[ogrenci no] WHERE [giriş tarihi] Between #1/1/2001# And #1/1/2004#;
SORGU-8 : SQL İÇ İÇE SELECT - Öğrencinin aldığı dersler - IN (SELECT) İŞLEV : Öğrenciler ve aldığı dersler tablolarından bir select sorgusunda, kriter olarak ogrenci no alanındaki değerlerin Dersler tablosundaki dersin adı alanı içinde yer alan değerlere ğ eşit olan kayıtları listeler. SELECT [adi] AS Deyim1, [soyadi] AS Deyim2, [dersin adı], [dersin kredisi] FROM öğrenciler INNER JOIN [aldığı dersler] ON öğrenciler.[ogrenci no]=[aldığı dersler].[ogrenci no] WHERE [dersin adı] IN ( SELECT [dersin adı] FROM [dersler yedek] );
SORGU-9 : SQL İÇ İÇE SELECT - MAX, MIN İŞLEV : Öğrenciler, aldığığ dersler ve öğrenciğ başarı durumu tablolarından oluşan bir seçim sorgusunda, kriter olarak bağıl değerlendirme tablosundaki not alanında yer alan değerlerden EN BÜYÜĞÜNDENküçükolanbaşarı notuna sahip olan kayıtları sergiler. SELECT * FROM öğrenciler INNER JOIN ([aldığı dersler] LEFT JOIN [öğrenci başarı durumu] ON ([aldığı dersler].[ogrenci no]=[öğrenci başarı durumu].[ogrenci no]) AND ([aldığı dersler].[ders kodu]=[öğrenci başarı durumu].[ders kodu])) ON öğrenciler.[ogrenci no]=[aldığı dersler].[ogrenci no] WHERE ([öğrenci başarı durumu].[vize notu]*0.4+[öğrenci başarı durumu].[final notu]*0.6+[öğrenci başarı durumu].[kanaat notu]*0.1) < (SELECT MAX([bağıl değerlendirme].not) FROM [bağıl değerlendirme]);
SORGU-10 : SQL -İÇ İÇE SELECT - ANY İŞLEV : Öğrenciler, aldığı dersler ve öğrenci başarı durumu tablolarından oluşan bir seçim sorgusunda, kriter olarak bağıl değerlendirme tablosundaki not alanında yer alan değerlerden HERHANGİ BİRİSİNDEN olan başarı notuna sahip olan kayıtları sergiler. SELECT * FROM öğrenciler INNER JOIN ([aldığı dersler] LEFT JOIN [öğrenci başarı durumu] ON ([aldığı dersler].[ogrenci no]=[öğrenci ğ başarı ş durumu].[ogrenci ][ no]) AND ([aldığı ğ dersler].[ders kodu]=[öğrenci başarı durumu].[ders kodu])) ON öğrenciler.[ogrenci no]=[aldığı dersler].[ogrenci no] WHERE ([öğrenci başarı durumu].[vize notu]*0.4+[öğrenci başarı durumu].[final notu]*0.6+[öğrenci başarı durumu].[kanaat notu]*0.1) >ANY (SELECT ([bağıl değerlendirme].not)from[bağıl değerlendirme]);
SORGU-11 : SQL - GROUP SELECT - En uzun kurs alan 5 öğrenci İŞLEV : Öğrenciler ve kurslar tablosu üzerinden bir grup sorgusu; en uzun kurs alan 5 öğrenciyi iilisteler. l Listeleme büyükten küçüğe doğrudur. SELECT TOP 5 [adi] & " " & [soyadi] AS [öğrencinin adı soyadı],sum([kurslar.kurs süresi (AY)])AS[En çok kurs süresi (AY)] FROM öğrenciler INNER JOIN kurslar ON öğrenciler.[ogrenci no]=kurslar.[ogrenci no] GROUP BY [adi], [soyadi] ORDER BY SUM(kurslar [kurs süresi (AY)]) DESC ORDER BY SUM(kurslar.[kurs süresi (AY)]) DESC, öğrenciler.adi ;
SORGU-12 : SQL - GROUP SELECT iş tecrübesi HAVING İŞLEV : Öğrenciler ve iş deneyimleri tablosundan, ad ve soyad üzerinden grup oluşturarak, ilk işe giriş ve en son işten çıkış tarihlerini listeleyen, kriter olarak en az iki iş ş yerinde çalışmış ş ş olmayı ön gören bir sorgu. SELECT UCase([adi]) AS [Öğrencinin adı], UCase([soyadi]) AS [Öğrencinin Soyadı], Min([is deneyimleri].[giriş tarihi]) AS [işe ilk başladığı ldğ tarih], Max(([çıkış tarihi])) AS [En son işten ayrılış tarihi], Count([is deneyimleri].[kurum yeri]) AS [çalıştığı iş yeri sayısı] FROM (öğrenciler LEFT JOIN [is deneyimleri] ON öğrenciler.[ogrenci no]=[is deneyimleri].[ogrenci no]) LEFT JOIN kurslar ON öğrenciler.[ogrenci no]=kurslar.[ogrenci no] GROUP BY UCase([adi]), UCase([soyadi]) HAVING (((Count([is deneyimleri].[kurum yeri]))>=2)) ORDER BY Min([is deneyimleri].[giriş tarihi])desc;
SORGU-14 : SQL - GROUP SELECT - Öğrencilerin aldığı toplam krediler İŞLEV : Öğrenciler ve aldığı dersler tablosu adi ve soyadi alanları üzerinden grup sorgusu oluşturarak, alınan toplam krediler listelenir. SELECT öğrenciler.adi, öğrenciler.soyadi, SUM(VAL(LEFT$([aldığı dersler].[dersin kredisi],1))+val(right$([aldığı dersler].[dersin kredisi],1))) AS [toplam kredi] FROM öğrenciler INNER JOIN [aldığı dersler] ON öğrenciler.[ogrenci no]=[aldığı dersler].[ogrenci no] GROUP BY öğrenciler.adi, öğrenciler.soyadi;
SORGU-15 : SQL -GROUP SELECT-aldığı kursların sayısı (IN) İŞLEV : Öğrenciler ve kurslar tabloları üzerinden bir grup sorgusu ile istenilen kritere uygun (IN yapısı içinde) kurs sayılarını listeler. SELECT (Ö.adi & " " & Ö.soyadi) AS [öğrencinin adı - soyadı], COUNT(K.[kurs adı]) AS [gittiği kurslarınsayısı] sayısı] FROM öğrenciler AS Ö RIGHT JOIN kurslar AS K ON Ö.[ogrenci no] = K.[ogrenci no] WHERE (((VAL([K].[kurs süresi (AY)]))>3)) GROUP BY Ö.adi, Ö.soyadi HAVING (((Öadi) (((Ö.adi) IN ("sevil","seval","derya")));"seval" "derya")));
SORGU-16 : SQL - ÇAPRAZ - aldığı kredilere göre dağılım İŞLEV : Öğrenciler ve aldığı dersler tablolarından TRANSFORM SUM(VAL(Left$([aldığı dersler].[dersin kredisi],1))+val(right$([aldığı dersler].[dersin kredisi],1))) AS toplam SELECT öğrenciler.adi, öğrenciler.soyadi FROM öğrenciler INNER JOIN [ldğ [aldığı dersler] ]ON öğrenciler.[ogrenci no]=[aldığı dersler].[ogrenci no] WHERE [aldığı dersler].[dersin kredisi] NOT IN ("2+2","2+1") 2+1 GROUP BY öğrenciler.adi, öğrenciler.soyadi ORDER BY öğrenciler.soyadi DESC PIVOT [aldığı dersler].[dersin kredisi];
SORGU-17 : SQL - ÇAPRAZ - Başarı notu ortalamaları İŞLEV : Öğrenciler ve aldığı dersler tabloları üzerinden bir çapraz sorguda, der adlarına göre alınan vize notlarının ortalamaları listeleniyor. TRANSFORM AVG([öğrenci başarı durumu].[vize notu]) AS [Ortalamavize notu] SELECT öğrenciler.adi, öğrenciler.soyadi FROM (öğrenciler INNER JOIN [aldığı dersler] ON öğrenciler.[ogrenci no]=[aldığı dersler].[ogrenci no]) LEFT JOIN [öğrenci başarı durumu] ON ([aldığı dersler].[ogrenci no]=[öğrenci başarı ş durumu].[ogrenci ][ no]) AND ([aldığı ğ dersler].[ders ][ kodu]=[öğrenci başarı durumu].[ders kodu]) GROUP BY öğrenciler.adi, öğrenciler.soyadi PIVOT [aldığı dersler].[dersin adı];
SORGU-18 : ÇAPRAZ SELECT - öğrencilerin derslere göre dağılımı İŞLEV : Öğrenciler ve aldığı dersler tabloları üzerinden bir çapraz sorguda, derslere göre öğrenci dağılımı listeleniyor. TRANSFORM COUNT([aldığı dersler].[dersin adı]) AS [Saydersin adı] SELECT öğrenciler.adi, öğrenciler.soyadi FROM öğrenciler INNER JOIN [aldığı dersler] ON öğrenciler.[ogrenci no] = [aldığı dersler].[ogrenci no] GROUP BY öğrenciler.adi, öğrenciler.soyadi PIVOT [aldığı ğ dersler].[dersin ][ adı];
SORGU-19 : ÇAPRAZ SELECT - öğrencilerin bölümlere göre dağılımı İŞLEV : Öğrenciler tablosu üzerinden çapraz sorguda, ada ve soyada göre gruplama yapılarak bölümlere göre öğrenci dağılımı listeleniyor. TRANSFORM COUNT(öğrenciler.[bolum kodu]) AS [Saybolum kodu] SELECT öğrenciler.adi, ğ öğrenciler.soyadi, ğ COUNT(öğrenciler.[bolum kodu]) AS [Aynı ismi taşıyan öğrenci sayısı] FROM öğrenciler GROUP BY öğrenciler.adi, öğrenciler.soyadi ORDER BY öğrenciler.soyadi ASC PIVOT öğrenciler.[bolum adı];
SORGU-20 : SQL - CREATE TABLE BOŞ TABLO İŞLEV : İstenilen özellikte bir tablo yaratma sorgusu CREATE TABLE [Boş tablo] ([AD SOYAD] TEXT(10), [SICIL NO] INTEGER NOT NULL UNIQUE PRIMARY KEY, [DOĞUM TARİHİ] DATE, [YAŞI] BYTE, [TC KIMLIK NO] LONG UNIQUE, [KISA BILIMSEL SAYI ] SINGLE, [UZUN BILIMSEL SAYI] DOUBLE, [FOTOGRAF] OLEOBJECT, [ÇALIŞMA SÜRESİ] TIME, [MAAŞI] CURRENCY, [ÖZ GEÇMİŞ] MEMO);
SORGU-21 : SQL - CREATE TABLE BOŞ TABLO2 İŞLEV : İstenilen özellikte bir tablo yaratma sorgusu CREATE TABLE [BOŞ TABLO2] ( Adi TEXT, Soyadi TEXT(10), Ogrencino INTEGER NOT NULL, [TC NO] INTEGER, PASSWORD INTEGER UNIQUE, CONSTRAINT SART1 PRIMARY KEY (Ogrencino), CONSTRAINT INDEX1 UNIQUE([TC NO]) );
SORGU-22 : SQL - DROP COLUMN -BOŞ TABLO den alan sil İŞLEV : İstenilen özellikte bir tablo yaratma sorgusu ALTER TABLE [BOŞ TABLO] DROP COLUMN fotograf,yaşi;
SORGU-23 : SQL - ADD COLUMN -BOŞ TABLO den alan sil İŞLEV : İstenilen özellikte bir tablo yaratma sorgusu ALTER TABLE [BOŞ TABLO] ADD COLUMN fotograf2 OLEOBJECT, YAŞI2 BYTE UNIQUE NOT NULL;
SORGU-24 : SQL KAYIT SİL - SQL - SELECT INTO öğrencinin gittiği kurslar İŞLEV : İstenilen kritere uygun kayıtlar silinir. DELETE * FROM [SQL - SELECT INTO öğrencinin gittiği kurslar] WHERE adi=[öğrenci iismii giriniz]; iii]
SORGU-25 : SQL KAYIT SİL - SQL - SELECT INTO öğrencinin gittiği kurslar İŞLEV : İstenilen kritere uygun kayıtlar silinir. DELETE FROM [SQL - SELECT INTO öğrencinin gittiği kurslar] WHERE soyadi NOT IN (SELECT soyadi FROM y ( y öğrenciler);
SORGU-26 : SQL - INSERT INTO - TEST İŞLEV : Kullanıcı tarafından girilen değerler istenilen tabloya eklenir. INSERT INTO TEST ([ogrenci no], adı, soyadı, adresi i) VALUES (12342, "kubilay", "BALCI", "İstanbul Üniversitesi Fen Fakültes Fizik Bölümü Vezneciler İSTANBUL");
SORGU-27 : INSERT INTO [SQL - SELECTINTO öğrencinin gittiği kurslar] İŞLEV : Kullanıcı tarafından parametre olarak girilen değerlerin istenilen tabloya eklenir INSERT INTO [SQL - SELECT INTO öğrencinin i gittiği iği kurslar] ( adi, soyadi, [kursun adı], [kurs süresi (AY)] ) İ SELECT [İsim giriniz], [soyad giriniz], [kurs adı giriniz], [kurs süresi giriniz];
SORGU-28 : SQL - INSERT INTO - TEST (İKİ TABLODAN) İŞLEV : İstenilen tablodan seçilen alanlardaki değerler istenilen bir diğer tabloya eklenir INSERT INTO [SQL - SELECT INTO öğrencinin gittiği kurslar] ( adi, soyadi, [kursun adı], [kurs süresi (AY)] ) SELECT öğrenciler.adi, öğrenciler.soyadi, kurslar.[kurs adı], kurslar.[kurs süresi (AY)] FROM öğrenciler LEFT JOIN kurslar ON ğ öğrenciler.[ogrenci no]=kurslar.[ogrenci no];
SORGU-29 : SQL - SELECT INTO - öğrencinin gittiği kurslar TABLO YARAT İŞLEV : Bir tablodan seçilen alanlar ile yeni bir tablo yaratılır. SELECT Ö.adi, Ö.soyadi, K.[kurs adı] AS [kursun adı],k. [kurs süresi (AY)] INTO [SQL - SELECT INTO öğrencinin gittiği kurslar] FROM öğrenciler AS Ö LEFT JOIN kurslar AS K ON Ö.[ogrenci no]=k.[ogrenci no];
SORGU-30 : INSERT INTO [SQL - SELECT INTO öğrencinin gittiği kurslar] İŞLEV : Kullanıcı tarafından parametre olarak girilen değerlerin istenilen tabloya eklenir SELECT Ö.adi AS [Öğrencinin ADI], Ö.soyadi AS [Öğrencinin ğ Soyadı], K.[kurs adı] AS [kursun adı], [kurs süresi (AY)] INTO [SQL - SELECT INTO öğrencinin gittiği kurslar] FROM öğrenciler AS Ö LEFT JOIN kurslar AS K ON Ö.[ogrenci no]=k.[ogrenci no];
SORGU-31 : TABLO YARAT - KURSLAR İŞLEV : Bir tablodan seçilen alanlar ile yeni bir tablo yaratılır. SELECT [kurslar].[öğrencinin adı - soyadı], [kurslar].[aldığı[aldığı kurs], [kurslar].süresi, süresi [kurslar].konusu, konusu [kurslar].yeri INTO [TABLO YARAT KURSLAR] FROM [Basit SELECT sorgu - öğrencilerin aldığı kurslar] AS kurslar;
SORGU-32 : TABLO YARAT - KURSLAR İŞLEV : Bir tablodan seçilen alanlar ile yeni bir tablo yaratılır. UPDATE TEST SET cinsiyet = "E" WHERE cinsiyet IS NULL;
SORGU-33 : TABLO YARAT - KURSLAR İŞLEV : Bir tablodan seçilen alanlar ile yeni bir tablo yaratılır. UPDATE TEST, [ÖĞRENCİ BİLGİLERİ] SET TEST.cinsiyet = "E", [ÖĞRENCİ BİLGİLERİ].[bolum BİLGİLERİ][bol mad] adı] = "MATEMATİK";