Nesne Oluşturmak: CREATE CREATE ifadesi ile veritabanındaki nesnelerden herhangi birisi oluģturulabilir.

Benzer belgeler
SQL Komutları (2) Uzm. Murat YAZICI

Veri Tabanı Hafta Dersi

Veritabanı. SQL (Structured Query Language)

VERİTABANI. SQL (Structured Query Language)

Veri Tabanı Tasarım ve Yönetimi

Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı. Öğr. Gör. Cansu AYVAZ GÜVEN

SQL Kod ile Tablo Oluşturma

ÜNİTE NESNE TABANLI PROGRAMLAMA I. Uzm. Orhan ÇELİKER VERİTABANI SORGULARI İÇİNDEKİLER HEDEFLER

ÜNİTE NESNE TABANLI PROGRAMLAMA I. Uzm. Orhan ÇELİKER VERİTABANI SORGULARI İÇİNDEKİLER HEDEFLER

TEMEL SQL SORGU ÖRNEKLERİ. Yukarıdaki sorguyu yazıp çalıştırdığımızda db_market adında bir veritabanı oluşturulur.

VERİTABANI ve YÖNETİMİ

DAO İLE SQL KOMUTLARI. Sql komutlarını artık veri tabanında kullanmaktan başka çaremiz yok arkadaşlar. Şimdi bu sql derslerimize başlayalım.

VERİ TABANI YÖNETİM SİSTEMLERİ I

Bu işleçlerin dışında, aşağıda belirtilen karşılaştırma işleçlerinden de yararlanılır.

SQL Query and Table Application

SQL'e Giriş. SELECT Deyimi. SQL Komutları. Yardımcı Deyimler

SQL (Structured Query Language)

SORGULAR. Öğr.Gör.Volkan Altıntaş

İNTERNET PROGRAMCILIĞI HAFTA. MYSQL ile VERİTABANI İŞLEMLERİ - 1. Hazırlayan Fatih BALAMAN. İçindekiler. Hedefler. Veritabanı Oluşturma, Silme

VERİTABANI Veritabanı Sorgulama

Mysql Veritabanı Komutları

Veri Tabanı Programlamaya Giriş

5 Sorgulama İşlemleri. Veritabanı 1

5 Sorgulama İşlemleri. Veritabanı 1

Aşağıdaki tabloyu inceleyin. Sorgulama işlemlerini bu tabloya göre yapacağız.

Like Joker Karakterler, Order By, Group By

Aşağıdaki şemaya dikkat edin. Sorgulamalarımızı genellikle bu şemaya göre yapacağız.

SQL veri tabalarına erişmek ve onları kullanmak için geliştirilmiş bir lisandır.

Bölüm 3: DML Veri İşleme Dili

YAPISAL SORGULAMA DİLİ (SQL)

Veri Tabanı SQL Server ve Management Studio kurulum linkleri:

ACCESS PLATFORMUNDA SQL

YAPISAL SORGULAMA DİLİ. BARIŞ ARIBURNU barisariburnu.com

Oracle Database 11g: Introduction to SQL

Tablolar Arası İlşikiler ve Alan Özellikleri Siparis.musteri_no musteri.musteri_no Siparis.urun_kodu musteri.urun_kodu

Veritabanı Yönetim Sistemleri (Veritabanı Tasarımı) SQL (Structured Query Language)

Bölüm 4: DDL Veri Tanımlama Dili

SQL e Giriş. Uzm. Murat YAZICI

5 SQL- Yapısal Sorgulama Dili. Veritabanı 1

Lıke Joker Karakterler, Is [not] Null, Order By, Group By, As

Tablolar Arası İlşikiler ve Alan Özellikleri. Şekil 1. Magaza veritabanının tabloları ve tablolar arasındaki ilişkiler

BMB202. Veritabanı Yönetimi Ders 5. İlişkisel Cebir ve SQL. Erdinç Uzun NKÜ Çorlu Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

Veri Tabanı-I 9.Hafta

Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü Veri Tabanı ve Yönetimi (BİL 301)

6 Aritmetiksel Operatörler ve Hazır Fonksiyonlar

Data Programming SQL Language. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

T.C GAZİ ÜNİVERSİTESİ BİLİŞİM ENSTİTÜSÜ YÖNETİM BİLİŞİM SİSTEMLERİ ANA BİLİM DALI MS SQL KOMUTLARI VE MS SQL KOMUTLARI İLE İLGİLİ UYGULAMALAR

SUNGURLU MESLEK YÜKSEKOKULU 5. T-SQL-2

Genel Kavramlar. Bilgisayar ortamında işlenebilecek durumda bulunan kayıtlar. Birbiri ile ilişkili veriler topluluğu ve veriler arası ilişkiler

Veritabanına Uygulanması

