Total Users Online: 0 üye, 125 guest | Tarih/Saat: 2026-04-20 15:47
 
Veritabanı MSSQL SQL nedir
2012-01-31 21:49 GMT  oklu Alnt
Kaan

User is: Online status   Gender_M
Posts: 2772
Ülke: İstanbul - 34
Meslek: Serbest Meslek
Age: 43

SQL nedir ?
++ SQL in a??l?m?; Structured Query Language [ Yap?sal Sorgu Dili ]
++ SQL sizi veritaban?na eri?menizi saglar.
++ SQL, ANSI standard?nda bir bilgisayar dilidir.
++ SQL veritaban?na kar?? sorgular? ?al??t?rabilir.
++ SQL veritaban?ndaki verileri tekrar ele alabilir.
++ SQL veritaban?na yeni bir kay?t ekleyebilir.
++ SQL veritaban?ndan bir kay?t silebilir.
++ SQL veritaban?ndaki bir kayd? guncelleyebilir.
++ SQL kolay ??renilir

SQL standartt?r, fakat ...
SQL, ANSI (American National Standards Institute - Amerikan Ulusal Standardlar? Enstitus?) standard?nda vertaban?na ulasmak ve i?lemek i?in kullan?lan bir bilgisayar dilidir. SQL komutlar? veritaban?ndaki verileri guncellemek, tekrar ele almak i?in kullan?l?r. SQL in kullan?ld?g? veritaban? programlar? MS Access, MS SQL Server, DB2, Informix, Oracle, Sybase vs. Fakat SQL dilinin bir?ok farkl? versiyonlar? vard?r, ama yinede ?nemli anahtarlar genelde ayn?d?r yada cok benzerdir (?rnegin SELECT, UPDATE, DELETE, INSERT, WHERE, ve digerleri).

SQL Veritaban? tablolar?
Veritaban? bir yada birden fazla tablodan olusur. Her tablonun bir ad? vard?r. Bu tablolardaki kay?tlar dizilerde (row) saklan?r.

?rne?in "bilgi" tablosunda;

ad soyad il yas
----- ------- ---- -----
ali ?zg?r ankara 15
veli s?zc? trabzon 20
necmi yakan sivas 19

yukardaki tablo ?? kay?da sahiptir, her bir ki?i i?in bir tane, yani 3 sat?ra (row) ve ayr?ca 4 adet kolona (column) sahiptir.

SQL sorgular?

SQL ile, veritaban? sorgulanabilir ve soncular? al?nabilir.

?rnek bir sorgu;

SELECT soyad FROM bilgi

Sonucu;

soyad
-----
?zg?r
s?zc?
yakan

SQL Veri i?leme dili (DML - Data Manipulation Language)

SQL, sorgular? cal?st?rmak i?in bir s?zdizimidir. Fakat ayn? zamanda kay?tlar? guncelleme, ekleme ve silmek i?inde kullan?l?r.
Bu sorgu ve guncelleme komutlar?, birlikte SQL in bir bolumu olan Veri i?leme dilinin olusturuyor:

++ SELECT - veritaban?ndaki tablodan veri al?r
++ UPDATE - veritaban?ndaki tablodaki veriyi gunceller
++ DELETE - veritaban?ndaki tablodan veri siler
++ INSERT INTO - veritaban?ndaki tabloya yeni bir veri ekler

SQL Veri tan?mlama dili (DDL - Data Definition Language)

SQL in bir bolumu olan veri tan?mlama dili, veritaban? tablolar?nda i?lem yapmaya izin veren, tablolar? olusturmak yada silmek i?in kullan?l?r. Ayr?ca index (arama anahtar?) belirlemedede kullan?lan bir dildir. Tablolar aras?nda etkile?imi saglayabilir, aralar?nda bir ba? kurabilirsiniz.

En s?k kulllan?lan veri tan?mlama s?zdizimleri:

## CREATE TABLE - tablo yarat?r
## ALTER TABLE - tabloyu degi?tirir
## DROP TABLE - tabloyu siler
## CREATE INDEX - index (arama anahtar?) olusturur
## DROP INDEX - indexi siler

?imdi bu s?zdizimlerini biraz daha ayr?nt?l? anlatal?m...

SELECT ifadesi
Bu ifade tablodan veri secmek i?in kullan?l?r.

ifadenin kurulusu;
SELECT kolonAd(lar)i FROM tabloAdi

?rnek veri taban?m?zda "bilgi" tablomuzda

ad soyad il yas
----- ------- ---- -----
ali ?zg?r ankara 15
veli s?zc? trabzon 20
necmi yakan sivas 19

verileri var diyelim

SELECT yas FROM bilgi
dedi?imizde

yas
---
15
20
19

sonucu al?r?z.

birden cok kolon secmek i?in ise;

SELECT ad,soyad FROM bilgi
dedi?imzde

ad soyad
----- -------
ali ?zg?r
veli s?zc?
necmi yakan

sonucunu verir.

tum kolonlar? secmek i?inde;

SELECT * FROM bilgi
dememiz yeterlidir.

