SQL - Structured Query Language

Download Report

Transcript SQL - Structured Query Language

Türkçe anlamı:Yapılandırılmış Sorgu Dili
Teknogezgin.com



Verileri yönetmek ve tasarlamak için
kullanılan bir veritabanı yönetim
sistemidir.
Ayrıca Bir veritabanından bilgi çekmeye,
sorgulamaya yarayan bir program dilidir.
Belirli komutlar yoluyla veritabanına veri
gönderilmesi, verinin işlenmesi,
düzenlenmesi, silinmesi gibi işlemler
yapılır.




Sql IBM tarafından 1975 yılında yaratılmıştır.
SQL temelde, nesne-ilişkili (object-relational)
veritabanı yönetim sistemlerini desteklemek
için tasarlanmıştır.
Fakat bu amacın ötesinde, ANSI ve ISO
standartları tarafından belirlenmiş, birçok
özelliğe sahiptir.
SQL ile yalnızca veri tabanı üzerinde işlem
yapılabilir.


SQL'e özgü cümleler kullanarak veri tabanına
kayıt eklenebilir, olan kayıtlar değiştirilebilir,
silinebilir ve bu kayıtlardan listeler
oluşturulabilir.
Kısa tarihçesi: SQL dili ilişkisel alanda büyük
ilgi görmüş ve İlişkisel Veri Tabanı Yönetim
Sistemlerinin (VTYS) tümünde yer alan
standart dil görünümü kazanmıştır. Bu
nedenle Veri Tabanı konusunda çalışan tüm
bilişim teknik personeli tarafından bilinmesi
gereken bir dil konumundadır.


SQL dilini kullanan ve en çok bilinen veri tabanları ise
şunlardır:
1- Sybase, 2- Mysql, 3- Mssql, 4- PostgreSQL, 5- Microsoft
SQL Server, 6- Oracle, 7- Firebird
Ana Sql komutları nelerdir?
1- SELECT: Veritabanından bilgi almak-çekmekkopyalamak için kullanılır.
2- UPDATE: Veritabanını güncellemek için kullanılır.
3- DELETE: Veritabanından bir veya birden fazla satırı
silmek için kullanılır.
4- INSERT INTO: Veritabanına yeni bir satır eklemek
için kullanılır.





Çok bilinen bazı ilişkisel veri tabanı yönetim sistemleri şunlardır:
Oracle, Sybase, MS SQL Server, Access, Ingres... Her ne kadar çoğu
veri tabanı yönetim sistemi SQL’i kullansa da çoğunun kendilerine
özgü ek özellikleri vardır.
Neden veri tabanlarına ihtiyaç duyarız?
Veritabanı, adı üstünde verilerin saklı olduğu yerdir. Bilgiyi
hızlı bir şekilde kullanıcılara ulaştırırken, sıralarken,
sınıflandırırken ve benzeri işlemlerle dinamik sayfalar
oluştururken bize lazım olacak temel şeydir.
 Mssql nedir?
Mssql Server bir veritabanı sunucu yazılımıdır.
Veritabanlarının oluşturulmasını ve yönetilmesini sağlar.
Verilerin organizasyonunu merkezi olarak yapan Sql Server
client uygulamaların server üzerindeki verilere erişmesinide
sağlar.
 Mysql nedir?
MySQL, altı milyondan fazla sistemde yüklü bulunan çoklu iş
parçacıklı (multi-threaded), çok kullanıcılı (multi-user), hızlı
ve sağlam (robust) bir veritabanı yönetim sistemidir.





SQL veri tanımlama deyimlerinden başlıcaları şunlardır:
CREATE TABLE tablo_adı
 Yeni bir tablo oluşturmak için kullanılır.
 ALTER TABLE tablo_adı
 Yeni bir sütun eklemek, sütunun tipini veya
