- 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.

Benzer belgeler
Veri Tabanı SQL Server ve Management Studio kurulum linkleri:

SQL Komutları (2) Uzm. Murat YAZICI

VERİTABANI Veritabanı Yönetimi

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

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

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

SQL Kod ile Tablo Oluşturma

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

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

ACCESS PLATFORMUNDA SQL

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

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

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

Mysql Veritabanı Komutları

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

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

Veri Tabanı Programlamaya Giriş

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

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

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

Veritabanı. SQL (Structured Query Language)

YAPISAL SORGULAMA DİLİ (SQL)

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

Oracle da kullanılan veri tipleri:

Veri Tabanı-I 9.Hafta

Veri Tabanı Tasarım ve Yönetimi

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

Veri Tabanı Hafta Dersi

Oracle Database 11g: Introduction to SQL

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

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

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

SQL (Structured Query Language)

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

EBE-368 Veri Tabanı Yönetim Sistemleri İlişkisel Model (The Relational Model)

VERİTABANI. SQL (Structured Query Language)

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

SQL e Giriş. Uzm. Murat YAZICI

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

Veritabanına Uygulanması

SORGULAR VE ÇEŞİTLERİ II

Bilgisayar Uygulamaları. MySql

İNTERNET TABANLI PROGRAMLAMA- 12.ders

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

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

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

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

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

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

SQL (Structured Query Language)

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

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ü

SQL'e Giriş 2. CREATE TABLE tabloadı (kolon isimleri ve veri türleri) (BOLUM_NO NUMBER, BOLUM_ADI CHAR(10));

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

Veritabanlarına ve SQL'e Giriş. Devrim GÜNDÜZ. Teknoloji Destek Merkezi --

VERİTABANI ve YÖNETİMİ

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

BÖLÜM -7: TABLOLARI OLUŞTURMA VE YÖNETME

SUNGURLU MESLEK YÜKSEKOKULU 5. T-SQL

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

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

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

Veri Tabanı Hafta Dersi

UZAKTAN EĞİTİM MERKEZİ

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

1 ORACLE 11G DATABASE SERVER LE

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

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

MOBİL UYGULAMA GELİŞTİRME

Veritabanı Tasarımı. Tablo Değiştirme

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

6 Aritmetiksel Operatörler ve Hazır Fonksiyonlar

İlişkisel Veri Tabanları I

SQL (Structured Query Language) kendisi bir programlama dili olmamasına rağmen bir çok kişi tarafından programlama dili olarak bilinir.

Kişiler tablosundan AD kolonu yusuf olan tüm satırları siler. ORDER BY deyimi bir tablodan SELECT ile seçilen verileri sıralamak için kullanılır.

EBE-368 Veri Tabanı Yönetim Sistemleri SQL

İngilizce'de Relational Database Management System (RDBMS) olarak ifade edilir.

VERİTABANI Veritabanı Sorgulama

3. Hafta Tablo İşlemleri BPR255 Veritabanı Yönetim. Bu Derste Öğrenecekleriniz: 1. Tablo İşlemleri

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.

Üst Düzey Programlama

3. Hafta Tablo İşlemleri BPR255 Veritabanı. Bu Derste Öğrenecekleriniz: 1. Tablo İşlemleri Kısıtlamalar (Constraints)

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

Veritabanı Tasarımı. Tablo Oluşturma

BÖLÜM -6: VERİLERİ DEĞİŞTİRMEK

KISITLAMALAR (CONSTRAINT)

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

BİLİŞİM TEKNOLOJİLERİ

TESİ. indeks. söylenebilir?? bir ilişkidir d) Hiçbiri. veya somutlaştırılmış. düzeyidir? sağlayabilir? sına. d) Hepsi. olabilir? c) Verilerin d) Hepsi

SQL Query and Table Application

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

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

Her bölüm için kısa bazı girişler yapılacak ve bölüm içerisinde anlatılacak olan konuların genel başlıkları belirtilecektir.

Maliye Uzman Yardımcılığı Giriş Sınavı (Bilişim)-16 Mart 2014 B

TRIGGER. Trigger lar, tablo üzerinde tanımlanabilen ve bu tablo üzerinde bir işlem gerçekleştiğinde tetiklenen programlama ögeleridir.

Durhan GABRALI Veritabanı Organizasyonu Dersi (11B)

Veri Tabanı Hafta Dersi

VERİTABANI ORGANİZASYONU

Like Joker Karakterler, Order By, Group By