SELECT DISTINCT ifadesi

Bu ifade sadece farkl? ifadeleri secmek i?in kullan?l?r.

ifadenin kurulusu;
SELECT DISTINCT kolonAd(lar)i FROM tabloAdi


?rnek veritaban?m?zda "veriler" tablomuzda

firma urunNo
----- --------
CS 4586278
CW 7894331
CL 456
CH 45689
CW 789666879

verileri var diyelim

SELECT firma FROM veriler

dedi?imizde sonuc;

firma
-----
CS
CW
CL
CH
CW

olucakt?r.

Ama ifadeye distinct eklersek, yani

SELECT DISTINCT firma FROM veriler

dersek sonuc;

firma
-----
CS
CW
CL
CH

seklinde olucakt?r, yani tekrarlanan sat?r bilgileri al?nm?yacakt?r.

WHERE ?art?

Bu ?art, select ifadesi ile kullan?l?r.

?art?n kurulusu;
SELECT kolonAdi FROM tabloAdi WHERE kolonAdi operator deger

Bu ?artta kullan?labilir operatorler;

= e?it
<> e?it de?il
> b?y?kt?r
< k?c?kt?r
>= b?y?k yada esittir
<= k?c?k yada esittir
BETWEEN belli bir aral?k aras?nda
LIKE belli bir kal?pla arama

NOT: baz? SQL versiyonlar?nda <> yerine != de kullan?labiliyor.

?rnek veritaban?m?zda "ipList" tablomuz olsun;

kullaniciAdi sifresi ipNumarasi
------------ --------- ----------
Admin bulamazs?n 127.0.0.1
Ziyaretci bulsamdasoylemem 127.0.0.2
Backup op. guvenlisifre 127.0.0.1
MMx enguzelsifrebu 127.0.0.1
Haberci forerunner 127.0.0.3

SELECT * FROM ipList WHERE ipNumarasi=?127.0.0.1?

dedi?imizde sonuc;

kullaniciAdi sifresi ipNumarasi
------------ --------- ----------
Admin bulamazs?n 127.0.0.1
Backup op. guvenlisifre 127.0.0.1
MMx enguzelsifrebu 127.0.0.1

olucakt?r.

Bu ?artta kulland?g?m?z degeri tek t?rnak (?) i?ine almam?z onemlidir, aksi taktirde sorunlar c?kabilir.

SELECT * FROM ipList WHERE ipNumarasi=?127.0.0.1? ---> Dogru
SELECT * FROM ipList WHERE ipNumarasi=127.0.0.1 ---> Yanl?s
SELECT * FROM ipList WHERE kullaniciAdi=?MMx? ---> Dogru
SELECT * FROM ipList WHERE kullaniciAdi=MMx ---> Yanl?s

LIKE operatorunun kullan?l?s?

Bu operatorle belli bir kal?pta arama yapabilirsiniz.

ifadenin kurulusu;
SELECT kolonAdi FROM tabloAdi WHERE kolonAdi LIKE kalip

(%) i?areti bilinmeyen yada eksik olan karakter i?in kullan?l?r.

?rnek SQL ifadeleri;

SELECT * FROM ipList WHERE kullaniciAdi LIKE ?A%?
SELECT * FROM ipList WHERE kullaniciAdi LIKE ?%x?
SELECT * FROM ipList WHERE kullaniciAdi LIKE ?%er%?

INSERT INTO ifadesi

Bu ifadeyi kullarak veritaban?ndaki bir tabloya bir sat?r ekleyebilirsiniz.

ifadenin kurulusu;
INSERT INTO tabloAdi (kolonBir,kolonIki,...) VALUES (kolonBir,kolonIki,...)

veritaban?m?zda "bilgi" tablomuz olsun;

ad soyad il yas
----- ------- ---- -----
ali ?zg?r ankara 15

INSERT INTO bilgi VALUES (?veli?, ?s?zc??, ?trabzon?, ?20?)

dedi?imizde sonucu;

ad soyad il yas
----- ------- ---- -----
ali ?zg?r ankara 15
veli s?zc? trabzon 20

olucakt?r.

T?m sat?rdaki bilgileri doldurmak yerine, sadece belli yerlere veri girmek i?in ne yapmak gerek derseniz, bir ornekle ac?klayal?m..

veritaban?m?zda "bilgi" tablomuz olsun;

ad soyad il yas
----- ------- ---- -----
ali ?zg?r ankara 15
veli s?zc? trabzon 20

INSERT INTO Persons (ad, il) VALUES (?necmi?, ?sivas?)

dedi?imizde sonucu;

ad soyad il yas
----- ------- ---- -----
ali ?zg?r ankara 15
veli s?zc? trabzon 20
necmi sivas

olucakt?r.

UPDATE ifadesi

Bu ifadeyi kullanarak veritaban?ndaki bir veriyi guncelleyebilirsiniz.

ifadenin kurulusu;
UPDATE tabloAdi SET kolonAdi = Yenideger WHERE kolonAdi = tanimlayiciDeger

veritaban?m?zda "bilgi" tablomuz olsun;