uzunluğunu değiştirmek vb. yapısal değişiklikler
yapılması için kullanılır.
 DROP TABLE tablo_adı
 Tabloyu fiziksel olarak siler.
 TRUNCATE TABLE tablo_adı
 Tablodaki tüm verileri siler (tablo yapısı kalır)

DDL (Açılımı:Data Definition Language,
Türkçe anlamı: Veri Tanımlama)
 DDL deyimleri veritabanı üzerinde nesne
yaratmak için kullanılırlar. En yaygın
kullanılan DDL deyimleri şunlardır: CREATE,
ALTER, DROP.
CREATE Deyimi: Tablo ve view gibi bir
veritabanı nesnesi yaratmayı sağlayan
deyimdir.
Yapısı: CREATE<Tablo adı>

Örnek: CREATE TABLE Musteri
(
mus_id
char(4)
NOT NULL
mus_ad
varchar(40)
NULL,
ili
varchar(20)
NULL,
ulke
char(2)
NULL,
adres
varchar(30)
NULL
)
Not: Char, varchar, integer, numeric gibi sözcükler
tablo alanlarındaki temsil edilecek verinin türünü
belirtir.
ALTER Deyimi: Daha önce oluşturulmuş
nesnenin değiştirilmesini sağlar. Örneğin bir
tablonun tasarımını değiştirmek gibi.
Örnek: Müşteir tablosunun alanlarına «tel» adlı
bir alan daha ekleyin.
ALTER TABLE Musteri
ADD tel varchar(20)NOT NULL
DROP Deyimi: Bir nesnenin silinmesini sağlar.
Örnek: Müşteri tablosunun verilerini ve tabloyu
silin.
DROP TABLE Musteri
DML (Açılımı: Data Manipulation Language Türkçe
anlamı:Veri Düzenleme Dili).
Veritabanı içindeki verileri elde etmek ve
değiştirmekle ilgili SQL deyimleridir.
 SELECT: Verileri istediğimiz şekilde
seçebilmemizi sağlar.
 Örnek: SELECT ilçe, postakodu FROM tabloIlceler
WHERE plakaKodu = '13'
bitlis'in ilçeleri ile posta kodlarını gösterir.
 INSERT: Tablo içine yeni kayıt eklememizi sağlar.
 Örnek: UPDATE tabloIlceler SET postakodu =
'06720' WHERE ilce = 'Bala'
Bala'nın posta kodunu değiştirir.
UPDATE: Tablodaki bilgileri değiştirmemizi
sağlar.
 Örnek: INSERT INTO tabloIlceler VALUES (,
'Yenişehir', , , '53')
Yeni veriler ekler
 DELETE: Kayıt yada kayıtları silmemizi sağlar.
 Örnek: DELETE FROM tabloIlceler WHERE
plakaKodu = '53'
plakaKodu 53 olan bütün verileri siler
SQL’in en önemli ve en çok kullanılan deyimi
SELECT deyimidir.








Triggerın türkçe anlamı tetikleyicidir.
Klasik manada triggerlar veri degisiminin hemen
ardından devreye giren ozel bir storeprocedure gibi
yapılardır .
Trigger mantıgında karsımıza iki adet sözde
tablolar gelmekdedir ve biz bu sözde tablolar
uzerinde bazı işlemlerimizi yaparız
Buradan anlaşılacağı gibi bir tablodaki değişikliği
başka bir tabloda istediğimiz şekilde otomatik
olarak değiştirmek istediğimizde trigger kullanırız.
Tetiklenecek işlem tamamen bizim belirlediğimiz
çerçevede başka bir kayıt eklemek,rapor almak ve
genelde kontrol mekanizmaları oluşturmak için kullanılır
Bir kaydın eklenmesi(insert),silinmesi(delete)veya
değiştirilmesi(update)durumlarında otomotik olarak
devreye girecektir


SQL server 2005 DDL tetikleyici adında yeni bir kavramı
destekler
Tetikliyiciler,görünümler ve tablolar üzerinde
tanımlanabilir