Transkript:

Veri tabanı (database) Nedir? : İçinde bulunan nesneleri vasıtasıyla çok büyük verileri saklayan ve bu verilerle işlem yapan bir platformdur. İlişkisel veri tabanı Yönetim Sistemi - RDMS (Relational Database Management System ) Nedir: veri tabanları çok sayıda tabloların bir araya getirilmesi sonucu oluşturulmaktadır. Dolayısıyla ortaya bu tablolar ya da diğer veri tabanı nesneleri arasında çeşitli ilişkiler kurma durumu çıkmıştır. Ortaya çıkan bu teknolojik yapıya da RDBMS (Relational Database Management System- İlişkisel veri tabanı Yönetim Sistemi) denmiştir.(bu türe uyan en yaygın veri tabanları: Access, mysql, sql server, oracle v.b.gibi) RDBMS YAPISI 1. Tablolar içerisinde veri oluşturma ve tutma. 2. Veriler ve tablolar arasında ilişki kurma. 3. Veriler arasındaki ilişkiler için gerekli olan kuralları belirleme. (Örn: Primary Key, Foreign Key) 4. Sistem problemlerinde verileri kurtarma.(örn: recover,backup,restore) 5. Client uygulamalarından gelen istekleri cevaplama.(yazılımlar aracılığı ile veri yönetimi) 6. Transaction ve analiz için veri kaynaklarını yönetme. Veritabanında bulunan temel kavramlar: - 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. - Sütun (Column): Tablodaki bir veri türüne karşılık gelir. - Satır (Row):Kaydın (record) diğer adıdır. Sütun değerleri grubudur. 1

- Alan (Field):Bir satır-sütun koordinatındaki değerdir. Alanda veri bulunmazsa, bu alan NULL değer içerir denir. - Birincil Anahtar (Primary Key): Tekrarlanmayacak alandır. Buradaki veri aynı tablo içinde birden fazla tekrarlanamaz. (örnek: personel bilgilerinde T.C.No ) - Yabancı Anahtar (Foreign Key): Aynı veya farklı bir tablo içindeki birincil anahtarlara başvuran (referencing) sütun veya sütun gruplarıdır. Yabancı anahtar değeri bir birincil anahtar değeri ile aynı olmalı ve NULL olmamalıdır. Tablo çeşitleri: 1- Ana Tablo (main table): Veri tabanında mutlaka olması gereken tablo çeşididir. Ana tabloda mutlaka bir birincil anahtar (primary key) alanı olması gerekir. Çünkü bu tabloya bağlı bir ya da daha fazla alt tablo olabilir. Bu tablolarla ilişki söz konusu alanda kurulur. (örnek: T.C. kimlik no) Bu alan boş veri içeremez, veri tekrarı olamaz. 2- Alt tablolar (sub tables): Ana tablodaki her bir satırdaki bir kayıt için detay bilgilerin işlendiği bir ya da birden fazla tablolardır. (örnek: Öğrenci kimlik tablosunda bir öğrenci tektir ve bu tablo bir ana tablodur. Oysa bu tablodaki her bir öğrenciye ait derslerin ve notların işlendiği tabloda öğrenci T.C. kimlik birden fazla satırda olacaktır. Dolayısıyla burada öğrenci not tablosu kimlik tablosuna bağlı bir alt tablodur. Bağlı oldukları alan da T.C. kimlik no dur) VERİ BÜTÜNLÜĞÜ Veri bütünlüğünü sağlamak için şu kısıtlamalar olur: - Nesne Bütünlüğü (Entity Integrity): Birincil anahtar NULL 2

değer almamalı ve aldığı değer tekrarsız ve tek olmalıdır. Örneğin, yukarıda verdiğimiz KIMLIK_BILGILERI tablosuna birincil anahtar olan TC_KIMLIK_NO sütunundaki değeri 11111111111 olan bir kayıt daha girememiz nesne bütünlüğünü bozacağından, veri tabanı bu kaydı girmemize izin vermez. Benzer şekilde, TC_KIMLIK_NO 'su olmayan (NULL olan) bir kayıt da giremeyiz. - Başvuru Bütünlüğü (Referential Integrity): Yabancı anahtar değerleri birincil anahtar değerine eşit olmalıdır. Örneğin, yukarıda verdiğimiz GOREV_KAYDI tablosuna yabancı anahtar olan TC_NO sütunundaki değeri 11111111111 olan bir kaydı, KIMLIK_BILGILERI tablosunda TC_KIMLIK_NO 'su 11111111111 olan bir kayıt bulunmadığında, giremeyiz. - Sütun Bütünlüğü (Column Integrity): Sütundaki değerler tanımlı veri tipine uymalıdır. Örneğin, TC_KIMLIK_NO sütunu sayı değerler içerdiğinden o sütuna metin değerler giremeyiz. - Kullanıcı Tarafından Tanımlanan Bütünlük (User-defined Integrity): Değerler kullanıcının tanımladığı kurallara uymalıdır. Örneğin, NOT NULL olarak tanımlanmış bir alana NULL değer giremeyiz 3