ad soyad il yas
----- ------- ---- -----
ali ?zg?r ankara 15
veli s?zc? trabzon 20
necmi yakan sivas 19

UPDATE bilgi SET ad = ?osman? WHERE soyad = ?yakan?

dedi?imizde sonucu;

ad soyad il yas
----- ------- ---- -----
ali ?zg?r ankara 15
veli s?zc? trabzon 20
osman yakan sivas 19

olucakt?r.

Birden fazla veriyi guncellemek isteyebiliriz, ohalde alttaki ornegi inceleyelim:

veritaban?m?zda "bilgi" tablomuz olsun;

ad soyad il yas
----- ------- ---- -----
ali ?zg?r ankara 15
veli s?zc? trabzon 20
necmi yakan sivas 19

UPDATE bilgi SET il = ?hatay?, yas = ?13? WHERE soyad = ?yakan?

dedi?imizde sonucu;

ad soyad il yas
----- ------- ---- -----
ali ?zg?r ankara 15
veli s?zc? trabzon 20
necmi yakan hatay 13

DELETE ifadesi

Bu ifadeyi kullanarak veritaban?ndaki bir sat?r? silebilirsiniz.

ifadenin kurulusu;
DELETE FROM tabloAdi WHERE kolonAdi = tanimlayiciDeger

veritaban?m?zda "bilgi" tablomuz olsun;

ad soyad il yas
----- ------- ---- -----
ali ?zg?r ankara 15
veli s?zc? trabzon 20
necmi yakan sivas 19

DELETE FROM bilgi WHERE yas = ?20?

dedi?imizde sonuc

ad soyad il yas
----- ------- ---- -----
ali ?zg?r ankara 15
necmi yakan sivas 19

Tablodaki t?m bilgileri silmek i?in ?u ifadeleri kullanabilirsiniz:

DELETE FROM tabloAdi
DELETE * FROM tabloAdi

ORDER BY ifadesi

bu ifade ile sonuclar? s?ralamak mumkundur.

Sat?rlar? s?ralamak i?in ifade ?u ?ekilde kurulur;
SELECT kolonAd(lar)i FROM tabloAdi ORDER BY referansKolonu

?rnek veri taban?m?zda "bilgi" tablomuz olsun

ad soyad il yas
----- ------- ---- -----
ali ?zg?r ankara 15
veli s?zc? trabzon 20
necmi yakan sivas 19

SELECT ad,soyad FROM bilgi ORDER BY ad

dedi?imizde sonuc

ad soyad
----- -------
ali ?zg?r
necmi yakan
veli s?zc?

eger s?ralamay? tersine cevirmek istersek ifadenin sonuna DESC s?zdizimini, say?lar? kucukten buyuye s?ralamak i?inde ASC s?zdizimini ekliyoruz.

SELECT ad,soyad FROM bilgi ORDER BY ad DESC

dedi?imizde sonuc

ad soyad
----- -------
veli s?zc?
necmi yakan
ali ?zg?r

AND ve OR operatorlerinin kullan?l?s?

AND ve OR operatorleri WHERE ifadesiyle birlikte, birden cok durumu birle?tirmek i?in kullan?l?r. AND operatoru eger T?M durumlar dogru ise ilgili sat?r? gosterir. OR operatoru ise durumlardan bir tanesi bile dogru olsa bile ilgili sat?r? gosterir.

?rnekleri "bilgi" adl? tablomuza gore vericek olursak

ad soyad il yas
----- ------- ---- -----
ali ?zg?r ankara 15
veli s?zc? trabzon 20
necmi yakan sivas 19
osman yakan van 33
alp ?zg?r ankara 12

SELECT * FROM bilgi WHERE ad=?ali? AND soyad=??zg?r?

dedi?imizde sonuc

ad soyad il yas
----- ------- ---- -----
ali ?zg?r ankara 15

SELECT * FROM bilgi WHERE ad=?alp? OR soyad=??zg?r?

dedi?imizde sonuc

ad soyad il yas
----- ------- ---- -----
ali ?zg?r ankara 15
alp ?zg?r ankara 12

heriki operatorude birle?tirecek olursak

SELECT * FROM bilgi WHERE (ad=?alp? OR ad=?ali?) AND LastName=??zg?r?

dedi?imizde sonuc

ad soyad il yas
----- ------- ---- -----
ali ?zg?r ankara 15
alp ?zg?r ankara 12

IN operatorunun kullan?l?s?

Bu operator, bir degeri tam biliyorsak ve bunu goruntulemek istiyorsak kullanabiliriz.

ifadenin kurulusu;
SELECT kolonAdi FROM tabloAdi WHERE colonAdi IN (degerBir,degerIki,...)

?rnek veritaban?m?zda "bilgi" tablomuz olsun

ad soyad il yas
----- ------- ---- -----
ali ?zg?r ankara 15
veli s?zc? trabzon 20
necmi yakan sivas 19
osman yakan van 33
alp ?zg?r ankara 12

SELECT * FROM bilgi WHERE il IN (?van?,?trabzon?)