3 çeşit trigger vardır. Bunlar:
1. Insert tetikleyici (ilgili tabloda ekleme
islemi oldugu anda)
2. Delete tetikleyici (ilgili tabloda silme
islemi oldugu anda)
3. Update tetikleyici (ilgili tabloda
güncelleme islemi oldugu anda)




1.İNSERT Tetikleyici:Bir tablo üzerinde yeni kayıtlar
girildikten sonra devreye giren tetikleyicidir
İnsert tetikleyici devreye girdikten sonra inserted
tablosunda yeni eklenen kayıtların bir kopyası tutulur
İnserted tablosu asıl tablonun yapısal bir kopyası olup
tetikleyici sonlanana kadar saklanır
Eğer bir tabloya birden fazla kayıt girildiyse tetikleyici
her kayıt için ayrı ayrı devreye girmez,Çünkü SQL
server satır bazında tetikleyici desteği sağlamamakta




DELETE TETİKLEYİCİSİ:
Tablodan bir kayıt silindiğinde otomatik olarak yapılması
istenen işlemler için DELETE tetikleyicisi kullanılır
DELETE tetikleyicisi çalıştıktan sonra silinen kayıt
deleted sahte tablosuna kaydedilir
Deleted tablosunun inserted tablosundan farkı asıl
tablodan silinen kayıt artık deleted tablosunda yer
almaktadır


UPDATE TETİKLEYİCİSİ:
Tablo üzerinde kayıt yada kayıtlarda güncelleme
olduğunda devreye girecek olan tetikleyicidir








Trigger Ne Zaman Kullanılır?
Değişiklikleri takip etmek,
Birincil anahtar üretmek,
Karmaşık iş kurallarını gerçekleştirmek,
E-posta atmak gibi olayları otomatik olarak
yapmak,
Standart hata mesajlarının dışında bir hata
mesajı elde etmek,
Veritabanı erişimlerini takip edebilmek,
Nesnede meydana gelebilecek değişiklikleri
takip ve engellemektir.



Trigger’ın avantajları nelerdir?
Modifikasyonuna ne neden olursa olsun
çalışırlar
update olayında çalısabilecegi gibi, hem
update hem de insert durumlarında da
çalıstırılabilir



Her trigger bir veya daha fazla veri
degistirme isleminde harekete geçecek
sekilde tanımlanır
Nispi olarak triggerlar daha az zaman kaybına
neden olurlar
Triggerların getirdigi en büyük avantaj
otomatik olarak devreye girmeleridir

SQL Server'da bir çok constraint (kısıt)
kullanılabilir.
"Check Constraint" verinin doğruluğunu ve
bütünlüğünü korumak üzere kullanılan bir
kısıttır. Check constraint eklenmiş bir kolona
yeni bilgi eklenirken veya bilgi
güncellenirken, veri yazılmış olan kurallara
göre kontrol edilir ve kurala uymuyorsa bir
hata verilir ve veri kaydedilmez.

Check constraint ifadesi, true veya false döndüren bir
kural setidir. Check constraint sadece false değer
döndüğünde hata verir. Eğer ifade null döndürürse,
bunu true gibi değerlendirir ve herhangi bir hata
vermeden veriyi günceller.
Örneğin bir kolonda sınavlardan alınacak notları
tutacak olalım. Notlar da 0-100 arasında değişiyor
olmalı. Grade alanına bu kısıtı ekleyelim ve 100 ün
üzerinde data girilmesini engelleyelim.
ALTER TABLE myTable ADD CONSTRAINT
CK_Grade CHECK(Grade <= 100 AND Grade >= 0)

Eğer tablomuzda veriler varsa ve daha
önceden girilmiş verilerin kontrol edilmesini
istemiyorsak with nocheck ifadesiyle bunu
yapabiliriz. Aksi takdirde, veriler eklenen
kurala uygun hale getirilene kadar check
constraint eklenemez.
ALTER TABLE myTable WITH NOCHECK ADD
CONSTRAINT
CK_Grade CHECK(Grade <= 100 AND Grade
>= 0)