VERİ TABANINDA TABLOLAR ARASI İLİŞKİ İŞLEMLERİ Tüm ilişkisel veri tabanlarında ortak alan içeren ana ve alt tablolar arasında ilişki kurmak mümkündür. Bunun avantajı; 1- ilişki kurulmuş ana tabloda ilgili alanda yapılacak bir değişikliğin tüm alt tablolara da yansıması (örnek: Öğrenci KIMLIK tablosunda TCNO su değişen bir öğrencinin OGRENCI_NOTLARI tablosunda da TCNO su bağlı olarak değişir) 2- Yine ana tabloda silinen kayıt ilişkili tablolarda da silinir. Böylece veri tabanını kontrol işlemi daha da kolaylaşmış olur Bu ilişkinin hatasız olabilmesi için aşağıdaki kurallara uymak gerekir: - İlişki kurulacak tablolardan biri mutlaka ana tablo olmalı - Ana tabloda mutlaka birincil anahtar olmalıdır - Alt tabloda mutlaka ana tablodaki birincil anahtarda aynı türden ve aynı verileri içeren bir alan olmalıdır - Alt tabloda bu alana işlenmiş verilerin mutlaka ana tabloda da olması gerekir Transact Sql Nedir : Kısaca veri tabanı üzerinde değişiklik yaptıran işlemlerdir diyebiliriz.t- SQL (Transact Structure Query Language-Yapısal Sorgulama Dili işlemleri) (Örn: İnsert, update, delete sorgusu) Transact işlemleri SQL komutları kullanılarak yapılır. O halde SQL komutlarını tanıyalım: 4

SQL KOMUT GRUPLARI - Veri Getirme (Data Retrieval) Komutları- DRL : Select: Veri tabanında bulunan bir ya da birden fazla tablolardan veri getirmek için (sorgulamak) kullanılan komuttur Örnek: select TC_NO,ADI_SOYADI FROM KIMLIK KIMLIK tablosundaki TC_NO,ADI_SOYADI alanlarındaki tüm satırları listele. NOT: 1- Bir tabloda tüm alanlar listelenecekse, tüm alanların yerine geçen (*) joker karakteri kullanılır. (örnek: select * from KIMLIK) 2- Bir tabloda where koşulu belirtilmemişse tüm satırlar listelenir. Ancak where komutundan sonra koşul varsa, koşulu sağlayan satırlar listelenir. - Veri Değiştirme (Data Manipulation) Komutları - DML: insert: Tablolara veri kaydetmek için kullanılan komuttur örnek: insert into standart komut dizesi ILLER (IL_KODU,IL_ADI) Tablo adı ve alanları 5

Values standart komut dizesi (81, DÜZCE ) alanlara aktarılacak değerler iller tablosuna bir satır eklendi. Bir tablonun yedeğini almak: SELECT * INTO ILLERYEDEK FROM ILLER2 Bir tabloda belirli alanların yedeğini alma SELECT ILCE_KODU,ILCE_ADI2 INTO ILCE_YEDEK FROM ILCELER; Bir tablodan belirli satırların yedeğini almak: SELECT * INTO ILLER_SATIRAL FROM ILLER2 WHERE IL_KODU>11; Birden fazla tablodan alanlar alarak yeni tablo oluşturmak (Yeni tabloyu sql ile oluşturmak) SELECT IL_ADI,ILCE_ADI2 INTO IL_ILCE_TABLOSU FROM ILLER2,ILCELER WHERE ILCE_IL_KODU=IL_KODU Bir tabloyu başka bir tabloya eklemek INSERT INTO ILLERYEDEK(IL_KODU,IL_ADI) veri eklenecek tablo SELECT IL_KODU,IL_ADI FROM IL verileri eklenen tablo Update: Tablolar üzerindeki kayıtlarda yapılacak güncellemeler için kullanılan komuttur örnek: update ILLER set IL_ADI= Afyonkarahisar where IL_KODU=3 6