dedigimzde sonuc

ad soyad il yas
----- ------- ---- -----
veli s?zc? trabzon 20
osman yakan van 33

BETWEEN operatorunun kullan?l?s?

Bu operator yard?m? ile iki deger aras?ndaki veriyi secebiliriz, bu degerler numara,yaz? yada tarih olabilir.

ifadenin kurulusu;
SELECT kolonAdi FROM tabloAdi WHERE colonAdi BETWEEN degerBir AND degerIki

?rnek veritaban?m?zda "bilgi" tablomuz olsun

ad soyad il yas
----- ------- ---- -----
ali ?zg?r ankara 15
veli s?zc? trabzon 20
necmi yakan sivas 19
osman yakan van 33
alp ?zg?r ankara 12

SELECT * FROM bilgi WHERE il BETWEEN ?trabzon? AND ?van?

dedi?imizde sonuc

ad soyad il yas
----- ------- ---- -----
veli s?zc? trabzon 20
necmi yakan sivas 19

Yanl?z BETWEEN operatoru veritaban? cinsine gore degi?ik sonuclar verebilir. Yukarda oldugu gibi sonraki degeri sonuca dahil etmeyebilir, ilk degeri dahil etmeyebilir, iki degerden hi?birini dahil etmeden sonuc verebilir yada iki degeride dahil edip sonucu verebilir. Bu yuzden etkili bi?imde kullanmadan once bu operatorun tam olarak nas?l davrand?g?n? veritaban?n?zda denemeniz ?nerilir.

Birde bu aral?kta olmayanlar?da listeleyebiliriz;

ad soyad il yas
----- ------- ---- -----
ali ?zg?r ankara 15
veli s?zc? trabzon 20
necmi yakan sivas 19
osman yakan van 33
alp ?zg?r ankara 12

SELECT * FROM bilgi WHERE il NOT BETWEEN ?trabzon? AND ?van?

dedi?imizde sonuc

ad soyad il yas
----- ------- ---- -----
ali ?zg?r ankara 15
osman yakan van 33
alp ?zg?r ankara 12

ALIAS operatorunun kullan?l?s?

Bu operator ile bir kolonun yada tablonun ad? bir baska ?eymi? gibi kullan?labilir.

ifadelerin kurulusu;
SELECT kolon AS kolonAliasi FROM tablo

SELECT kolon FROM tablo AS tabloAliasi

?rnek veritaban?m?zda "bilgi" tablomuz olsun

ad soyad il yas
----- ------- ---- -----
ali ?zg?r ankara 15
veli s?zc? trabzon 20
necmi yakan sivas 19
osman yakan van 33
alp ?zg?r ankara 12

SELECT soyad AS aile, il AS yerleske FROM bilgi

dedi?imizde sonuc

aile yerleske
----- --------
?zg?r ankara
s?zc? trabzon
yakan sivas
yakan van
?zg?r ankara

yada alias ? tablo i?in kullanabiliriz..

SELECT ad, soyad FROM bilgi AS nufusBilgileri

ad soyad
----- -------
ali ?zg?r
veli s?zc?
necmi yakan
osman yakan
alp ?zg?r

SQL Join methodunun kullan?l?s?

Bazen iki yada daha fazla tablodan veri cekmemiz gerekebilir, bu gibi durumlarda bu methodu kullan?r?z.

Veritaban?ndaki tablolar, birbirleriyle baz? key lerle ili?kilendirilmi?tir. ?lk ve oncelikli (primary) key, sat?rlarda bulunan kolonla birlikte tek ve benzeri olmayan degerdir. ?ki verinin birbiriyle ili?kilendirilmesinin amac? tablolar? a??p, tablo isimlerini tekrarlamadan veriyi almakt?r.

veritaban?m?zda iki adet tablomuz olsun

ilk tablo ad?m?z "kisi"

kisiID tamAdi
------ --------
01 ali,?zg?r
02 veli,s?zc?
03 necmi,yakan
04 osman,yakan
05 alp,?zg?r

ikinci tablo ad?m?z "detay"

kimlikNo il kisiID
-------- ---- ------
4893 ankara 01
6889 trabzon 02
3684 sivas 03
5285 van 04
4234 ankara 05

"kisi" tablosundaki "kisiID" kolonu bir ilk ve oncelikli (primary) keydir. Bunun anlam? baska herhangi bir sat?r ayn? degere sahip olamaz. Bu sayede diger kolonlarda ayn? degeri bulunan veriler olsa bile bu key onlar? birbirinden ay?rmakta kullan?labilir.

"detay" tablosunun il ve oncelikli (primary) keyi "kimlikNo" dur. Ve "kisiID" kolonu "bilgi" tablosunu "detay" tablosuyla baska herhangi bir veri girmeden ili?kilendirmi?tir.

veritaban?m?za birkac SQL tarz? soru soral?m bakal?m nas?l soruyoruz ve nas?l cevaplar al?yoruz

?nsans? soru: kim nerde oturuyor?
SQL tarz? soru(sorgu): SELECT kisi.tamAd, detay.il FROM kisi, detay WHERE kisi.kisiID=detay.kisiID