IN ve NOT IN Tablodaki alan içeriklerine ulaşmak için IN deyimi kullanılır.

VERĐTABANI YÖNETĐM SĐSTEMLERĐ

08221 Veri Tabanı II. Elbistan Meslek Yüksek Okulu GÜZ Yarıyılı. Hafta IV. Öğr. Gör. Murat KEÇECĠOĞLU

15 Aralık 2011 / Perşembe.

SQL'e Giriş. SELECT Deyimi. SQL Komutları. 1. DDL (Data Definition Language - Veri Tanımlama Dili)

SQL Deyimleri. Öğr.Gör.Volkan ALTINTAŞ Volkanaltintas.com

Yukarıdakilerden hangileri DML (Data Manipulation Language) ile gerçekleştirilir?

Veri Tabanı Yönetim Sistemleri Bölüm - 6

BMB202. Veritabanı Yönetimi Ders 6. SQL. Erdinç Uzun NKÜ Çorlu Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

Çok tablolu sorgulamalar

Nesneler üzerinde değişiklik yapmak için kullanılır. Veri tabanındaki nesnelerin oluşturulabilmesi için CREATE komutu kullanılır.

20461C Querying Microsoft SQL Server Modül Seviye Belirleme Testi

Veritabanı Tasarımı. SQL Deyimi Anatomisi

SP_RENAMEDB eski_isim, yeni_isim VEYA SP_RENAMEDB 'eski isim', 'yeni isim'

Basit SQL Sorguları Veritabanından verilerin SELECT cümleleri ile alınması işlemine sorgulama denir.

SORGULAR VE ÇEŞİTLERİ II

VERİ TABANI YÖNETİM SİSTEMLERİ I

VERĐTABANI YÖNETĐM SĐSTEMLERĐ