ıl kodu 3 olan ilin adını Afyonkarahisar olarak değiştir Delete: Tablo üzerindeki satır ya da satırları silen komuttur. delete from ILLER where IL_KODU=1 1 kodlu ili sil - Toplu-işlem Kontrolü (Transaction Control) Komutları: commit: geçici hafızasında tutulan işlemlerin, tablolara kalıcı olarak işlenmesini sağlayan komuttur. (Örnek: commit;) Rollback: Hafızada tutulan database işlemlerini geri alan komuttur. (örnek: rollback;) - Veri Kontrolü (Data Control) Komutları - DCL: grant: Veri tabanındaki tablo ya da sorgular üzerinde yine veri tabanı kullanıcılarına haklar vermek için kullanılan komuttur (insert, delete, update, select) örnek: Grant Select,delete (yetkiler) on KIMLIK, GOREV(tablolar) to GULCAY,EMEL (kullanıcılar) 7

GULCAY ve EMEL kullanıcılarına KIMLIK ve GOREV tabloları üzerinde select ve delete yetkileri verildi.) - Veri Tanımlama (Data Definition) Komutları - DDL: create: Veri tabanında nesneler oluşturmak için kullanılan komuttur (örnek: TABLE, VIEW,gibi) ÖRNEK1: Create table ILLER_YEDEK (IL_KODU INT,IL_ADI NVARCHAR(25)) tablo oluşturuldu INSERT INTO ILLER_YEDEK(IL_KODU_Y,IL_ADI_Y) SELECT IL_KODU,IL_ADI FROM ILLER ILLER tablosunun tüm verileri bu tabloya aktarıldı ÖRNEK2: CREATE VIEW KUCUK_ILLER AS SELECT IL_KODU,IL_ADI FROM ILLER WHERE IL_KODU<11 Drop: Veri tabanı nesnesi silme komutudur. ( örnek: drop table KIMLIK) alter: Tablo adı değiştirmek, Tablolarda sütun adı değiştirmek, sütun eklemek,alan veri tipini değiştirmek ya da sütun silmek için kullanılan komuttur. 8

Sütun adı silmek (oracle-mssql) ALTER TABLE ILCELER DROP column ILCE_NUFUSU Sütun eklemek (oracle-mssql) ALTER TABLE ILCELER ADD KURULUS_TAR DATE; Sütun adını değiştirmek (oracle) ALTER TABLE ILCELER RENAME COLUMN ILCE_ADI TO ILCEAD; Mssql de EXEC sp_rename 'ILCELER.[ILCE_ADI]',ILCE_ADI2,'COLUMN'; Veri tipini değiştirmek ALTER TABLE ILCELER MODIFY ILCE_ADI VARCHAR2(20); Mssql de Örnek1: ILCE_ADI alanının veri tipini değiştirdik ALTER TABLE ILCELER ALTER COLUMN ILCE_ADI VARCHAR(20); 9

Örnek2: ILCELER tablosundaki ILCE_IL_KODU alanın boş olabilirlik özelliğin kaldırdık ALTER TABLE ILCELER ALTER COLUMN ILCE_IL_KODU smallint NOT NULL; Tablo adı değiştirmek(oracle) ALTER TABLE ILCELER RENAME TO ILCE; Mssql de EXEC SP_RENAME ILCELER, ILCE2 ; Tabloya Primary Key eklemek(oracle-mssql) ALTER TABLE ILLER ADD PRIMARY KEY (IL_KODU) Tabloya index eklemek Veritabınında saklanan verilerin sayısı arttıkça performansta düşüklüğe neden olur. Dağınık bir yapıda olan verilerde istenilen veriyi aramak için tablo taraması işlemi yapılır. Bu işlemi küçük boyutlu bir tabloda yapmak kolaydır. Artan veri miktarına göre ise bu işlem vakit kaybettirir. Veriye erişim hızını arttırmak için bu yöntem kullanılır. ÖRNEK: ILLER tablosunun IL_ADI alanına index eklemek ORACLE: Alter Table ILLER Add index ; Indexiladi (IL_ADI) 10