Cevap:

tamAdi il
-------- ----
ali,?zg?r ankara
veli,s?zc? trabzon
necmi,yakan sivas
osman,yakan van
alp,?zg?r ankara

?nsans? soru: kim trabzonda oturuyor?
SQL tarz? soru(sorgu): SELECT kisi.tamAdi FROM kisi, detay WHERE kisi.kisiID=detay.kisiID AND detay.il=?trabzon?

Cevap:

tamAdi
--------
veli,s?zc?

Bu i?i birde JOIN sozdizimi kullanarak yapabiliriz.

INNER JOIN operatorunun kullan?l?s?

ifadelerin kurulusu;
SELECT bolgiBir, bolgiIki, bolgiUc FROM ilkTablo INNER JOIN ikinciTablo ON ilkTablo.keyBolgesi = ikinciTablo.yabanciKeyBolgesi

veritaban?m?zda iki adet tablomuz olsun

ilk tablo ad?m?z "kisi"

kisiID tamAdi
------ --------
01 ali,?zg?r
02 veli,s?zc?
03 necmi,yakan
04 osman,yakan
05 alp,?zg?r
06 zeki,civi
07 alp,?zt?rk

ikinci tablo ad?m?z "detay"

kimlikNo il kisiID
-------- ---- ------
4893 ankara 01
6889 trabzon 02
3684 sivas 03
5285 van 04
4234 ankara 05

ve sorular?m?za INNER JOIN kullarak devam edelim..

?nsans? soru: kim nerde oturuyor?
SQL tarz? soru(sorgu): SELECT kisi.tamAdi, detay.il FROM kisi INNER JOIN detay ON kisi.kisiID = detay.kisiID

cevap:

tamAdi il
-------- ----
ali,?zg?r ankara
veli,s?zc? trabzon
necmi,yakan sivas
osman,yakan van
alp,?zg?r ankara

Bu method tablolardaki e?le?mi? her veriyi c?kart?cakt?r, eger e?lenmemi? bir veri varsa onu c?karm?yacakt?r.

LEFT JOIN operatorunun kullan?l?s?

ifadelerin kurulusu;
SELECT bolgiBir, bolgiIki, bolgiUc FROM ilkTablo LEFT JOIN ikinciTablo ON ilkTablo.keyBolgesi = ikinciTablo.yabanciKeyBolgesi

veritaban?m?zda iki adet tablomuz olsun

ilk tablo ad?m?z "kisi"

kisiID tamAdi
------ --------
01 ali,?zg?r
02 veli,s?zc?
03 necmi,yakan
04 osman,yakan
05 alp,?zg?r
06 zeki,civi
07 alp,?zt?rk

ikinci tablo ad?m?z "detay"

kimlikNo il kisiID
-------- ---- ------
4893 ankara 01
6889 trabzon 02
3684 sivas 03
5285 van 04
4234 ankara 05

ve sorular?m?za INNER JOIN kullarak devam edelim..

?nsans? soru: kim nerde oturuyor?
SQL tarz? soru(sorgu): SELECT kisi.tamAdi, detay.il FROM kisi LEFT JOIN detay ON kisi.kisiID = detay.kisiID

cevap:
tamAdi il
-------- ----
ali,?zg?r ankara
veli,s?zc? trabzon
necmi,yakan sivas
osman,yakan van
alp,?zg?r ankara
zeki,civi
alp,?zt?rk

G?rd?n?z gibi bu sefer LEFT JOIN operatorunu kulland?k ve veritaban?m?zda il bilgsi bulunmayan kay?tlar?m?z? cevap listesine ekledi..

Bu demek oluyorki LEFT JOIN ilk tabloda(SQL sorgusunda ismi gecen ilk tablo) girdisi olmas?na kars?n ikinci tabloda e?lendi?i bir degeri yoksabile o girdi?i sonuca ekleniyor.

Bunun tam tersini yapmak i?in yani ikinci tabloda girdisi oldugu halde ilk tabloda kar??l?g? olmayan verileride sonuca eklemek istersek,
kurmam?z gereken SQL ifadesi:
SELECT bolgiBir, bolgiIki, bolgiUc FROM ilkTablo RIGHT JOIN ikinciTablo ON ilkTablo.keyBolgesi = ikinciTablo.yabanciKeyBolgesi

SQL UNION ve UNION ALL methodlar?n?n kullan?l?s?

Bu method verdi?i sonuc itibari ile JOIN methoduna benzesede, bu methodun JOIN den fark? secilecek kolonlar?n veri tiplerinin ayn? olma sart?d?r.

UNION methodu, eger secilmi? olan verilerde ?iftler varsa onlar? sonuca yans?tmaz ..
UNION ALL dersek d?z mant?kla, secilmi? tum verileri (ayn?s?ndan olsa bile) sonuc olarak veririr...

ifadelerin kuruluslar?;
ilk SQL sorgusu UNION ikici SQL sorgusu
ilk SQL sorgusu UNION ALL ikici SQL sorgusu

