MODÜL. Verileri Sorgulamak" Yaşar GÖZÜDELİ. ygozudeli@verivizyon.com http://blog.verivizyon.com/ygozudeli



Benzer belgeler
«BM364» Veritabanı Uygulamaları-2

«BM364» Veritabanı Uygulamaları

SQL Komutları (2) Uzm. Murat YAZICI

Veritabanı. SQL (Structured Query Language)

Veri Tabanı Programlamaya Giriş

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

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

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

«BM364» Veritabanı Uygulamaları

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

Veri Tabanı Tasarım ve Yönetimi

Mysql Veritabanı Komutları

SQL Kod ile Tablo Oluşturma

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

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

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

VERİTABANI Veritabanı Sorgulama

6 Aritmetiksel Operatörler ve Hazır Fonksiyonlar

Veri Tabanı SQL Server ve Management Studio kurulum linkleri:

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

«BM364» Veritabanı Uygulamaları

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

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

Gruplama (aggregate) fonksiyonları bir dizi değer üzerinde hesaplama yaparlar ve bir sonuç

VERİ TABANI ve YÖNETİMİ

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

Oracle da kullanılan veri tipleri:

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

Fonksiyonlar istenilen deger tipinde dönüs yapabilir. INT, VARCHAR deger döndürebileceğiniz gibi bir tablo da döndürebilirsiniz.

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.

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

SQL e Giriş. Uzm. Murat YAZICI

YAPISAL SORGULAMA DİLİ (SQL)

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

Laboratuvar 2 Tek Kayıt Fonksiyonları

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

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

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

VERİTABANI. SQL (Structured Query Language)

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

ACCESS PLATFORMUNDA SQL

SQL Query and Table Application

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

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.

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

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

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

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

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.

1 - Adi A Harfi İle Biten Kişilerin Listesi İçin Hangisi Kullanılmalıdır? Select * From Kisiler Where Adi End A Select * From Kisiler Where Adi Like

VERİTABANI Veritabanı Yönetimi

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

Bilgisayar Uygulamaları. MySql

SQL (Structured Query Language)

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

1. Araçların tüm bilgilerini ve bağlı oldukları kiralama noktasının adres ve telefonunu içeren tam listesi:

İNTERNET TABANLI PROGRAMLAMA- 12.ders

SQL (Structured Query Language)

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

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

Veritabanına Giriş. Oğuzhan Ceylan. 19 Eylül 2011

KULLANICI TANIMLI FONKSİYONLAR

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

EBE-368 Veri Tabanı Yönetim Sistemleri SQL

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ü

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

Oracle Database 11g: Introduction to SQL

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

BİLİŞİM TEKNOLOJİLERİ

Veri Tabanı Hafta Dersi

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

3 Sql Veri Tipleri ve Örnek Veritabanı Tasarımı. Veritabanı 1

Veri Tabanı Hafta Dersi

Veri Tabanı-I 9.Hafta

Veritabanı ve Yönetim Sistemleri

Birden Çok Tabloda Sorgulama (Join)

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

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

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

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

3 Sql Veri Tipleri. Veritabanı 1

Fonksiyonlar, Count, Sum, Avg, Max, Mın, Lower, Upper, Length, Round, Mod, Left, Right, Concat, If

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

Microsoft SQL Server Sorgulama

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

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

5 Sorgulama İşlemleri. Veritabanı 1

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

SAKLI YORDAM (Stored Procedure) Sibel Somyürek

Internet Programming II

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

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

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

Veritabanı Tasarımı. Kartezyen Çarpım ve Join İşlemleri

SUNGURLU MESLEK YÜKSEKOKULU 5. T-SQL

Emrah UYSAL 1

T.C. MİLLÎ EĞİTİM BAKANLIĞI MEGEP (MESLEKİ EĞİTİM VE ÖĞRETİM SİSTEMİNİN GÜÇLENDİRİLMESİ PROJESİ) BİLİŞİM TEKNOLOJİLERİ T-SQL