MSSQL : CREATE INDEX [indexiladi] ON ILLER ( IL_ADI ASC ); İndexi silmek: DROP INDEX [indexiladi] ON ILLER; Birden fazla alanda index uygulama: CREATE INDEX [indexiller] ON ILLER ( [IL_KODU],[IL_ADI] ) NOT: Bir tabloda PK olan alan da zaten doğal olarak Clustered(Kümelenmiş) indextir. SELECT CÜMLELERİ SELECT KURALLARI Select cümlesinde, select ve from komutları arasına listelenecek sütun adları yazılır (bu sütunlar tablolardaki alanlardır) Eğer tüm sütunlar listelenecekse * işareti konur. Alan adları arasına (,) işareti konur. From komutundan sonra listelemede kullanılacak tablo ya da tablolar belirtilir. Tablo adları arasına (,) işareti konur. Where komutundan sonra da sorgu için gerekli olan koşullar belirlenir. Bu koşulları sağlayan satırlar listelenir. Koşullar arasına 11

uygun şekilde AND ya da OR bağlaçları konur. SELECT CÜMLESİ FORMATI: SELECT listelenecek kolonlar FROM alanları alınacak tablolar WHERE koşullar Örnekler: 1) SELECT * FROM VELI; VELI tablosundaki tüm alanları ve tüm satırları getir. * tüm kolonlar FROM Tablo göstermek için kullanılan komut WHERE kriter belirtmek için kullanılan komuttur. Bu komuttaki belirtilen kriteri taşıyan satırlar sorgu sonucu döner. 2) SELECT * FROM VELI where VELI_TC_KIMLIK_NO<33333333333 Tc kimlik no su 33333333333 den küçük olan tüm kayıtları ve tüm alanları getir. İŞLEÇLER (OPERATORS) İşleçler WHERE cümlelerindeki koşulu sağlayan ifadeleri karşılaştırmak için kullanılırlar Karşılaştırma İşleçleri : 1- = Eşittir 2- > Büyüktür 3- < Küçüktür 4- >= Büyük ya da eşittir 5- <= Küçük ya da eşittir 6- <> Eşit değildir. 12

SQL İşleçleri BETWEEN değer1 AND değer2 : iki değer arasında. (örnek: select * from KIMLIK where NUFUS_ILI between 50 and 80; nüfus ili 50 ile 80 arasında olan öğrencilerin tüm bilgilerini alır) IN : Ardışık olmayan değerleri içerir. (örnek: select * from KIMLIK where NUFUS_ILI in(1,10,34,81)) nüfus ili 1,10,34,ve 81 olan öğrencilerin tüm bilgilerini alır) NOT IN : Belirtilen değerleri içermeyen kayıtları alır.. (örnek: select * from KIMLIK where NUFUS_ILI not in(1,10,34,81) nüfus ili 1,10,34,ve 81 olmayan öğrencilerin tüm bilgilerini alır) LIKE: Metin veri içeren alanlarda içerir anlamında kullanılan işleçtir. (örnek :mssql ve oracle standardı: select * from KIMLIK where ADI like %ALİ% access standardı select * from KIMLIK where ADI like '*ALİ*'; adının içinde ALİ geçen tüm öğrencileri listeler.) NOT LIKE : Metin veri içeren alanlarda içermez anlamında kullanılan işleçtir. (örnek :sql standardı: select * from KIMLIK where ADI not like %ALİ% Microsoft standardı select * from KIMLIK where ADI not like '*ALİ*'; adının içinde ALİ geçmeyen tüm öğrencileri listeler.) IS NULL : Belirtilen alanda boş değer içerenleri alır (örnek: select * from KIMLIK where ANA_ADI is null ANA_ADI alanında veri olmayan tüm öğrencileri listeler.) IS NOT NULL : Belirtilen alanda boş değer içermeyenleri alır (örnek: select * from KIMLIK where ANA_ADI is not null ANA_ADI alanında boş veri olmayan tüm öğrencileri listeler.) LOWER (access'de:lcase): Karakterleri küçük harfe çevirir (örnek: select lower(sbd_dersadi) as ders,sbd_derskodu from sb_dersler dersler tablosundaki ders adı alanındaki değerleri küçük harfe çevirir. UPPER(access'de:ucase) : Karakterleri büyük harfe çevirir 13