Constraints(kısıtlar) kolonlarda yer almasına izin
vereceğimiz değerleri belirleyen kuralları tanımlamamızı
ve veri bütünlüğünü koruyan standart mekanizmayı
sağlar. Veri bütünlüğünü sağlayan mekanizmalar
arasında kısıtlar(constraints), trigger(tetikleyici), stored
procedure(saklanmış yordamlar) ve
default(varsayılan)lara göre daha çok tercih edilir.
Check(kontrol) kısıtları bir kolondaki değerin geçerliliğini
başka bir kolonla karşılaştırarak elde edebilmemize
olanak sağlar.
Stored Procedures SQL’de vazgeçilmez veri
tabanı objelerindendir. Türkçemizde karşılığı
saklı yordam olarak kabul edilmektedir. Bir
takım SQL deyimlerinden oluşmaktadır ve
özellikle C#, VB, ASP.NET tabanlı
projelerimizde veri tabanı ile işlem yaparken
sık sık başvurduğumuz yöntemlerdendir.
Çeşitli parametreler alır ve geriye değer
döndürürler.


Örneğin şöyle bir işlem hayal edelim. Bir
veritabanımız var ve bu veri tabanımızda bölümler
ve çalışanlar olmak üzere birbiri ile ilişkili olan
tablolarımız var. İlişki de şu şekilde, çalışanlar
tablomda BolumID diye bir alanım ve bu alan
Bolumler tablosu ile ilişkili. Bunu resmedelim :



Genel amaçlı Stored Procedure’lerin 4 çeşidi bulunmaktadır.
Sistem Stored Procedure : Master veritabanında tutulan
kullanımında sp_ prefixi kullanılan stored procedure lardır.
Veritabanı üzerinde sistemle alakalı yönetimsel işlerde
kullanılırlar.
Kullanıcı Tabanlı Stored Procedure : Uygulamalarımız için
kullandığımız sp lerdir.Bu sp leri çok rahat oluşturup silebilir ve
değiştirebiliriz.


Extended Stored Procedure : Genelde .dll
şeklinde derlenmiş olup Database Server ın
işlevselliğini artıran bir çeşit stored procedure
lerdir. Yalnız Master veritabanına eklenirler.
CLR Stored Procedure : CLR ortamında
herhangi bir dili kullanarak da stored
procedure ler geliştirilen bir tür Stored
procedure çeşididir.


Stored Procedure ler, Database server da
tutulduğu için çok hızlı çalışırlar bununda
sebebi 1 defa yalnız derledikten sonra 1 daha
derlenmeye ihtiyaç duymamalarıdır. Halbuki
Uygulama katmanında yazmış olduğunuz SQL
kodu her çağırmada tekrar tekrar derlenmek
zorundadır. Buda büyük çaplı projelerde ve 1
den çok client a hizmet eden serverlar için
büyük bir zaman kaybı demektir.
Network trafiği açısından mükemmel bir
tasarruf sağlar.



SQL ifadelerine otomatik parametreleme sağlar. SQL
ifadelerinin geçtiği yerdeki bütün parametreleri
değiştirme yerine sadece SP içindeki parametreleri
yada kuralları değiştirip istediğinizi
gerçekleştirebilirsiniz.Buda uygulamanızı modüler
olmasını sağlar uygulamaların karmaşıklığını giderir.
Stored procedure ler yazılırken programlama
ifadelerine ek olarak (İf,while,for vb.) T-SQL
komutlarını da kullanabilirsiniz.
Stored procedure ler sadece giriş ve çıkış
parametreleri uygulama katmanında göründüğü için
daha güvenilirdir. Database server ına erişim genelde
kullanıcı ID si ve şifreyle gerçekleştiğini düşünürsek
SP kullanmanın kodlarımız açısından bir güven
unsuru teşkil etmiş olduğunu açıkça söyleyebiliriz.