2 PYTHON A GIRIŞ 13 PyCharm İle Python Projesi Oluşturma 15 Projenin Çalıştırılması 18 İlk Python Programımız 19 Açıklama Satırları 21

Transkript:

MODÜL 3 Verileri Sorgulamak" Yaşar GÖZÜDELİ ygozudeli@verivizyon.com http://blog.verivizyon.com/ygozudeli

Oturum:T-SQL'e Genel Bakış DDL DML Fonksiyonlar DCL ve SQL Server Yönetimi 2

SQL ve T-SQL SQL(Structred Query Language): ANSI ve ISO tarafından kabul edilmiş standart sorgu dili. Üç ana grupta incelenir: DDL(Veri Tanımlama Dili): CREATE-ALTER-DROP DML(Veri İşleme Dili): SELECT-INSERT-UPDATE-DELETE DCL(Veri Kontrol Dili): GRANT-DENY-REVOKE T-SQL(Transact-SQL): MS ve Sybase gibi Şirketler tarafından geliştirilen SQL standardının gerçeklenmiş hali (Sorgu + Veri Erişim Dili) SQL + Ek veri erişim ve işleme yetenekleri Döngü-Değişken-Kısıtlı Dosya Erişimi 3

T-SQL Çalıştırmak T-SQL Çalıştırılabilir Ortamlar Management Studio(SQL Server 2008) Query Analyzer Osql. gibi ortamlarda çalıştırılır. Batch(Yığın) İki GO ifadesi arası veya bir defada SQL Motoruna gönderilen ifade. GO : Query Analyzer ve osql dışında anlamsız. Bu iki program, sorguları nerelerden parçalayarak, parçalar halinde SQL Motoruna göndereceğini belirtir. ADO.NET te GO anlamsız. Bazı ifadeler, tek başlarına bir tek Yığın da yer almak zorundadır Script(Kod) İçerisinde SQL(T-SQL) ifadesi içeren metin dosyaları 4

DDL(Data Defination Language) Verinin kılıfı ile ilgili tanımlamaların yapıldığı SQL alt dili Enterprise Manager ile yönetmek daha kolay Tablo, Indeks, veritabanı, SP, View, Kullanıcı, Sütun... Gibi veritabanı nesneleri tanımlar veya değiştirir. 3 Temel ifade var: CREATE: Oluşturur ALTER:Değiştirir DROP:Siler <DDL> <veritabanı nesnesi tipi> <nesneye özgü ifadeler> CREATE TABLE deneme( kod INT, isim VARCHAR(20), soyad VARCHAR(20), telefon VARCHAR(11) ) 5

Tanımlayıcı İsimlendirme Kuralları Tanımlayıcı:Tablo adı, veritabanı adı, sütun adı, indeks adı vs... Harf ile başlamak zorundadır ([a-z]veya[a-z]). Değişken isimlerinde Türkçe deki noktalı harfler (İ, ı, Ğ, ğ, Ü, ü, Ş, ş, Ç, ç, Ö, ö) ve boşluk yer almamalıdır. Farklı Kurallar: Tanımlayıcı en fazla 128 Karakter olmalıdır. Harf, rakamlar ve _ her tanımlayıcının yapısında yer alabilir. Ancak diğer #, %, @ işaretlerinin özel anlamları vardır. Yerel değişkenler @ile başlayan bir tanımlayıcı ile adlandırılır. Global değişkenler(ortam parametre fonksiyonları) @@ ile başlayan bir tanımlayıcı ile adlandırılır. Geçici nesneler # ile başlayan bir tanımlayıcı ile adlandırılır. Kurallara uyulmayacaksa [ ] içerisine yazarak kullanmak gerekir. SELECT * FROM [1 nulu şube] ; SELECT * FROM [NOT] 6