(örnek: select upper(sbd_dersadi) as ders,sbd_derskodu from sb_dersler dersler tablosundaki ders adı alanındaki değerleri büyük harfe çevirir. LENGHT (access'de ve Mssql de LEN) Karakter alanların uzunluklarını verir. (örnek: select LEN(ADI) as adi,soyadi from KIMLIK kimlik tablosundaki adi alanındaki verilerin karakter uzunluklarını verir) Not: DATALENGTH komutu ise o alanın max karakter uzunluğunu verir. NVL(access'de NZ,Mssql de COALESCE,ISNULL YA DA IIF): Alanda değer olmadığında listeye gelmesi istenen değeri atamak için kullanılır. Örnek(orc) :SELECT VELI_ADI,VELI_TC_NO, NVL(VELI_TEL_NO, Değer Yok ) AS TELEFON FROM VELI Örnek:(mssql): select COALESCE (ANA_ADI,'Değer yok') as ANNEAD from KIMLIK select ISNULL(ANA_ADI,'Değer yok') as ANNEAD from KIMLIK select IIF(bd_aciklama<>'',bd_aciklama,'Değer yok') as aciklama from SAYISTAY_YEVMIYE2; RPAD-LPAD: Özellikle sql sonucu bir txt dokümana aktarılacaksa listenin kolonlarındaki veriler ç içe geçmiş olabilir. Bunu önlemek için her alanın sağında ya da solunda bu fonksiyonlarla belirli karakterlerle tamamlama yapılır. Örnek (oracle): Rpad (NVL(borc,'0'),10) brc from SAYISTAY_YEVMIYE2 Örnek(Mssql): 14

select right(replicate('0',10)+cast(borc as varchar(15)),10) as brc from SAYISTAY_YEVMIYE2 DISTINCT: Bir tabloda aynı kayıttan tekrar eden satırları tek satır olarak alır.(örnek: SELECT DISTINCT (TC_KIMLIK) FROM OGRENCI_DERSLERI öğrenci dersleri tablosunda bir öğenciye ait tekrar eden satırları teke indirir ve her öğrenci için tek satır getirir. TO_CHAR(Access'te FORMAT): Sayı veya tarih değeri karakter dizesini (format varsa, o formatta) çevirir (örnek: select TO_CHAR('10/10/2000','yyyy');ÖRNEK: SELECT ADI,SOYADI,2007- TO_CHAR(DOGUM_TARIHI,'YYYY') AS YASI FROM KIMLIK Tüm öğrencilerin yaşlarını hesaplar) Sql server da : select TC_NO,ADI,SOYADI,CONVERT(VARCHAR,DOGUM_TARIHI, 103) as tar FROM KIMLIK Tarihsel alan verisini gün-ay-yıl olarak verir YA DA SELECT ADI,SOYADI,2017-DATEPART(YEAR,DOGUM_TARIHI) FROM KIMLIK DOGUM_TARIHI verisinden yıl kısmını alır, bu günkü yıldan çıkarır YA DA SELECT ADI,SOYADI,DATEPART(YEAR,GETDATE())- DATEPART(YEAR,DOGUM_TARIHI) FROM KIMLIK Cast, CONVERT, CONCAT,IIF, replace,left,right,left komutu: Örnek1: SELECT CAST(TC_NO AS NVARCHAR(12)) + ' - ' + ADI + ' ' + SOYADI AS "Kimlik Bilgileri" FROM KIMLIK ---- SELECT CONVERT(NVARCHAR(12), TC_NO) 15

+ ' - ' + ADI + ' ' + SOYADI AS "Kimlik Bilgileri" FROM KIMLIK Örnek2: select CAST(right(KURUM_KODU,2)AS INT)+'22' AS KK FROM KURUMLAR Birleştirilen alanların birinde veri yoksa o satır boş gelir bunu önlemek için CONCAT parametresi kullanılır. Örnek3: SELECT TC_NO,CONCAT(ADI,' ',SOYADI,' ',ANA_ADI) AS ANNE FROM KIMLIK Verileri bir şarta göre değiştirmek Örnek4: SELECT TC_NO,ADI,SOYADI, IIF(CINSIYETI=0,'KIZ','ERKEK') AS CINS FROM KIMLIK Veri alanı içinde boşluk atmak ya da herhangi bir karakteri başka bir karakterle değiştirmek Örnek5: update SAYISTAY_YEVMIYE2 set yvm_n =replace(yvm_n,'_','') yvm_n alanı içindeki _ çizgi kaldırıldı örnek6: select kurum_ad,kurum_kod,replace(yvm_n,'_','') as yvm from SAYISTAY_YEVMIYE2 16

REPLICATE : verilen karekter ve adet kadar karekteri stringe ilave eder Örnek: SELECT LEFT(KURUM_ADI,2)+ REPLICATE('*', 4) AS KK FROM KURUMLAR KURUM_ADI alanının soldan iki karakterini al, 4 tane * ekle LTRIM,RTRIM,TRIM:Text tipi veri içeren alanlarda soldaki,sağdaki ve hem başında, hem sonundaki boşlukları atar ÖRNEK: select TC_NO,LTRIM(ADI) AS AD,SOYADI FROM KIMLIK SPACE: Text tipi veri içeren alanların sonuna belirtilen sayı kadar boşluk verir. ÖRNEK: SELECT CAST(KURUM_KODU AS varchar(6))+space(3) as KK FROM KURUMLAR; REVERSE: Belirtilen alandaki text ifadeyi tersten alır. ÖRNEK: select TC_NO,reverse(ADI) AS AD,SOYADI FROM KIMLIK; REPLECE:Belirtilen metin içinde bir karakteri bulur, verilen karakterle değiştirir. Örnek: SUBSTRING: Metin içerisinde belirtilen karakterden başlayıp, yine belirtilen karakter kadarını alır. 17

Örnek: select substring(mhs_brm_ad,7,3) as ad from SAYISTAY_YEVMIYE2; TO_NUMBER(Access de CInt): karakter dizisini sayıya çevirir. (örnek: select 2007-TO_NUMBER(TO_CHAR(DT,'YYYY') as yas from KIMLIK) DT alanındaki doğum tarihi verisinin sadece yıl olan bölümü string olarak alındı, yıl sayıya çevrilip bu yıldan çıkarılarak yaş bulundu.) Mssql server da: select ADI,SOYADI, CONVERT(INT,(DATEPART(YEAR,DOGUM_TARIHI))) AS YIL FROM KIMLIK TO_DATE: Tarih içeren string bir alandaki değeri tarih tipine çevirmek için kullanılır. (örnek: select TO_CHAR(TO_DATE(DT),'DD-MM-YYYY') Mssql de: select TC_NO,ADI,SOYADI,CONVERT(DATE,DOGUM_TARIHI) as tar FROM KIMLIK ALIAS(Takma Ad): SQL cümlesinde yazılan alanlara (SELECT değiminden sonra) ya da tablo adlarına (FROM değiminden sonra) gerektiği durumlarda ALIAS-takma ad (değişken adı) verilebilir. Alias'ın zorunlu olduğu zamanlar: a. Bir tablo bir sorguda birden fazla kullanılıyorsa b. Sorgu içinde kullanılan farklı tablolardan, aynı adı taşıyan alanlar kullanılıyorsa c. SELECT ifadesi içinde bir işlem yapılmışsa işlem yapılan alana 18

BİLEŞKE (JOIN) İŞLEMLERİ Bileşkeler birden fazla tablodan veri almak için kullanılır. Çeşitleri: 1-Farklı Tabloya Bileşke-Basit Bileşke (simple join): İki farklı tablo arasında aynı tür verileri taşıyan alanlar arasındaki bileşkelerdir. (örnek: 1) SELECT VELI_TC_KIMLIK_NO, VELI_ADI_SOYADI, ADI, SOYADI FROM VELI, KIMLIK WHERE TC_NO=OGR_TC_KIMLIK_NO KIMLIK ve VELI tabloları arasında ortak olan Öğrenci T.C. no alanlarında ilişki (join) kurarak belirtilen veri alanlarındaki verileri listeletir.) 2) SELECT TC_NO,ADI,SOYADI,DERS_ADI,NOT1,NOT2,ODEV,SOZL U FROM KIMLIK,DERSLER,OGRENCI_DERSLERI WHERE TC_NO=TC_KIMLIK AND DERS_KODU=DERSI AND CINSIYETI=1 Cinsiyeti kız olan öğrencilerin ders adlarıyla birlikte notlarını listeletir. 3) SELECT TC_NO,ADI,SOYADI,VELI_ADI_SOYADI, MESLEK_ADI FROM KIMLIK,VELI,MESLEKLER WHERE TC_NO=OGR_TC_KIMLIK_NO AND VELI_ISI=MESLEK_KODU AND CINSIYETI=0 Cinsiyeti erkek olan öğrencilerin T.C. no, adı, soyadı, veli adı ve veli mesleklerini listeleten sorgu 19

2- Dış Bileşke (Outer join): Bileşke yapılırken bileşke koşulundaki bazı sütunlarda değer bulunmayabilir (NULL değer bulunur). Eşitlik bileşkeleri NULL değer bulunan sütunları birleştirmediğinden, o kayıtlar eşitlik bileşkesi sorgularında görünmez. Bu işlem için dış bileşkeler kullanılmalıdır. Dış bileşke işleci (+) 'dır. (+) işareti bileşke yapılacak değeri içermeyen sütunun tarafına konur. (örnek: select TC_NO,ADI,SOYADI,IL_ADI from KIMLIK,ILLER where IL_KODU= NUFUS_ILI(+) KIMLIK tablosunda NUFUS_ILI boş olan satırların da listeye gelmesi için bileşkede (join) veri olmayan alan adından sonra (+)=outer join kullanıldı) NOT: ACCESS'de kullanımı: SELECT TC_NO, ADI, SOYADI, IL_ADI FROM KIMLIK LEFT JOIN ILLER ON ILLER.IL_KODU=KIMLIK.NUFUS_ILI KIMLIK tablosunda Nufus il boş olan kayıtları da listeye getirir) Bu dizilimde değer olmayan tablo hangi taraftaysa "join" komutunun başında o yön belirtilir. (örnek: KIMLIK tablosunda değer yok, ILLER tablosundan önce dizilime alınacaksa LEFT, sonra alınacaksa RIGHT değimi kullanılır.) MSSQL SERVER DA DIŞ BİLEŞKE SELECT * FROM TABLO2 EXCEPT SELECT * FROM TABLO1 Tablo2 de olup, tablo1 de olmayanlar SELECT * FROM TABLO1 INTERSECT SELECT * FROM TABLO2 Hem tablo1 de hem de Tabl2 de olanlar 20