8 Oracle da tablo yapısı içinde otomatik artan kolon yoktur. (identity kolon

Aşağıdaki tabloyu inceleyin. Sorgulama işlemlerini bu tabloya göre yapacağız.

İNTERNET TABANLI PROGRAMLAMA- 12.ders

VERİTABANI Veritabanı Yönetimi

SQL PROGRAMLAMA. Bir batch, bir arada bulunan bir dizi SQL deyimidir. Batch ayıracı GO deyimidir.

Veri Tabanı Yönetim Sistemleri Bölüm - 4

BAYİLERİMİZE ÖZEL. 13 Ağustos İlgili Modül/ler : Genel. İlgili Versiyon/lar : ETA:SQL, ETA:V.8-SQL

Veri tabanı içinde bulunan tablolardakibazı sütunlarda bulunan bilgilerin, herkes tarafından görülmesi istenmeyebilir.

Birleştirme (JOIN) işlemi

Öğr. Gör. Cansu AYVAZ GÜVEN VERİTABANI-II. Değişken Tanımlama Ve Akış Kontrol Deyimleri

SQL (Structured Query Language)

Veri Tabanı Hafta Dersi

8 Aralık 2011 / Perşembe. Veri Tabanına Giriş

SP_RENAMEDB eski_isim, yeni_isim VEYA SP_RENAMEDB 'eski isim', 'yeni isim'

KULLANICI TANIMLI FONKSİYONLAR

VERİ TABANI YÖNETİM SİSTEMLERİ I

Öğr. Gör. Cansu AYVAZ GÜVEN VERİTABANI-II. Değişken Tanımlama Ve Akış Kontrol Deyimleri

SUNGURLU MESLEK YÜKSEKOKULU 5. T-SQL

Veritabanı sistemlerinde veri bütünlüğünü sağlayabilmek için CONSTRAINTS olarak adlandırılan bazı zorlayıcı ifadeler kullanılabilir.

- Tablo (Table):Veri saklama için temel yapıdır. Bir veya daha fazla sütundan ve sıfir veya daha fazla satırdan oluşur.

Veri Tabanı II Alt Sorgular

Kullanıcı tanımlı fonksiyonlar SQL2000 ile gelen özelliklerden biridir. Fonksiyonlar tek bir değer veya tablo döndürmek için kullanılır.

Aşağıdaki şemaya dikkat edin. Sorgulamalarımızı genellikle bu şemaya göre yapacağız.

Sorgudan elde edilen değerin değişkenlere aktarılmasını sağlar. Sorgudan tek satır dönmesi gerekir. Çok satır dönerse hata verir.

Veritabanı ve Yönetim Sistemleri

Emrah UYSAL 1

Oracle da kullanılan veri tipleri:

Birden Çok Tabloda Sorgulama (Join)

08221 Veri Tabanı II. Elbistan Meslek Yüksek Okulu GÜZ Yarıyılı Eki Öğr. Gör. Murat KEÇECĠOĞLU

-- işareti tek satırlık açıklamalarda kullanılır. Açıklama olarak yazılan satırın önüne konulması yeterlidir.

DML işlemleri. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı May Öğr. Gör. Murat KEÇECĠOĞLU

Transkript:

Nesne Oluşturmak: CREATE CREATE ifadesi ile veritabanındaki nesnelerden herhangi birisi oluģturulabilir. CREATE nesne_tipi nesne_adı *varsa nesneye ait tanımlamalar+ Nesne ve değiģken isimlendirme kuralları: 1. Harf veya alt çizgi ( _ ) ile baģlamalıdır. 2. Özel anlamları olan @, # ve $ ile baģlamamalıdır. 3. DeğiĢken isimlerinde Türkçedeki noktalı harfler (Ġ, ı, Ğ, ğ, Ü, ü, ġ, Ģ, Ç, ç, Ö, ö) ve boģluk yer almamalıdır. 4. SELECT, NOT, DESC, DELETE, UPDATE, gibi ayrılmıģ kelimeler kullanılmamalıdır. Bu kurallara uymayan bir isim kullanılmıģsa, hataya neden olmaması içinköģeli parantez ( [ ] ) veya çift tırnak ( ) içersinde yazılmalıdır. Örneğin; 1 nolu Ģube adında bir tablo varsa; SELECT * FROM [1 nolu şube] ifadesi kullanılabilir. Ġsimlendirme Notasyonları 1. Deve Notasyonu: degiskenadi veya BirNoluSube Ģeklinde yazılırsa anlaģılır bir isim elde edilir. Ġlk harf büyük olarak yazılan deve notasyonu, Pascal Notasyonu olarak anılır. 2. Alt Çizgi Notasyonu: degisken_adi veya bir_nolu_sube Ģeklinde yazılır. 3. Macar Notasyonu: Her ismin baģına türüne özgü bir önek getirilir. tblkullanici, vwkitap gibi. Ġsimlendirme Töresi Kural olmadığı halde programcılar arasında kuralmıģ gibi kabul edilen ortak tarzlar vardır. SQL Server da veritabanı geliģtirirken de bu türden töreler vardır. Genel olarak SQL ifadeleri büyük harfle yazılır. Nesne isimleri mümkün olduğu kadar kısa ve anlamlı seçilir. Nesne isimlerinde küçük harf temelli bir notasyon kullanmak. Bazı nesnelerde nesnenin türünü ilk bakıģta anlatacak bir önek kullanmak. (Macar Notasyonu) sp_subecirosu, vw_kardaki_subeler Nesne ismi verilirken tekil isim tercih etmek. Siparisler yerine Siparis demek gibi. Türkçe nesne ismi kullanacaksanız, iyelik eki aldırmamak iģinizi kolaylaģtıracaktır. Ör: ismi yerine isim, ev_telefonu yerine ev_telefon Türkçe sistemlerde ID ve id ismi yerine Kod ismini kullanmak. 1

Veritabanı oluşturmak AĢağıdaki komut yeni bir veritabanı yaratır. CREATE DATABASEveritabanı_ismi CREATE DATABASE firma Tablo Oluşturmak AĢağıdaki komut yeni bir tablo yaratır. CREATE TABLEtablo_ismi (sütun_ismi1 veritipi, sütun_ismi2 veritipi.. ) CREATE TABLE musteri (MusteriNo integer, Adi VARCHAR(12), Telefon VARCHAR (10), Adres TEXT, Sehir VARCHAR(12) ) 2

Nesnelerde Değişiklik Yapmak : ALTER ALTER nesne_tipi nesne_adı değişiklik_ifadesi Tabloya Yeni Bir Sütun Eklemek AĢağıdaki komut mevcut bir tabloya yeni bir sütün ilave eder. ALTER TABLEtablo_ismiADDsütun_adiveritipi ALTER TABLE musteri ADD e-posta VARCHAR(40) Tablodan Sütun Silmek AĢağıdaki komut mevcut bir tablodaki bir sütunu siler. ALTER TABLE tablo_ismidrop COLUMNsütun_adi ALTER TABLE musteri DROP COLUMN telefon Tablodaki Sütunun Özelliklerini Değiştirmek AĢağıdaki komut mevcut bir tablodaki mevcut bir sütunun özelliklerini değiģtirir. ALTER TABLE tablo_ismialter COLUMNsütun_adiveritipi ALTER TABLE musteri ALTER COLUMN sehir VARCHAR(20) 3

Nesne Silmek : DROP DROP nesne_tipi nesne_adı Tabloyu Yok Etmek AĢağıdaki komut tabloyu tamamen yok eder. DROP TABLEtablo_ismi DROP TABLE musteri Veritabanını Yok Etmek AĢağıdaki komut veritabanını tamamen yok eder. DROP DATABASEveritabanı_ismi DROP DATABASE firma 4

Tabloya Kayıt Ekleme Bir tabloya yeni veri giriģi için INSERT INTO ifadesi kullanılır. Tabloya eklenecek veriler karakter veya karakter kümesi Ģeklinde ise tırnak ( ) içerisinde yazılır. Sayısal türdeki veriler tırnak kullanılmadan doğrudan yazılır. Komut içerisinde belirtilmeyen sütunlara NULL (boģ değer) atanır. INSERT INTO tablo_ismi (sütun1,sütun2,sütun3, ) VALUES (deger1,değer2,değer3, ) MusteriNo Adi Telefon Adres Sehir 1 Ali 3225555555 Seyhan Adana 2 Mustafa 5453322 Kozan Adana 3 Veli 34534512 NULL Mersin INSERT INTO musteri (MusteriNo, Adi, Adres, Sehir) VALUES (4, Hasan, Sofulu, Adana ) Komut sonrasında tablonun durumu; MusteriNo Adi Telefon Adres Sehir 1 Ali 3225555555 Seyhan Adana 2 Mustafa 5453322 Kozan Adana 3 Veli 34534512 NULL Mersin 4 Hasan NULL Sofulu Adana 5

Tablodaki Kayıtları Değiştirme (güncelleme) Tablo içerisinde mevcut olan kayıtları değiģtirmek için UPDATE ifadesi kullanılır. WHERE ifadesi ile değiģtirilmek istenen kayıt veya kayıtlar seçilir. DeğiĢiklik sütunların hepsini kapsamak zorunda değildir. Ġstenilen sütunlarda değiģiklik yapılabilir. UPDATE tablo_ismi SET sütun1=deger1, sütun2=değer2,. WHERE koģul MusteriNo Adi Telefon Adres Sehir 1 Ali 3225555555 Seyhan Adana 2 Mustafa 5453322 Kozan Adana 3 Veli 34534512 NULL Mersin 4 Hasan NULL Sofulu Adana UPDATE musteri SET Telefon = 6453454, Adres= Yavuzlar WHERE MusteriNo = 4 Komut sonrasında tablonun durumu; MusteriNo Adi Telefon Adres Sehir 1 Ali 3225555555 Seyhan Adana 2 Mustafa 5453322 Kozan Adana 3 Veli 34534512 NULL Mersin 4 Hasan 6453454 Yavuzlar Adana 6

Tablodaki Kayıtları Silme Tablo içerisinde mevcut olan kayıtları silmek için DELETE ifadesi kullanılır. WHERE ifadesi ile silinmek istenen kayıt veya kayıtlar seçilir. Where ifadesi yazılmazsa tablodaki tüm kayıtlar silinir. DELETE FROM tablo_ismi WHERE koģul MusteriNo Adi Telefon Adres Sehir 1 Ali 3225555555 Seyhan Adana 2 Mustafa 5453322 Kozan Adana 3 Veli 34534512 NULL Mersin 4 Hasan 6453454 Yavuzlar Adana DELETE FROM musteri WHERE MusteriNo = 2 Komut sonrasında tablonun durumu; MusteriNo Adi Telefon Adres Sehir 1 Ali 3225555555 Seyhan Adana 3 Veli 34534512 NULL Mersin 4 Hasan 6453454 Yavuzlar Adana 7

SELECT İfadesi Tablo veya tablolardan istenilen verilerin seçimi için kullanılır. Tablo ve kayıtlar üzerinde herhangi bir değiģiklik meydana getirmez. Select ifadesinin temel kullanımı aģağıda anlatılmıģtır. SELECT sütunlar FROM tablo_adi Seçilmek istenen sütunların isimleri aralarına virgül konularak yazılır. Tüm sütunlar seçilmek istenirse * (yıldız) yazılarak kullanılır. Musteri tablosundaki tüm satır ve sütunları göster; SELECT * FROM musteri Sonuç Kümesi; MusteriNo Adi Telefon Adres Sehir 1 Ali 3225555555 Seyhan Adana 3 Veli 34534512 NULL Mersin 4 Hasan 6453454 Yavuzlar Adana Musteri tablosundaki Adi ve Sehir sütunlarını göster; SELECT Adi, Sehir FROM musteri Sonuç Kümesi; Adi Sehir Ali Adana Veli Mersin Hasan Adana 8

KoĢullara bağlı sorgulama; WHERE ifadesi kullanılarak sadece istenilen kayıtların sorgulanması sağlanabilir. SELECT sütunlar FROM tablo_adi WHERE koģul musteri tablosundaki Sehir sütununda Adana olan kayıtları göster; SELECT * FROM musteri WHERE Sehir = Adana MusteriNo Adi Telefon Adres Sehir 1 Ali 3225555555 Seyhan Adana 4 Hasan 6453454 Yavuzlar Adana musteri tablosundaki Sehir sütununda Adana olan ve Adi sütununda Ali olan kayıtları göster; SELECT * FROM musteri WHERE Sehir = Adana and Adi = Ali MusteriNo Adi Telefon Adres Sehir 1 Ali 3225555555 Seyhan Adana musteri tablosundaki Sehir sütununda Adana olan veya Adi sütununda Veli olan kayıtları göster; SELECT * FROM musteri WHERE Sehir = Adana or Adi = Veli MusteriNo Adi Telefon Adres Sehir 1 Ali 3225555555 Seyhan Adana 3 Veli 34534512 NULL Mersin 9

musteri tablosundaki Sehir sütununda Adana olan ve Adi sütununda Ali olmayan kayıtları göster; SELECT * FROM musteri WHERE Sehir = Adana AND NOT (Adi = Ali ) MusteriNo Adi Telefon Adres Sehir 4 Hasan 6453454 Yavuzlar Adana Joker Karakter Kullanarak Sorgulama; % : sıfır veya daha fazla herhangi bir karakteri ifade eder. _ (alt çizgi) : Herhangi bir tek karakteri ifade eder. *HARF+ Herhangi bir karakter yerine gelebilecek karakter kümesini ifade eder *^HARF+ : Herhangi bir karakter yerine gelemeyecek karakter kümesini ifade eder [A-Z+ : Herhangi bir karakter yerine A ile Z arasındaki karakterlerin gelebileceğini ifade eder. musteri tablosundaki adının ilk karakteri A olan kayıtları göster; SELECT * FROM musteri WHERE Adi LIKE a% musteri tablosundaki adının içinde AL geçen kayıtları göster; SELECT * FROM musteri WHERE Adi LIKE %al% musteri tablosundaki adı Lİ ile biten kayıtları göster; SELECT * FROM musteri WHERE Adi LIKE %li musteri tablosundaki adı A ile başlayıp 3 harfli olan kayıtları göster; SELECT * FROM musteri WHERE Adi LIKE a 10

NULL değeri sorgulama; musteri tablosundaki adres sütunu NULL değer içeren kayıtları göster; Select * From musteri WHERE Adres is NULL musteri tablosundaki adres sütunu NULL değer içermeyen kayıtları göster; Select * From musteri WHERE Adres is not NULL 11

Sorgu Sonuçlarını Sıralama; Oluşturulan sorgunun istenilen bir veya birden çok sütuna göre sıralanması için tablo adından sonra ORDER BY ifadesi kullanılır. Artan (küçükten büyüğe) sıralama için sütun isminden sonra ASC, azalan (büyükten küçüğe) sıralama için sütun isminden sonra DESC yazılır. Sütun isminden sonra hiçbirşey yazılmazsa ASC yani artan sıralama olduğu kabul edilir. OrderBy ifadesi kullanılmazsa sorgulama sonuçları kayıtların yapılma sırasına göre gelecektir. Select * fromtablo_adi ORDER BY referans_sütun Fis_no Cari_Adi Islem_Turu Tutar Tarih 1 Yıldırım A.Ş. Satış 50000 04.04.2011 2 Yıldırım A.Ş. Satış 25000 14.06.2011 3 Ateş A.Ş. Alım 15000 22.06.2011 4 Deniz A.Ş. Alım 40000 22.06.2011 5 Yıldırım A.Ş. Satış 30000 28.06.2011 İşlem tutarına göre artan sıralama yap; Select * from Cari ORDER BY Tutar Fis_no Cari_Adi Islem_Turu Tutar Tarih 3 Ateş A.Ş. Alım 15000 22.06.2011 2 Yıldırım A.Ş. Satış 25000 14.06.2011 5 Yıldırım A.Ş. Satış 30000 28.06.2011 4 Deniz A.Ş. Alım 40000 22.06.2011 1 Yıldırım A.Ş. Satış 50000 04.04.2011 Cari_Adi na göre azalan sıralama yap; Select * from Cari ORDER BY Cari_Adi DESC Fis_no Cari_Adi Islem_Turu Tutar Tarih 1 Yıldırım A.Ş. Satış 50000 04.04.2011 2 Yıldırım A.Ş. Satış 25000 14.06.2011 5 Yıldırım A.Ş. Satış 30000 28.06.2011 4 Deniz A.Ş. Alım 40000 22.06.2011 3 Ateş A.Ş. Alım 15000 22.06.2011 12

Sütunlar için takma isim kullanmak; Sorgulama sonucunda listelenen kayıtların sütun isimleri tablo içerisinde kullanılan isimler ile aynı olacaktır. Sorgulama sonucu oluģan sütun isimlerini değiģtirmek için AS ifadesi kullanılır. AS ifadesi sütun isminden hemen sonra yazılır ve bir boģluk bırakılarak takma isim yazılır. Verilen takma isim boģluk, noktalama iģaretleri, Türkçe harfler veya özel karakterler içeriyorsa veya rezerve edilen bir kelime ise tırnak içerisinde yazılmalıdır. Select sütun_ismi1 AS takma_isim1, sütun_ismi2 AS takma_isim2, sütun_ismi3 AS takma_isim3, Fromtablo_ismi Select Fis_No AS Fiş No, Cari_Adi AS Carinin Adı, Islem_Turu AS İşlemin Türü, Tutar, Tarih from Cari Fiş No Carinin Adı İşlem Türü Tutar Tarih 1 Yıldırım A.Ş. Satış 50000 04.04.2011 2 Yıldırım A.Ş. Satış 25000 14.06.2011 3 Ateş A.Ş. Alım 15000 22.06.2011 4 Deniz A.Ş. Alım 40000 22.06.2011 5 Yıldırım A.Ş. Satış 30000 28.06.2011 13

Sorgu Sonucu Tekrarlı Satırları Önlemek; Select ifadesi ile yapılan sorgulamada aynı bilgi birden fazla satırda bulunuyorsa bunların tamamı listelenecektir. Kayıtların sadece bir kez listelenmesi için DISTINCT ifadesi kullanılır. Select DISTINCT sütun(lar) Fromtablo_ismi Sorgulama iģleminde sütun ismi yerine * yazılırsa sütunların tamamı aynı olan kayıtlar bir kez listelenecektir. Müşterilerin listesini DISTINCT kullanmadan alırsak; SELECT Cari_Adi FROM Cari Cari_Adi Yıldırım A.Ş. Yıldırım A.Ş. Ateş A.Ş. Deniz A.Ş. Yıldırım A.Ş. Müşterilerin listesini DISTINCT kullanarak alırsak; SELECT DISTINCT Cari_Adi FROM Cari Cari_Adi Yıldırım A.Ş. Ateş A.Ş. Deniz A.Ş. 14

Sütunlar Üzerinde Matematiksel İşlemler; Aritmetik ifadeler tablodan çekilen veriler üzerinde işlemler yapmak için kullanılabilir. Aritmetik işlem yapılacak sütunun sayısal tipte olması gerekmektedir. Örneğin personel bilgisi sorgulanırken maaşları %20 arttırarak sorgulamak için maas*120/100 şeklinde yazmak yeterlidir. Burada yapılan işlem sadece sorgu sonucu gösterirken geçerlidir. Sütunlardaki verilerin değerlerinde herhangi bir değişiklik yapmamaktadır. Birden fazla sütun içeren hesaplamalar da yapılabilir. Tutar değerini 500 arttırarak yapılan sorgulama; Select Fis_No AS Fiş No, Cari_Adi AS Carinin Adı, Islem_Turu AS İşlemin Türü, Tutar + 500AS Yeni Tutar, Tarih from Cari Fiş No Carinin Adı İşlem Türü Yeni Tutar Tarih 1 Yıldırım A.Ş. Satış 50500 04.04.2011 2 Yıldırım A.Ş. Satış 25500 14.06.2011 3 Ateş A.Ş. Alım 15500 22.06.2011 4 Deniz A.Ş. Alım 40500 22.06.2011 5 Yıldırım A.Ş. Satış 30500 28.06.2011 15

Karakter içeren sütunların birleştirilmesi; Sütunların içerdiği değerleri baģka bir karakterle veya sütunla birleģtirerek aynı sütunda görme iģlemidir. Oracle da, MS SQL de + karakteri kullanarak, MySQL de ise CONCAT ifadesi ile yapılır. Sicil_no adi soyadi gorev sehir 1 Ali Murat Personel Şefi Adana 2 Mustafa Kuş Tekniker Osmaniye 3 Ayşe Demir Mühendis Niğde 4 Veli Nazik Memur Adana Select Sicil_no, Adi + + Soyadi + - + gorev) AS Personel Bilgisi, sehir From Personel Sicil_no Personel Bilgisi sehir 1 Ali Murat Personel Şefi Adana 2 Mustafa Kuş Tekniker Osmaniye 3 Ayşe Demir Mühendis Niğde 4 Veli Nazik - Memur Adana Bir sütunun veya verinin veri türünü değiştirmek için CAST fonksiyonu kullanılır. SELECT Cari_Adi + işlemin Tutarı= + CAST( Tutar AS VARCHAR) + TL AS Açıklama FROM Cari Açıklama Yıldırım A.Ş. işlem tutarı=50000 TL Yıldırım A.Ş. işlem tutarı=25000 TL Ateş A.Ş. işlem tutarı=15000 TL Deniz A.Ş. işlem tutarı=40000 TL Yıldırım A.Ş. işlem tutarı=30000 TL 16

Verinin İstenilen Bölümünü Almak Bir karakter kümesi içerisinden istenilen bölümü almak için SUBSTRING fonksiyonu kullanılır. SUBSTRING(Veri, Başlangıç, Karakter_Sayısı) Örneğin; Deger = ÇÜ Kozan Meslek Yüksekokulu ise, Substring(deger,4,5) işleminin sonucu Kozan olacaktır. Burada kelime kümesi içinde 4. Karakterden başlayarak 5 adet harf alınmıştır. (Boşlukları da dâhil ediyoruz) Sicil_no adi soyadi Gorev sehir 1 Ali Murat Personel Şefi Adana 2 Mustafa Kuş Tekniker Osmaniye 3 Ayşe Demir Mühendis Niğde 4 Veli Nazik Memur Adana Select SUBSTRING(Gorev, 2, 7) From Personel SUBSTRING(Gorev, 2, 7) ersonel ekniker ühendis emur Bir karakter kümesinin başlangıcından itibaren belirli bir sayıda karakter almak için LEFT fonksiyonu kullanılır. LEFT(Veri, Alınacak_Karakter_Sayısı) Bir karakter kümesinin sonundan itibaren belirli bir sayıda karakter almak için RIGHT fonksiyonu kullanılır. RIGHT(Veri, Alınacak_Karakter_Sayısı) 17

TOPLAM BULMA SUM fonksiyonu bir sütun için toplam almakta kullanılır. Musteri Borc Alacak Musteri1 600 700 Musteri2 400 200 Musteri3 800 400 Musteri4 200 600 Select SUM(Borc) as Borc, SUM(Alacak) AS Alacak From Kasa Borc Alacak 2000 1900 Ortalama Değeri Hesaplama AVG fonksiyonu bir sütunun ortalamasını hesaplamak için kullanılır. Musteri Borc Alacak Musteri1 600 700 Musteri2 400 200 Musteri3 800 400 Musteri4 200 600 Select AVG(Borc) as Ortalama Borç, AVG(Alacak) AS Ortalama Alacak From Kasa Ortalama Borç Ortalama Alacak 500 475 18

En Büyük ve En Küçük Değeri Bulma MAX fonksiyonu bir sütunun içerdiği değerlerden en büyüğünü bulur. MIN fonksiyonu bir sütunun içerdiği değerlerden en küçüğünü bulur. Musteri Borc Alacak Musteri1 600 700 Musteri2 400 200 Musteri3 800 400 Musteri4 200 600 Select MIN(Borc) as En Küçük Borç, MAX(Borc) as En Büyük Borç, MIN(Alacak) AS En Küçük Alacak, MAX(Alacak) AS En Büyük Alacak From Kasa En Küçük Borç En Büyük Borç En Küçük Alacak En Büyük Alacak 200 800 200 700 Satır Sayısı Bulma COUNT fonksiyonu belirtilen sütun içerisindeki satır sayısını bulmak için kullanılır. Fis_no Cari_Adi Islem_Turu Tutar Tarih 1 Yıldırım A.Ş. Satış 50000 04.04.2011 2 Yıldırım A.Ş. Satış 25000 14.06.2011 3 Ateş A.Ş. Alım 15000 22.06.2011 4 Deniz A.Ş. Alım 40000 22.06.2011 5 Yıldırım A.Ş. Satış 30000 28.06.2011 Kaç tane Cari_Adi olduğunu bul; Select COUNT(Cari_Adi) from Cari COUNT(Cari_Adi) 5 Kaç tane birbirinden farklı (aynı olmayan) Cari_Adi olduğunu bul; Select COUNT(distinc(Cari_Adi)) from Cari COUNT(distinc(Cari_Adi)) 3 19

Gruplandırarak Sorgulama Tablo içerisinde ortak özelliklere sahip satırları gruplandırarak iģlem yapmak için GROUP BY ifadesi kullanılır. Fonksiyonlar gruplara uygulandığında oluģan grup sayısı kadar satır sonuç olarak geri dönecektir. SELECT sütun_isimleri FROM tablo_isimleri WHERE koģul GROUP BY gruplama_sütun_isimleri ORDER BY sıralama_sütun_isimleri GROUP BY ifadesi WHERE den sonra ORDER BY dan önce yazılır. Gruplama yapılacak sütunlar, tablonun içerdiği sütunlar olabilir veya hesaplama iģlemleri sonucu elde edilmiģ sütunlar olabilir. Gruplama yapılan sütunlar NULL değeri içeriyorsa NULL değerler tek bir grup içinde toplanır. Gruplama içeren sorgular WHERE koģulunu içeriyorsa önce koģul ifadesi satırları seçer, sonra gruplama gerçekleģir. Sütunlar için kullanılan takma isimler GROUP BY ifadesinde kullanılabilir. Ama GROUP BY ifadesi içinde takma isim verilemez. AVG, COUNT, MAX, MIN, SUM fonksiyonları gruplama iģlemi yapılırken kullanılır. Bu fonksiyonlar tablonun tamamına uygulandığında tek bir sonuç dönerken, grup iģlemlerinde her bir grup için ayrı bir sonuç dönecektir. Sicil_no adi soyadi gorevi maas 1 Ali Murat Tekniker 1600 2 Mustafa Kuş Tekniker 1800 3 Ayşe Demir Mühendis 2100 4 Veli Nazik Memur 1500 5 Dursun Aydın Mühendis 2500 6 Mete Cuma Memur 1100 Select gorev, AVG(maas) AS ort From Personel Group By Gorev Gorev Ort Memur 1300 Mühendis 2300 Tekniker 1700 20

Select gorev, COUNT(maas) AS per_say From Personel GroupByGorev Gorev Per_say Memur 2 Mühendis 2 Tekniker 2 Gruplandırma İşlemlerinde Koşul İfadeleri Gruplandırma iģlemi yapılırken koģul ifadesi herhangi bir fonksiyonun sonucuna göre değil de sütun ismine göre yapılmak istenirse WHERE ifadesi kullanılabilir. Ancak bir fonksiyondan dönecek değere göre koģul ifadesi yazılmak istenirse HAVING kullanılmak zorundadır. HAVING ifadesi GROUP BY ifadesinden sonra, varsa ORDER BY ifadesinden önce yazılmalıdır. Fis_no Cari_Adi Islem_Turu Tutar Tarih 1 Yıldırım A.Ş. Satış 50000 04.04.2011 2 Yıldırım A.Ş. Satış 25000 14.06.2011 3 Ateş A.Ş. Alım 15000 22.06.2011 4 Deniz A.Ş. Alım 40000 22.06.2011 5 Yıldırım A.Ş. Satış 30000 28.06.2011 Toplam satış tutarı 100.000 den büyük müşterileri listele; Select Cari_Adi as Musteri, Sum(Tutar) as Toplam Satış from Cari Where Islem_Turu = Satış Group By Cari_Adi Having Sum(Tutar) > 100000 Sonuç Kümesi; Musteri Toplam Satış Yıldırım A.Ş. 105000 21

Gruplandırılmış Verileri Özetlemek Gruplama iģlemleri, verileri belli gruplara ayırdıktan sonra bu gruplar hakkında belli değerleri bulmak için yapılır. CUBE Deyimi : GROUP BY ifadesi ile gruplara ayrılan veriler üstünde toplam ve ara toplamları da görebilmemizi sağlar. Bu amaçla WITH CUBE deyimini kullanmamız gerekir. Select T.Takim_Adi AS "Takım Adı", Count(*) as "Futbolcu Sayısı" from futbolcu F left join Takimlar T on F.Takim = T.TkNo Group By T.Takim_Adi With Cube Birden fazla sütuna GROUP BY uygulanırsa ara toplamlar da sonuç kümesinde getirilir. Select T.Takim_Adi AS "Takım Adı", U.Ulke_Adi as "Ülke", Count(*) as "Futbolcu Sayısı" from futbolcu F left join Takimlar T on F.Takim = T.TkNo left join Ulkeler U on F.Uyruk = U.UlNo Group By T.Takim_Adi, U.Ulke_Adi With Cube 22

ROLLUP Deyimi : CUBE deyimi gibi alt toplam ve toplam değerleri elde etmek için kullanılır. ROLLUP deyimi sadece içten dıģa doğru sütunlara ait toplamları bularak ilerler. GROUPING ile Özetleri Düzenlemek : GROUPING, CUBE ve ROLLUP deyimleri ile birlikte kullanılan bir gruplamalı fonksiyondur. Bir satır, CUBE veya ROLLUP ile üretilmiģ ise 1, üretilmemiģ ise 0 değeri döndürür. Select CASE WHEN GROUPING(T.Takim_Adi)=1 THEN 'TOPLAM' ELSE ISNULL(T.Takim_Adi,'Bilinmiyor') END, CASE WHEN GROUPING(U.Ulke_Adi)=1 THEN 'ARA TOPLAM' ELSE ISNULL(U.Ulke_Adi,'Bilinmiyor') END, Count(*) as "Futbolcu Sayısı" from futbolcu F left join Takimlar T on F.Takim = T.TkNo left join Ulkeler U on F.Uyruk = U.UlNo Group By T.Takim_Adi, U.Ulke_Adi With Cube 23