ALTER ifadesi Veri kılıfları ile ilgili değişiklikler yapar. Veri kaybına neden olabilir ama doğrudan veriye müdahele edemez! ALTER nesne_tipi nesne_ismi degisiklik_ifadesi USE pubs ALTER TABLE deneme ALTER COLUMN telefon VARCHAR(11) NOT NULL ALTER TABLE deneme DROP COLUMN telefon ALTER TABLE deneme ADD tel VARCHAR(11) 7

SQL Server Temel Veri Tipleri(2000 e kadar) Metin Tipler ASCII CHAR(n), VARCHAR(), TEXT UNICODE NCHAR(), NVARCHAR(),NTEXT Tam Sayı Tipler TINYINT,SMALLINT,INT,BIGINT Kesirli Tipler FLOAT, DECIMAL Bool Tarih LOGICAL veya BIT DATETIME, SMALLDATETIME, DATE, TIME Parasal MONEY, SMALLMONEY UniqueIdentifier ve TimeStamp Tablo Tipi Değişkenler(Geçici Tablo üstüne kurulu) Variant Kullanıcı Tanımlı Tipler 8

DROP ifadesi Nesneleri Silmek için Kullanılır USE pubs CREATE TABLE test (isim VARCHAR(20),soyad VARCHAR(20)) GO sp_help test DROP TABLE test 9

Veri Kontrol Dili Veri kontrolü=yetki verme ve erişime kısıtlama koyma GRANT: Yetki vermek DENY: Erişime kısıtlama koymak REVOKE: Konulmuş kısıtlamayı veya verilmiş yetkiyi kaldırmak İki şey için yetki verilebilir Statement permeation= ifade çalıştırma hakları Object permeation = nesne izinleri sp_helprotect <nesne ismi> :nesne hakkında kimlere izin verilmiş? Üç şeye yetki verilebilir Kullanıcı Role Schema 10

Şemaları Yönetmek Şema oluşturmak CREATE SCHEMA webdata Şemaları Listelemek SELECT * FROM SYS.SCHEMAS Kullanıcıya Default şema atamak ALTER USER webuser WITH DEFAULT_SCHEMA = webdata Şemalar üstünden İzin Yönetimi GRANT SELECT ON SCHEMA::webdata TO webuser 11

DML(Data Manuplation Language) Veri ile ilgili İşlemler INSERT UPDATE DELETE SELECT Fonksiyonlar 12

Veri Eklemek: INSERT Yeni veri eklerken kullanılır. Her bir satır için tek tek INSERT INTO veya Hazır bir tablodan veri alınabilir INSERT INTO tablo_adi(sutun1[,sutun2,...]) VALUES(deger1[,deger2,...]) INSERT INTO deneme(isim, soyad, telefon) VALUES('Ali', 'HAVUÇCU', '02123333333'), ('Ahmet', 'HANÇER', '0312000000') 13

Kayıtları Güncellemek: UPDATE Verileri güncellemek için UPDATE ifadesi kullanılır Aynı anda bir UPDATE ifadesi ile sadece bir tablodaki kayıtlar güncellenebilir! Bir satırın bütün alanları veya sadece bir alanı veya bazı alanları güncellenebilir! WHERE şartı olmazsa, bütün satırlardaki veriler değiştirileceğinden, veri kaybı olabilir!! UPDATE tablo_ismi SET alan=deger [,alan2=deger2] WHERE şart tanımları UPDATE deneme SET isim='veli' WHERE isim='ali' 14

Verileri Silmek Tek DELETE ifadesi ile sadece bir tek tablodaki kayıtlar silinebilir İzdüşürme yok! Yani aynı anda bir satırın bazı alaları silinemez! Satır tüm olarak silinebilir! WHERE şartı olmazsa, bütün satırlardaki veriler değiştirileceğinden, veri kaybı olabilir!! DELETE FROM tablo_ismi WHERE şart tanımları DELETE FROM deneme WHERE isim='ali' 15

Verileri Seçmek ve Filtrelemek İz düşürme Seçme Ve Birleştirme işlemleri SELECT sutun_ismi1[,sutun_ismi2,...] * FROM tablo_adi WHERE sutun_ismi = deger SELECT * FROM deneme USE pubs SELECT * FROM deneme WHERE isim='ali' 16