VERİNİN GRUPLANDIRILMASI SELECT komutuyla getirilecek olan veri belirli özelliklere göre gruplanabilir. Bunun için SELECT komutuna GROUP BY ifadesi eklenir. GROUP BY cümlesindeki grup ifadesi kayıtları daha küçük kümelere böler. NOT: 1) Select ifadesinden sonra kullanılan tüm alanlar group by ifadesinde kullanılmalıdır ( group by fonksiyonları hariç) 2) Group By kullanılan sorgularda her zaman group by fonsiyonları select ifadesinde en sonda olmalıdır. Grup By Fonksiyonları AVG Değerlerin ortalamasını alır (örnek: SELECT KK, INT(AVG(KIZ_OGR_SAY)) AS KIZ_ORT, INT(AVG(ERKEK_OGR_SAY)) AS ERK_ORT FROM OGRENCI_SAYILARI GROUP BY KK Kız ve erkek öğrenci sayılarının kurum koduna göre gruplandırarak ortalamalarını aldırır.) COUNT Kayıtların sayısını alır.(örnek: SELECT ELEMAN_ADI,COUNT(TC_NO) AS SAYI FROM KIMLIK, SOZLUK_TABLOSU WHERE ELEMAN_KODU=CINSIYETI AND TABLO_KODU=2 GROUP BY ELEMAN_ADI KIMLIK tablosundaki öğrenci sayılarını cinsiyetler bazında aldık) NOT: Tablo içinde saydırma işlemi, kesin sonuç alabilmek için o tablonun PK (birincil anahtar) alanında yapılmalıdır. MAX İfadenin aldığı maksimum değeri verir 21