veritaban?m?z?n ilk tablosu, "donerSevenler"

kisiID ad
------ ----
01 mert
02 can
03 asl?

ikinci tablosu, "pideSevenler"

kisiID ad
------ ----
01 veli
02 ali
03 asl?
04 ersin

SELECT ad FROM onerSevenler UNION SELECT ad FROM pideSevenle

dedi?imizde sonuc

ad
---
mert
can
asl?
veli
ali
ersin

eger SELECT ad FROM onerSevenler UNION ALL SELECT ad FROM pideSevenle dersek sonuc

ad
---
mert
can
asl?
veli
ali
asl?
ersin

olur...

SELECT ifadesi

Veritaban? yaratmak i?in kullan?lan ifade;
CREATE DATABASE veriTabaniAdi

Veritaban?na tablo eklemek i?in kullan?lan ifade;
CREATE TABLE tabloAdi
(
kolonAdi veriTipi,
kolonAdi veriTipi,
.................,
)

?rne?in:

CREATE TABLE kisi
(
ad varchar,
soyad varchar,
il varchar,
yas int
)

Buna ek olarak bir kolona girilecek max. girdi uzunlugunu belirleyebilirsizin.

?rne?in:

CREATE TABLE kisi
(
ad varchar(10),
soyad varchar(30),
il varchar,
yas int(2)
)

?imdi sorucaks?n?z baska hangi veri tipleri vard?r, yada yukardaki ornektekiler nedemekdir diye ...

Veri tipleri

integer(uzunluk), int(uzunluk) ,smallint(uzunluk) ,tinyint(uzunluk);
Sadece tamsay?lar? tutar, eger parantez i?inde bir say? yazarsan?z o uzunluk degerini gecmeden veri tutar..

decimal(uzunluk,hassasiyet), numeric(uzunluk,hassasiyet);
Ondal?kl? say?lar? tutar, parantez i?inde uzunluk olarak en fazla kac karakterli say? tutmas?n? ve hassasiyet olarakta virgulden sonra kac rakam tutmas?n? istedi?inizi yazabilirsiniz.

char(uzunluk);
Belli bir degerdeki diziyi tutar. Bu dizi harf, say? yada ozel karakterlere sahip olabilir. Bellirliyecegimiz dizi uzunlugu parantez i?ine yaz?lmal?d?r.

varchar(uzunluk);
Max. uzunlugu verilen bir diziyi tutar. Bu dizi harf, say? yada ozel karakterlere sahip olabilir.

date(YYYYAAGG); Tarih degerini tutar, Y?l Ay ve Gun olarak..

INDEX ifadesi

index (arama anahtar?) olusturur, bu sayede sorgulamaya h?z getir. Yanl?z guncelleme esnas?nda indexli kolonlar daha fazla zaman al?r bu yuzden indexlerin sadece arama tarz?nda kullan?lmas? onerilir..

Unique index
Tabloya unique index olusturur, fakat bu index tarz?nda iki sat?r ayn? index degerine sahip olamaz.

ifadenin kurulusu;
CREATE UNIQUE INDEX indexAdi ON tabloAdi (kolonAdi)

Basit index
Bu indexde ise, unique dan farkl? olarak iki tane index degeri ayn? olabilir.

ifadenin kurulusu;
CREATE INDEX indexAdi ON tabloAdi (kolonAdi)

eger index degerlerini azalan bir bi?imde s?ralamak isterseniz o zamanda ifadeyi soyle kurar?z;
CREATE INDEX indexAdi ON tabloAdi (kolonAdi DESC)

eger index degerini birden fazla kolona vermek istiyorsan?z ise ifadeyi soyle kurar?z;
CREATE INDEX indexAdi ON tabloAdi (kolonAdi,digerKolonAdi)

DROP ifadesi

DROP genel olarak silme i?lemi gercekle?tirir...

indexleri silmek i?in kurulacak ifade;
DROP INDEX tabloAdi.indexAdi

tablo silmek i?in kurulacak ifade;
DROP TABLE tabloAdi

veritaban?n? silmek i?in kurulacak ifade;
DROP DATABASE veritabaniAdi

Eger sadece bir tablo i?indeki verilerin hepsinden kurtulmak istersek, kullan?cag?m?z ifade;
TRUNCATE TABLE tabloAdi

ALTER TABLE ifadesi

Bu ifade varolan bir tabloya kolon eklemek yada silmek i?in kullan?l?r.

ifadelerin kullan?l???;
ALTER TABLE tabloAdi ADD kolonAdi veriTipi

ALTER TABLE tabloAdi DROP COLUMN kolonAdi

Yanl?z baz? veritabanlar? kolonu silme i?lemini bu ?ekilde izin vermiyor, o zaman sizde DROP COLUMN kolonAdi sorgusunu kullan?n?z.

?rnek veritaban?m?zda "bilgi" tablomuz olsun

ad soyad il
-- ------ --
ali sayg?n tekirdag

ALTER TABLE bilgi ADD yas varchar(2)

dedi?imizde sonuc