Sadece Bazı Sütunları Seçmek=Projection Gerektiğinde bir tabloda yer alan sütunlardan sadece bir kısmı seçilebilir SELECT Gerektiğinde, urunkod, tekrarlayan urunad, kayıtlar DISTINCT ListeFiyat,markaKod ile tek satıra indirgenebilir: FROM tblurun SELECT DISTINCT markakod FROM tblurun 17

Türetilmiş Sütunlar Bazen, aritmetik işlemlerle sütunlardan ve sabitlerden yeni sütunlar türetilebilir SELECT urunkod, urunad, listefiyat*kdvoran FROM tblurun 18

Sütuna Takma Ad Vermek Sütun adı veya türetme tanımından sonra bir boşluk bırakıp takma ad yazılabilir. SELECT urunkod,urunad, listefiyat*kdvoran KDV FROM tblurun Sütun adı veya türetmeden sonra AS deyimi daha sonra takma ad yazılabilir SELECT urunkod,urunad, listefiyat*kdvoran AS KDV FROM tblurun Sütun adı veya türetme tanımından önce takma ad yazılıp = ile (normal programlama dillerindeki atama işlemi) takma ad verilebilir. SELECT urunkod,urunad, KDV = listefiyat*kdvoran FROM tblurun 19

Kayıtları Sıralamak Kayıtları bir veya daha fazla sütuna göre Artan(ASC) Azalan(DESC) Sıralamak mümkündür. SELECT sutun_ismi1[,sutun_ismi2,...] * FROM tablo_ismi ORDER BY sutun sutun_no [ASC DESC, DESC,sutun2 ASC DESC]... SELECT isim, soyad, telefon FROM deneme ORDER BY isim, soyad Artan mı azalan mı? 20

Fonksiyonlar Grupsal Fonksiyonlar Verileri gruplara ayırdıktan sonra her gruba ait istatistikleri almak için kullanılır min,max,sum,count,avg use pubs go SELECT SUM(price) FROM titles SELECT SUM(price)/COUNT(*) as 'fiyat/toplamkitap', AVG(price) as 'ORTALAMA', SUM(price)/COUNT(price) as 'ortalama' FROM titles? 21

Rowset Fonksiyonlar Bir tablo gibi davranan fonksiyonlardır İleride göreceğimiz OPENROWSET() fonksiyonu SELECT FROM <ROWSET FONKSIYON> Şeklinde FROM'dan sonra kullanılırlar SELECT tablomsu.* FROM OPENROWSET('SQLOLEDB','uzak_sunucu';'sa';'sifrem', 'SELECT * FROM pubs.dbo.authors ORDER BY au_lname, au_fname') AS tablomsu GO 22

Skaler Fonksiyonlar Skaler bir değeri veya bir sütuna ait verileri işleyen fonksiyonlardır. SELECT <skaler fonksiyon> FROM tablo WHERE <skaler fonksiyon> = <skaler fonksiyon> SELECT GETDATE() Dönüştürme Fonksiyonları CAST(<veri veya sütun> AS <veri tipi>) CONVERT(<veri tipi>,<veri veya sütun>, <çevirme tür kodu>) SELECT CONVERT(VARCHAR(16), GETDATE(),104) SELECT 'bugün ' + CAST(GETDATE AS VARCHAR(16)) + ' ' + ' tarihidir' 23