MIN İfadenin aldığı minimum değeri verir SUM İfadenin aldığı değerlerin toplamını verir (örnek:select KK, SUM(KIZ_OGR_SAY)+SUM(ERKEK_OGR_SAY) AS OGR_SAY FROM OGRENCI_SAYILARI GROUP BY KK Kurum koduna göre toplam öğrenci sayılarını verir) VERİNİN SIRALANMASI Listesi alınan verilerin istenen alanlarda sıralanması mümkündür. Bunun için ORDER BY ifadesi kullanılır. (örnek: select * from KIMLIK order by ADI KIMLIK tablosundaki tüm kayıtları ADI alanına göre sıralayarak listeler) Sıralama Fonksiyonları ASC A'dan Z'ye ya da küçükten büyüğe (ÖRNEK: SELECT * FROM KIMLIK ORDER BY ADI ASC KIMLIK tablosunu ADI alanına göre A'dan Z'ye sıralar) DESC Z'den A'ya ya da büyükten küçüğe sıralama.(örnek: SELECT * FROM KIMLIK ORDER BY ADI desc KIMLIK tablosunu ADI alanını Z'den A'ya göre sıraladı.) Not: Order by ifadesi default olarak verileri ASC (Küçükten büyüğe doğru) olarak sıralar. 22