ad soyad il yas
-- ------ -- ---
ali sayg?n tekirdag

ALTER TABLE bilgi DROP COLUMN il

dedimizde sonuc

ad soyad yas
-- ------ ---
ali sayg?n

SQL Fonkisyonlar?

SQL kendi i?inde bir cok fonksiyonu bar?nd?r?r, bunlar say?m ve hesaplama i?in kullan?labilir.

Fonksiyon s?zdizimi kurulu?u;
SELECT fonksiyon(kolon) FROM tablo

Fonksiyon tipleri;
SQL fonksiyonlar? birka? temel tip ve kategoriye sahiptir. Temel fonksiyon tipleri:

++ Aggregate (birle?ik degerli) fonksiyonlar
++ Scalar (tekil degerli) fonksiyonlar

Aggregate (birle?ik degerli) fonksiyonlar
Bu tip fonksiyonlar bir?ok deger ile ?al???r ama sonucu tek bir degerdir.

Bu fonksiyonlar?n MS Access e uygun olanlar?:
AVG(kolon): girilen kolondaki say?lar?n aritmetik ortalama degerini geri yollar
COUNT(kolon): Bo? degerler haric, girilen kolondaki sat?r say?s?n? yollar
COUNT(*): Verilen tablodaki sat?r say?s?n? yollar
FIRST(kolon): girilen kolondaki ilk degeri yollar
LAST(kolon): girilen kolondaki son degeri yollar
MAX(kolon): girilen kolondaki en yuksek degeri yollar
MIN(kolon): girilen kolondaki en dusuk degeri yollar
STDEV(kolon): girilen kolondaki basit istatiksel standard sapma degerini yollar
STDEVP(kolon): girilen kolondaki n?fus istatiksel standard sapma degerini yollar
SUM(kolon): girilen kolondaki say?lar?n toplam?n? yollar

Bu fonksiyonlar?n SQL Server a uygun olanlar?:
AVG(kolon): girilen kolondaki say?lar?n aritmetik ortalama degerini geri yollar
BINARY_CHECKSUM: tablonun verilen sat?r?ndaki ikilik tabandaki checksum degerini yollar
CHECKSUM: tablonun verilen sat?r?ndaki checksum degerini yollar
CHECKSUM_AGG: bo? degerler haricindeki verilerin checksum degerini yollar
COUNT(kolon): Bo? degerler haric, girilen kolondaki sat?r say?s?n? yollar
COUNT(*): Verilen tablodaki sat?r say?s?n? yollar
COUNT(DISTINCT kolon): Verilen tablodaki sat?r say?s?n? yollar, fakat cift veri bulunan sat?rlar? bir defa sayar
FIRST(kolon): girilen kolondaki ilk degeri yollar
LAST(kolon): girilen kolondaki son degeri yollar
MAX(kolon): girilen kolondaki en yuksek degeri yollar
MIN(kolon): girilen kolondaki en dusuk degeri yollar
STDEV(kolon): girilen kolondaki basit istatiksel standard sapma degerini yollar
STDEVP(kolon): girilen kolondaki n?fus istatiksel standard sapma degerini yollar
SUM(kolon): girilen kolondaki say?lar?n toplam?n? yollar

Scalar (tekil degerli) fonksiyonlar
Girilen degere gore bir deger ile cal?s?r ve sonuc olarak bir deger yollar.

Bu fonksiyonlar?n MS Access e uygun olanlar?:
UCASE?: bolgedeki karakterlerin hepsini buyuk yapar
LCASE?: bolgedeki karakterlerin hepsini kucuk yapar
MID(c,start[,end]): yaz? alan?ndan karakterleri cal?st?r?r
INSTR?: yaz? alan?ndan karakterleri gosterir
LEFT(c,karakterNumarasi): text alan?n?n girilen say?ya kadar olan k?sm?n? yollar (soldan sayar)
RIGHT(c,number_of_char): text alan?n?n girilen say?ya kadar olan k?sm?n? yollar (sagdan sayar)
ROUND(c,hassasiyet): say? alan?n? verilen hassasiyete gore yuvarlar
MOD(x,y): bolme i?leminde kalan? gosterir (mod i?lemi yapar)
NOW(): o anki sistem zaman?n? gosterir
FORMAT(c,format): alan?n gosterim bi?imini degi?tirir
DATEDIFF(d,birinciTarih,ikinciTarih): tarih hesaplar?n? yapmak i?in kullan?l?r

SQL GROUP BY VE HAVING methodlar?n?n kullan?l?s?

Aggregate (birle?ik degerli) fonksiyonlar? ( SUM gibi ) genellikle GROUP BY fonsiyonuna gerek duyar.

GROUP BY ek fonksiyonu

Bu ek fonksiyonun kullan?m?, SUM fonksiyonu ile kolon i?inde istenilen bir belli bir bolumun toplam?n? sonuca verememesinden kaynaklanmaktad?r. Bu ek fonksiyon yard?m?yla toplam? istenen veriler gruplan?p daha detayl? sorgulan?r.