Başlıca Skaler Fonksiyonlar Alan Konfigürasyon Fonksiyonları Fonksiyon @@SERVERNAME @@VERSION @@CONNECTIONS Açıklama SQL Server'n çalıştığı sunucunun ağ adı SQL Server'in motorunun sürümü SQL Server açıldıktan sonra kaç bağlantı kurulmudur Matematiksel Metadata Metin Zaman ABS EXP LOG COL_LENGHT isindexable LEFT RIGHT SUBSTRING UPPER LOWER LTRIM RTRIM REPLACE GETDATE() YEAR (tarih) MONTH (tarih) DAY (tarih) Mutlak değer bulur Üs alır Logaritma alır. Sütunun ne kadar uzunlukla tanımlandığını gösterir. Bir view'in üstünde indeks tanımlanabilip tanımlanamayacağını döndürür. Metnin solundan n tane harf almak için kullanılır Metnin sağından n tane harf almak için kullanılır. Metnin içinden belli sayıda harf almak için kullanılır. Metni büyük harfe çevirir Metni küçük harfe çevirir Metnin başındaki beyaz karakterleri atar Metnin sonundaki beyaz karakterleri atar. Belli bir ifadeyi başka bir ifade ile değiştirmek için kullanılır. Sistemin şu anki saat ve tarihi Verilen tarihin yılını bulur. Verilen tarihin ayını bulur Verilen tarihin gününü bulur 24

Deterministik NonDeterministik Herhangi bir fonksiyonu aynı şartlarda çağırsak, aynı neticeyi verir mi? SELECT LEN('aaaa'), GETDATE() GO SELECT LEN('aaaa'), GETDATE() 25

Matematiksel Fonksiyonlar Fonksiyon Kullanım Amacı Örnek ABS (sayı) Sayının mutlak değerini bulur. SELECT ABS (-0.19) ASIN (sayi) Sinüs değeri verilen sayının Açı karşılığını bulur. SELECT ASIN (1) CEILING (sayı) Ondalıklı sayıyı tavana yuvarlar. SELECT CEILING (9.501) DEGREES (radian) Sayının derece karşılığını verir. SELECT DEGREES (PI()/2) EXP (sayi) Sayının üssünü hesaplar. FLOOR (sayi) Ondalıklı sayıyı tabana yuvarlar. SELECT FLOOR (9.501) PI() Virgülden sonra 16 hanelik pi sayısı SELECT PI() RADIANS (aci) Verilen açının radyanını hesaplar SELECT RADIANS (180) RAND (baslama) ROUND (sayı, adet) SIN (Radyan) 0-1 arasında yalancı rastsal sayı üretir. Baslama değeri isteğe bağlıdır. Basamak yuvarlamak için kullanılır. Verilen adet kadar sondan basamak yuvarlar. Radyan cinsinden verilen açının Sinüsünü hesaplar 26 SELECT RAND (3) SELECT (9.501,-1) SELECT SIN (PI()/2) SQRT (sayi) Verilen sayının karekökünü hesaplar SELECT SQRT(4) ROUND

WHERE ile Satır Filtreleme Bazen sonuçta bütün satırların yer alması istenmez=selection SELECT sutun-ismi1[,sutun-ismi2,... *] FROM tablo_ismi WHERE şart ifadeleri 27

Karşılaştırma İşaretleri İşaret Karşılığı = Eşittir > Büyüktür < Küçüktür >= Büyüktür veya Eşittir (Büyük-Eşit) <= Küçüktür Veya Eşittir (Küçük-Eşit) <> Eşit Değildir!= Eşit Değildir LIKE IS NULL IS NOT NULL Metin karşılaştırma operatörü Bir değerin NULL olduğuna bakmak için Bir değerin NULL olmadığına bakmak için 28

Birden Fazla Şartla Satır Süzmek Birden fazla şart Mantıksal Operatörlerle yan yana getirilebilir OPERATÖR NOT AND OR Ne zaman doğrudur? Yanlış ise Her ikisi de doğru ise Herhangi biri doğru ise Parantezler kaldırılırsa ne olur? SELECT urunkod, urunad FROM tblurun WHERE (listefiyat<100 OR listefiyat>1000) AND urunkod>2700 29

Bay Doğru: XXX OR 1=1 30

NULL Karşılaştırma SQL'de herhangi bir değerin NULL olup olmadığı IS operatörü ile karşılaştırılır. NOT ile kullanılabilir (IS NOT NULL) SELECT sutunlar FROM tablo-ismi WHERE test-sutunu IS [NOT] NULL 31