Bir sütundaki tüm satırlara uygulanırlar, bir
hesap yapıp geriye tek bir değer döndürürler.
Aggregation fonksiyonları başlıca şunlardır:
AVG
COUNT
FIRST
LAST
MAX
MIN
SUM
AVG ve SUM Fonksiyonları
SUM Fonksiyonu ile seçilen bir satırdaki tüm
kayıtların toplamı hesaplanıp geri
döndürülür, AVG Fonksiyonu ile ise tüm kayıtların
ortalaması döndürülür.
Tüm filmlerin IMDB Puanlarının toplamına
ulaşalım ;
SELECT SUM(IMDB_Puan) AS Toplam_Puan FROM
Filmler
Tüm filmlerin IMDB Puanlarının ortalamasına
ulaşalım ;
SELECT AVG(IMDB_Puan) AS Ortalama_Puan FROM
Filmler






COUNT Fonksiyonu
COUNT Fonksiyonu ile oluşturduğunuz
sorgunun ürettiği satır sayısı bulunur ve
geriye döndürülür. Eğer COUNT fonksiyonunu
sadece bir sütun için uygularsanız NULL
olmayan, yani değeri boş olmayan kayıtların
sayısı bulunur.
Tüm filmlerin sayısına COUNT fonksiyonunu
kullanarak ulaşabiliriz ;
SELECT COUNT(*) AS Toplam_Film_Sayısı
FROM Filmler








FIRST ve LAST Fonksiyonları
Seçtiğiniz sütun için ilk satıra FIRST
Fonksiyonu ile, son satıra ise LAST
Fonksiyonu ile ulaşabilirsiniz.
İlk tarih değerine ve son IMDB_Puan değerine
ulaşalım ;
SELECT FIRST(Tarih) AS İlk_Tarih,
LAST(IMDB_Puan) AS Son_IMDB_Puan FROM
Filmler




MAX ve MIN Fonksiyonları
Seçilen sütundaki en büyük değere MAX
Fonksiyonu ile, en küçük değere MIN
Fonksiyonu ile ulaşabilirsiniz.
IMDB Puanı en yüksek filmin puanına ulaşalım
;
SELECT MAX(IMDB_Puan) AS En_Yüksek_Puan
FROM Filmler

Bazı durumlarda karmaşık iç içe sorgular
yazmak gerekebilir.Bir sorgunun sonucuna
göre başka bir sorguyu çalıştırmak
isteyebiliriz.Bu durumda sorgularımızı iç içe
yazabiliriz.Alt sorgu bir veya birden fazla
sonuç üretebilir.Eğer sorgu alt sorgudan
gelen tek sonuç ile işlem yapacaksa
MAX,MIN,AVG gibi gruplama fonksiyonları
veya tek değer döndüren SELECT sorguları
yazılabilir.



Örneğin;
SELECT * FROM Tablo WHERE Alan>(SELECT
AVG(ALan) FROM Tablo) SELECT * FROM Roller
WHERE Rol_ID>(SELECT AVG(Rol_ID) FROM Roller)
Sorgu çalıştırıldığında Roller tablosundan Rol_ID
değeri ortalamasından büyük olan kayıtlar
listelenir.



Eğer alt sorgu birden fazla sonuç üretiyorsa WHERE
ile birlikte IN kullanılarak bütün sonuç işlemden
geçirilir.
SELECT * FROM Roller WHERE Rol_ID IN (SELECT
Rol_ID FROM Roller WHERE Rol_Ad LIKE 'Öğ%')
Sorgu çalıştırıldığında Roller tablosundan Rol_Ad
değeri ‘Öğ’ ile başlayan kayıtlar listelenicektir.




http://tr.wikipedia.org
http:// www.bilgisayarmuhendisleri.com
http:// www.sqlogren.com
http:// www.nedir.com