ifadenin kurulu?u;
SELECT kolon,SUM(kolon) FROM tabloAdi GROUP BY kolon

veritaban?m?zda "satis" tablosu olsun

firma miktar
------ --------
CyberHost 15
internetSahibi 19
CyberHost 23
digerHost 12
internetSahibi 18

SELECT firma, SUM(miktar) FROM satis

dedigimizde sonuc

firma miktar
------ --------
CyberHost 87
internetSahibi 87
CyberHost 87
digerHost 87
internetSahibi 87

SELECT firma,SUM(miktar) FROM satis GROUP BY firma

dedigimizde sonuc

firma miktar
------ --------
CyberHost 38
internetSahibi 37
digerHost 12

HAVING ek fonksiyonu

Bu fonksiyonun eklenmesinin nedeni WHERE ifadesi ile Aggregate (birle?ik degerli) fonksiyonlar?n?n kullan?lamamas? ve sonuclar?n baz? ay?klama ve testten gecirilme ihtiyac?d?r.

ifadenin kurulusu;
SELECT kolon,SUM(kolon) FROM tabloAdi GROUP BY kolon HAVING SUM(kolon) durumYadaFonsiyon deger

veritaban?m?zda "satis" tablosu olsun

firma miktar
------ --------
CyberHost 15
internetSahibi 19
CyberHost 23
digerHost 12
internetSahibi 18

SELECT firma,SUM(miktar) FROM satis GROUP BY firma HAVING SUM(miktar)>35

dedi?imizde sonuc

firma miktar
------ --------
CyberHost 38
internetSahibi 37

SELECT INTO ifadesi

Bu ifade genel olarak tablo yedekleri almakta ve kay?tlar? ar?ivlemeyi sa?lamakta kullan?l?r.

ifadenin kurulusu;
SELECT kolonAd(lar)i INTO yeniTabloAdi [IN farkl?BirVeriTabaniAdi] FROM anaKaynak

?rnek ifadeler;

SELECT * INTO bilgiYedek FROM bilgi

bilgi tablosunu ayn? veritaban?nda bilgiYedek adl? yeni bir tabloya kopyalar.

IN s?zdizimini kullanarak tamamen yeni bir vertaban? olusturup onun i?ine yedekleme yapabiliriz.

SELECT bilgi.* INTO bilgi IN ?yedekVeritabaniAdi.mdb? FROM bilgi

Yedeklemek istedi?iniz tum tablo degilde belli sat?rlar? yada belli kolonlar? yedekleyebilirsiniz.

SELECT ad,soyad INTO bilgiYedegi FROM bilgi

yada

SELECT ad,soyad INTO bilgiYedegi FROM bilgi WHERE il=?Ankara?

dedi?imizde sadece il kolonu Ankara olan ki?ilerin adlar?n? yedekliyecektir..

eger birden cok tabloyu yedeklemek istersek, asag?daki gibi bir SQL sorgusu yazabiliriz..

SELECT kisi.tamAdi,detay.il INTO ikiTablonunYedegi FROM kisi INNER JOIN detay ON kisi.kisiID=detay.kisiID

CREATE VIEW ifadesi

View (g?r?nt?) nedir?

VIEW ifadesi sanal bir tablodur ve SELECT ifadesinin sonuc kumesini bar?nd?r?r.

Bir view ile sat?r ve kolonlar? ayn? gercek tabloda oldugu gibi gorebiliriz. SQL fonksiyonlar?n?, WHERE ve JOIN ifadelerini kullanarak tek bir tablo olarak goruntuleyebiliriz.

NOT: Veritaban? tasar?m? ve yap?lar? view ifadesi ile bozulmamaktad?r.

ifadenin kurulusu;
CREATE VIEW goruntuAdi AS SELECT kolonAd(lar)i FROM tabloAdi WHERE durum

NOT: View ifades(ler)i veritaban?nda bar?nd?r?lmaz. Her sorguda yeniden olu?turur.

View (g?r?nt?) kullan?m?

Sorgulamada, i?lem kay?tlar?nda, fonksiyon, baglant? gibi methodlar? kullanarak verileri kullan?c?lara etkili bi?imde gosterebilirisizin.

baz? View yaratma ?rnegi;

CREATE VIEW [kisi bilgi listesi] AS SELECT kisiID,tamAdi FROM bilgi

bunu goruntulemek i?in;

SELECT * FROM [kisi bilgi listesi]

Kaynak: http://www.teknolojioku.com/foru.....1226.html
Konuyla İlgili Diğer Başlıklar
SEO Yarışması Nedir?
Bu Hatanın Nedeni Nedir
Veritabanı Yöneticisinin Görevleri
Site meta tag ları nedir? Nasıl eklenir, ne işe yararlar?
Patent nedir?
Emlak, Oto Galeri, Rent A Car, ?iir, Edebiyat Script Sipari?lerinizi Verebilirsiniz.
Detaylar ??in: kaan@ntka.org

Seditio 170 ?ndir
Capte M?zik ?ndir
Seditio Toolbar ?ndir

 

Powered by Seditio © 2009-2012 All Rights Reserved