Aralık Sorgulama SELECT ifadesi WHERE sutun-ismi BETWEEN alt-sinir AND ust-sinirsinir SELECT urunkod, urunad, ListeFiyat FROM tblurun WHERE listefiyat BETWEEN 500 AND 100;? 32

Kayıtları Sıralamak ORDER BY her zaman en sonda SELECT sutun-ismi FROM tablo-ismi WHERE sartlar... ORDER BY sutun1 [DESC ASC][,sutun2 [DESC ASC] SELECT urunkod,urunad, listefiyat*(1+kdvoran) AS KDV FROM tblurun WHERE listefiyat<500 ORDER BY markakod, 3 DESC Seçilmemiş bir sütuna göre sıralama yapılabilir! 33

Dönen Kayıt Sayısını Sınırlamak İki yöntem: TOP n ile en baştan n kayıt seçilir SQL Server 2000'de sadece SELECT'lerde Daha etkin SET ROWCOUNT 100 Oturum Parametresi SELECT dışında INSERT,UPDATE,DELETE ile de kullanılabilir SET ROWCOUNT 0 (eski haline geri döndürmek için) 34

Baştan N kayıt 35

Karakter Karşılaştırmaları Sabit olan string ifade ve tarih 'string' şeklinde ' arasında verilir 36

LIKE Deyimi ve JOKER Karakterler Joker karakterler sadece LIKE ile karşılaştırılırken kullanılabilir! Joker Karakter İşlevi % Standart SQL'de birden fazla harf veya rakamın yerini tutar. _ Standart SQL'de bir tek harf veya rakam yerini tutar [HARF] [^HARF] [A-Z] Herhangi bir harf yerine gelebilecek harfleri belirtir. Herhangi bir harf yerine gelemeyecek harfleri belirtir. A ile Z arasıdaki harfleri ifade eder 37

İçinde geçen Karakteri Bulmak İlk iki harfi A veya K olan markaların listesi 38

Metinleri Ulamak Metinler için + işareti ulama işlevini yerine getirir: SELECT kullanicikod, isim + ' ' + soyad as kullanici FROM tblkullanici SELECT kullanicikod, isim + '''' + soyad as kullanici FROM tblkullanici WHERE isim='%yaşar%'? 39

IN ve NOT IN Bir ifadenin eldeki bir grup veri içerisinde olup olmadığına bakmak için kullanılır: SELECT urunkod, urunad,markakod FROM tblurun WHERE markakod = 1 OR markakod = 2 OR markakod = 3 --- yerine SELECT urunkod, urunad,markakod FROM tblurun WHERE markakod IN(1,2,3) SELECT markakod FROM tblmarka WHERE marka='vestel' SELECT * FROM tblurun WHERE markakod IN( SELECT markakod FROM tblmarka WHERE marka='vestel' ) 40

Çok Sonuç Döndüren Alt Sorgular Doğrudan Matematiksel Karşılaştırma işaretleri ile bağlanamaz! IN-NOT IN-EXISTS-NOT EXISTS ile bağlanabilir SELECT urunkod, urunad, listefiyat FROM tblurun WHERE markakod IN(SELECT markakod FROM tblmarka WHERE MarkaKod<10) Karşılaştırma işaretleri ile bağlanmak için {ANY-SOME ALL } Kullanılabilir SELECT urunkod, urunad, listefiyat FROM tblurun WHERE markakod < ALL (SELECT markakod FROM tblmarka WHERE MarkaKod<10) 41

EXISTS ve NOT EXISTS Bir alt sorgunun satır döndürüp döndürmediğini test etmek için kullanılır SELECT urunkod, urunad, listefiyat FROM tblurun WHERE markakod EXISTS = ANY IN (SELECT markakod FROM tblmarka WHERE MarkaKod<10) 42

Türetilmiş Tablo Alt sorgular hep WHERE veya SELECT'den sonra mı kullanılır?? bir sorgunun içerisinde başka bir alt sorgu, yeni tablo değişkene aktarılıp buradan yeniden sorgulanabilir En fazla olan markadan kaç adet ürün var? SELECT MAX(grup.adet) FROM ( SELECT markakod, COUNT(*) as adet FROM tblurun GROUP BY markakod ) AS grup 43

LAB 1. Aşağıdaki sorguları yazıp çalıştırınız Bütün ürünleri seçiniz Bütün markaları seçiniz bütün döviz türlerini seçiniz 2. Adventureworks.person.contact veritabanında farklı isimlerin bir listesini bulunuz 3. Aşağıdaki sorguları çalıştırınız: tblurun tablosundan sadece şu alanları seçiniz: urunkod, urunad, listefiyat tblmarka tablosundan sadece marka ve markakod sütunlarını seçiniz dövizlerin adını ve kodunu gösteriniz 4. tblurun tablosu üstünde aşağıdaki şekilde sütun adlarını farklı gösterecek bir sorgu yazınız: urunkod yerine ÜRÜN_KOD urunad yerine ÜRÜN_AD listefiyat yerine LİSTE_FİYAT 5. urunad = 'PS/2 Q TR Multimedya Klavye (Anti-RSI)' şartını sağlayan ürünlerin ürün kodunu, ürün adını ve liste fiyatını görüntüleyecek sorguyu yazınız. 6. Barkod'u null olan ürünlerin urunad, barkod alanlarını seçiniz 7. tblmarka sütununda, markakod ve marka sütunlarını tek sütun olarak birleştiriniz. Araya _ işareti koyunuz. 8. Fiyatı ortalamanın üstünde olan ürünlerin bir listesini alt sorgu yardımı ile nasıl bulursunuz? Daha iyi bir sorgu nasıl elde edilebilir? Aynı işlemi yapacak bir SQL ifadesini T-SQL değişken yardımı ile iki aşamalı nasıl yaparsınız? 9. Vestel marka ürünleri, iç içe sorgu ile nasıl bulursunuz? Bunun için: Öncelikle tblmarka tablosunda marka alanı VESTEL olan markanın marka kodunu bulunuz Ardından tblurun tablosunda marka kodu bu 44değere eşit olan ürünleri listeletiniz.

Tabloları Birlikte Sorgulamak Normalizasyon kuralları ile parçalanan tablolardan bir tek rapor elde etmek gerektiğinde JOIN kullanılır En fazla 255 tablo bir defada JOIN edilebilir(sql Server 2000) Klasik JOIN=INNER JOIN JOIN Türü Açıklama Klasik JOIN INNER JOIN OUTER JOIN CROSS JOIN WHERE cümleciği ile yapılan birleştirme. SQL Server, bu ifadeyi bir INNER JOIN gibi ele alır. İki tablo birlikte sorgulanırken, her iki tabloda da sadece uyuşan kayıtlar sonuçta yeralabilir. İki tablo birlikte sorgulanırken, tablolardan herhangi birinde veya sadece birinde yer alan kayıtları sorgulamak için kullanılır. LEFT, RIGHT ve FULL olmak üzere 3 alt türden oluşur İki tablonun kartezyen çarpımını bulmak için kullanılır. Aslında WHERE kısmında ilişki şartı yeralmayan Klasik JOIN de bir çeşit CROSS JOIN'dir. 45

Klasik JOIN FROM'dan sonra iki veya daha fazla tablo adı WHERE'de geçiş yapılacak sütunlar eşitlenir SELECT tblurun.urunkod, tblurun.uruad, tblurun.listefiyat, tblmarka.marka FROM tblurun, tblmarka WHERE tblurun.markakod=tblmarka.markakod 46

Tabloları Birlikte Sorgulamak-2 Marka Tablosu Ürün Tablosu Her bir ürün ve markası SELECT U.urunKod, U.urunAd,.urunAd,U.ListeFiyat,M.Marka.Marka FROM urun U INNER JOIN marka M ON M.MarkaKod=.MarkaKod=U.MarkaKod 47

Tabloları Birlikte Sorgulamak-3 OUTER JOIN TIPI Açıklama TabloABC TabloDEF LEFT Soldaki tabloda yer alan kayıtlar, sağdaki tabloda karşılıkları olmasa bile getirilirler 1 2 3 4 RIGHT FULL Sağdaki tabloda yer alan kayıtlar, soldaki tabloda karşılıkları olmasa bile getirilirler. Aslında LEFT JOIN ile aynıdır. Tek değişen, tabloların ifadede geçiş sıralarının farklı olmasıdır. Her iki tablodaki karşılıklı olarak eşit satırı olmayan kayıtlar getirilirler. Yani LEFT JOIN ile RIGHT JOIN'in bileşiminden ibaret bir 3 4 SELECT tabloabc.sütun1, 1 3 1 3 2 6 tablodef. sütun2 sonuçta yeralmaz sonuç döndürür. FROM tabloabc soldaki tablo LEFT JOIN tablodef sağdaki tablo 48

CROSS JOIN 49

Tablo ve Sorguları Düşeyde Birleşirmek İki tablo veya iki sorgu tek sorgu gibi yapılabilir ALL kullanılırsa ortak veriler tekrarlar SELECT ifadesi1 UNION [ALL] SELECT ifadesi2 SQL Server 2005'den itibaren INTERSECT EXCEPT 50

Gruplamalı Fonksiyonlar Fonksiyon AVG (sutun-ismi) Kullanım amacı Verilen sütun ismindeki değerlerin grup başı ortalamasını bulur. COUNT (sutun-ismi *) MAX (sutun-ismi) MIN (sutun-ismi) SUM (sutun-ismi) (sutun- VARIANCE ismi) æ (sutun- COUNT_BIG ismi *) STDEV (sutun-ismi) æ Verilen bir sütuna veya bütün satırlara bakarak grup başı satır sayısını hesaplar. COUNT fonksiyonundan farkı bigint sonuç döndürmesidir. Daha fazla sayıda satırdan oluşan tablolarda kullanılabilir. Verilen sütundaki değerlerden, her bir grup için en yüksek olanları bulur. Verilen sütundaki değerlerden, her bir grup için en düşük olanları bulur. Verilen sütun ismindeki değerlerin grup başı toplamını bulur. Verilen sütundaki değerlerden, her bir grup için varyans hesabı yapar Verilen sütundaki değerlerden, her bir grup için standart sapmayı hesaplar. æ : SQL Server Tarafından standardın dışında sağlanan fonksiyonları göstermektedir. 51

Gruplamalı Fonksiyonlar Bütün ürünlerin en ucuz ürünü? Bütün ürünlerin en pahalı ürünü? Bütün ürünlerin ürün sayısı? Bütün ürünlerin ortalama fiyatı? Bütün ürünlerin TL fiyat toplamı? Her markanın en ucuz ürünü? Her markanın en pahalı ürünü? Her markadaki ürün sayısı? Her markanın ortalama fiyatı? Bütün ürünlerin en pahalısı? 52

Soru Liste fiyatı 50 birim'dan daha pahalı ürünler için her bir marka grubunda ortalama birim fiyatı raporlayın. Sonuçta, 16'dan daha az ürün içeren markalar yeralmasın. Daha Fazla ürünü olan marka daha üstte yer alsın 53

Lab Veritabanı Atölyesi(8.Ünite)-S.201 Tüm Sorular Veritabanı Atölyesi(9.Ünite)-S.226 1,2,3.Sorular Tablo Birleştirme Alıştırmaları Her bir ürünü ve markasını bulunuz Her bir ürünün fiyatını YTL olarak hesaplayınız(ipucu:tbldoviz tablosunda kur dönüşüm bilgileri yer almaktadır) Her bir ürünün fiyatını YTL olarak hesapladıktan sonra en pahalı ve en ucuz ürünü bulunuz 54

55