Araştırma ve ödevleriniz için her türlü kaynağı ve dokümanı En Geniş Araştırma ve Ödev Sitesi: www.arsivbelge.com ile bulabilir ve İsterseniz siz de kendi belge ve çalışmalarınızı gönderebilirsiniz!
Her türlü ödev ve dokümanı
www.arsivbelge.com ile kolayca bulabilirsiniz!

Araştırmalarınız için Arama Yapın:


Araştırmalarınız için Arama Yapın:

  
                    

SQL SERVER Nedir - 2
www.arsivbelge.com
SQL SERVER Nedir - 2 dokümanıyla ilgili bilgi için yazıyı inceleyebilirsiniz. Binlerce kaynak ve araştırmanın yer aldığı www.arsivbelge.com sitemizden ücretsiz yararlanabilirsiniz.
SQL SERVER Nedir - 2 başlıklı doküman hakkında bilgi yazının devamında...
Ödev ve Araştırmalarınız için binlerce dokümanı www.arsivbelge.com sitesinde kolayca bulabilirsiniz.

SQL SERVER Nedir Devamı

(Dokümanın Öncesi için tıklayın…)

 

SQL ile veritabanı sorgulama
Select ifadesini kullanmadan önce hangi veritabanı ve tablolar ile işlem yapacağımızı bilmeliyiz. Verilerle işlem yapmadan önce bazı komutlarla bu verilerin çekilmesi gerekmektedir. Bu komutlara SQL ifadesi diyoruz. Select ifadesi ile seçmek istediğiniz kolon ve satırları belirtebilirsiniz.

Select ifadesinin kullanımı :

Select ifadesi veritabanından bilgi çekmek için kullanılır. Select ifadesi ile istediğiniz kolan ve satırları belirtebilirsiniz.
 Select ifadesi istenen satırları bir liste şeklinde verir.
 WHERE ifadesini kullanarak sorgunuzu filtreleyebilir ve sadece sizin kriterlerinize uygun satırların sorgu sonucu olarak gelmesini sağlayabilirsiniz. Bu kriterler lojik ifadeler, karşılaştırmalar olabilir.
 FROM ifadesi bu verilerin alınacağı tablo isimlerini belirtmemizi sağlar.

Kolonların belirlenmesi :

Sorgu sonucunda tablodaki tüm kolonlar değil de sadece işinize yarayacak kolonların gelmesini isteyebilirsiniz. Bu durumda istediğiniz kolanların her birinin adını belirmek zorundasınız. Select’den sonra kolon isimleri, local değişkenler, hesaplanmış ifadeler belirtebilirsiniz. Yani veritabanından çekilen kolon üzerinde herhangi bir işlem yaptırarak listelettirebilirsiniz. Örneğin veritabanımızda ürün fiyatları olsun. Fakat bizim ürün fiyatları yanında KDV’sine de ihtiyacımız oldu fakat bu bilgi veritabanında yok. Bu durumda Select ifadesi ile veriyi çekme aşamasında iken bunu da hesaplanmış ek bir kolon olarak çekebiliriz. Select ifadesinden sonra sadece kolon isimleri bulunmak zorunda değil.
Kolon isimlerini virgül (,) ile ayırmak zorundayız. Veriler listelenirkenkolon bilgileri verdiğimiz sırada gelir. Performans kazanmak için kolon kullanımına alışmalıyız. * kullandığımız takdirde tablodaki tüm alanlar ihtiyacımız olsun veya olmasın gelecektir. Bu
durum ise bize performans kaybı sağlayacaktır. Aşağıdaki örnekte employees tablosunda belirttiğimiz kolonları çekiyoruz. Bu tablo Northwind veritabanında bulunmaktadır.

ÖRN: SELECT employeeid, lastname, firstname, title
FROM employees

Where ifadesinin kullanımı :

Where ifadesi ile istediğimiz satırları alabiliriz. Where ifadesinden sonra belirttiğimiz kriterler sınırsız sayıda olabilir. Where ifadesinden sonra kriter olarak kullandığımız verinin tipi char, nchar, varchar, nvarchar, text, datetime ve smalldatetime ise tek tırnak (‘) kullanmalıyız. Where ifadesi ile normalde fazla sayıda gelen satır sayısını azaltmış oluruz. Where ifademiz tutarsız ise tüm satırlar yine gelecektir.

ÖRN : SELECT employeeid, lastname, firstname, title
FROM employees
WHERE employeeid=5




Sonuç olarak tüm kayıtlarımız arasından sadece employeeid’si 5 olan veriler geldi.

Veri Filtreleme :


Zaman zaman ihtiyacınız olan verileri filtrelemek isteyebilirsiniz. Verilerinizi Where ifadesinden sonra kullanacağınız bazı koşullar ile filtreleyebilirsiniz. Bu koşullar şunlardır;

 Karşılaştırma operatörleri =, >, <, >=, <=, <>
 String karşılaştırmalar LIKE ve NOT LIKE
 Lojik operatörler AND, OR
 Lojik operatörler (Negatif) NOT
 Değer aralıkları BETWEEN ve NOT BETWEEN
 Değer listeleri IN ve NOT IN
 Bilinmeyen değerler IS NULL ve IS NOT NULL

Karşılaştırma operatörlerinin kullanımı :

Karşılaştırma operatörleri ile tablodaki bir veri ile belirlenmiş bir veri veya hesaplanmış veri karşılaştırılabilir. Fakat karşılaştırmak istediğiniz alan ve verinin tipleri aynı olmalıdır. Sayısal bir ifadeyi tarih ifadesi ile karşılaştıramazsınız. Burada kullanılan operatörler:

= Eşittir
> Büyüktür
< Küçüktür
>= Büyük veya eşittir
<= Küçük veya eşittir
<> Eşit değildir

NOT ifadesinin kullanımı tavsiye edilemez. Çünkü kullanıldığı takdirde tüm tablo değerlendirilir ve veri akışının yavaş olması problemi yaşanır.

ÖRN: SELECT lastname, city
FROM employees
WHERE country=’USA’




Country alanı USA olanların listesi alındı. Dikkat edilirse country alanı string bir ifade olduğu için USA ifadesi tek tırnak içine alındı. Bu dikkat edilmesi gereken bir noktadır.

ÖRN :SELECT orderid, customerid
FROM orders
WHERE orderdate < ‘8/1/96’



String Karşılaştırmaların Kullanımı :

Satırlarımızdaki verileri LIKE ifadesi ile bazı wildcard’ları kullanarak filtreleyebiliriz. LIKE ifadesini sadece char, nchar, varchar, nvarchar, binary, varbinary, smalldatetime ve datetime veri tiplerinde kullanabiliriz. Bu wilcardlar aşağıdaki gibidir:



% 0 veya daha fazla karakterli string
_ tek bir karakter
[] belirtilenler arasından tek bir karakter
[^] belirtilenler arasında olmayan tek bir karakter
Bu wildcarların LIKE ile kullanım örnekleri aşağıdaki gibidir;
LIKE ‘BR%’ BR ile başlayan tüm isimler
LIKE ‘Br%’ Br ile başlayan tüm isimler. Büyük küçük harf farkı
LIKE ‘%een’ een ile biten tüm isimler
LIKE ‘%en%’ en karakterlerini içeren tüm isimler
LIKE ‘_en’ en ile biten tüm 3 karakterli isimler
LIKE ‘[CK]%’ C veya K ile başlayan tüm isimler
LIKE ‘[S-V]ing’ Tüm 4 karakterli ve ilk karakteri S ile V arasında olan ve ing ile biten tüm isimler
LIKE ‘M[^c]%’M ile başlayan ve ikinci karakteri c olmayan tüm isimler

ÖRN : SELECT companyname
FROM customers
WHERE companyname LIKE ‘%Restaurant%’



Lojik operatörler :

Birden fazla kriterleri bir arada kullanmamıza yardımcı olurlar. AND operatörü kullandığımız takdirde verdiğimiz tüm koşullara uyan kayıtlar gelir. OR operatörü kullandığımız takdirde verdiğimiz koşullardan birine uyanlar gelir. NOT kullandığımızda ise NOT dan sonraki koşulu sağlamayan kayıtlar gelir. Birden fazla koşul kullandığımız durumlarda parantezi koşulları gruplamak için kullanabiliriz. Böylece daha okunaklı olur ve gruplama işlemini yapabiliriz. SQL Server 2000 ilk önce NOT operatörüne arkasından AND ve OR operatörlerine bakar. Eğer tüm operatörler aynı grup içerisinde ise soldan
sağa doğru işlenir.

ÖRN : SELECT productid, productname, supplierid, unitprice
FROM products
WHERE (productname LIKE ‘T%’ OR productid=46)
AND (unitprice >16.00)




Değer aralıkları :

BETWEEN ifadesini Where ile beraber kullanarak belli bir değer aralığındaki kayıtları getirebiliriz. Between ifadesi ile belirlenen aralık dışında kalan verileri almak için NOT BETWEEN kullanabiliriz. Between ifadesinde verilen aralığın bir bitiş noktası olmadır. Between ile verilen aralık (10 and 20) aslında AND ifadesi kullanımı ve büyük eşittir, küçük eşittirden oluşan bir koşuldur. Bunu kısaca between ifadesi ile yapmaktayız.
Örneğin (KOD BETWEEN 10 AND 20) aslında ((KOD>=10) AND (KOD<=20)) demektir.

ÖRN : SELECT productname, unitprice
FROM products
WHERE unitprice BETWEEN 10 AND 20



Aslında aynı ifadeyi aşağıdaki şekilde de yazabilirdik.

SELECT productname, unitprice
FROM products
WHERE (unitprice>=10)
AND (UnitPrice<=20)

Değer Listeleri :


Verilen bir liste içerisinde yer alan veya almayan değerleri içeren kayıtları getirir. Listede yer alanları aramak için IN, yer almayanları aramak için NOT IN ifadelerini kullanırız. Birden fazla koşulu OR ile de ayırabiliriz veya IN ile bir liste içerisinde arayabiliriz. İkisinide SQL aynı şekilde çözümler. Yani KOD IN [1,2] diyebildiğimiz gibi KOD=1 OR KOD=2 de diyebiliriz. NOT IN ifadesi daha öncede belirtildiği gibi veri akışını yavaşlatabilir.

ÖRN : SELECT companyname, country
FROM suppliers
WHERE country IN (‘Japan’,’Italy’)




Bu ifadeyi şu şekilde de yazabilirdik.

SELECT companyname, country
FROM suppliers
WHERE country=’Japan’ OR country=’Italy’

Bilinmeyen değerler :

Veri girişi sırasında tablodaki kolona veri girilmemiş olabilir ve default veri de atanmamış olabilir. Bu durumda bu kolondaki değer NULL’dur. Null değer 0 (nümerik) veya boşluk (string) ile aynı şey değildir. Bir alana değer girilmemiş kayıtları listelemek isin IS NULL ifadesini kullanabiliriz. Null ifadesini diğer koşullar ile kullanamayız. Yani >Null diye bir şey diyemeyiz. Kolonlar Null değer içerebilir tanımını tablo yaratırken yapabiliriz.

ÖRN : SELECT companyname, fax
FROM suppliers
WHERE fax IS NULL



QL KOMUTLARI Temel Sql Komutları
Temel Sql Komutları
Temel Sql komutları iki bölümde incelendiğini daha önceki dökümanlarda bahsetmiştik.

DDL (Data definition language) : Veri tanımlama dili.
DML (Data manuplation language) : Veri düzenleme dili.

DDL komutları Create, Drop, Alter komutları ile başlar. ve obje tipi ve adı ile devam eder. bu komutlardan başka özel komutlarda mevcuttur. Örneğin bir kullanıcı yaratmak için:

Create User MyUserName .....

Bu şekilde komutlar girilir. Burada bir kaç temel komut incelenecektir.

Create Database :

Database yaratmak için kullanılır ek olarak database adı yazılır. Yaratılan database Select database komutu ile seçilir. Close Database komutu ile kapatılır. Bu komut informix'te kullanılır.

Create User:

Kullanıcı yaratmak için kullanılır. Formatı şu şekildedir.

Create User (UserName) identified by (Password) default tablespace (tablespacename);

(Username) kullanıcı adıdır. Zorunludur.

(Password) Kullanıcının şifresidir.

(Tablespacename) Default tablespace ifadesi sadece oracle için geçerlidir. tablespacename yerine oracle için user_data tablespace'i kullanılır.

Create user Myuser identified by Mypass default tablespace user_data;

Create table:

Tablo yaratmak için kullanılır.

Create table (TableName)
(
(FieldName) (FieldType) (Width) PrimaryKey,
(FieldName) (FieldType) (Width) Default (Default value),
(FieldName) (FieldType) (Width) not null,
(FieldName) (FieldType) (Width),
(FieldName) (FieldType),
Primary key ((PKeyField),(PKeyField))
) tablespace (TableSpaceName);

(TableName) : yaratılmak istenen tablo adı.

(FieldName) : kolon adı.

(FieldType) : Kolon tipi . Char, Varchar, Varchar2, Integer, Long, LongRaw, Raw, Smallint, byte, boolean tiplerinden biri.

(Width) : Alan genişliği.

(Default Value) : Default ifadesi ile beraber kullanılır. Eğer kayıt girilirken bu alana veri girilmemişse default value ne ise o değer kullanılır.

PrimaryKey : eğer bir kolon primary key olarak tanımlanacaksa sonuna primarykey yazılır.

Primary Key ( ) : Bu ifade eğer bir veya birden fazla kolon seçilecekse kolon adı yanına değil ayrı bir satır olarak yazılır. primary key komutunun yanında parantez içine alan adları yazılır.

(TablespaceName) : tablonun hangi tablespace içerisinde yer alacağı yazılır.



Örnek:

Create table personel
(
ID Integer,
Adi Varchar(20) not null,
Soyadi Varchar(20) not null,
Babaadi Varchar(20) not null,
Departman integer default 1,
Görev Varchar(20),
Primary Key (Adi, Soyadi, BabaAdi)
) tablespace user_data;

Create Index :

Indeks oluşturmak için bu kullanılır.

Create [ Foreign | unique ] index (indexname) on (tablename) ( (Tablefield), (TableField)....) tablespace (Tablespacename);

Foreign : foreign key yaratmak için kullanılır.

Unique : Index unique olacak manasında kullanılır. Yani bu indexe giren kolonlar asla tekrar etmeyecek yani her satırdan bir tane olacak manasında kullanılır.

(IndexName) : index adı
(tablename) : hangi tabloda yaratılacaksa o tablonun adı.
(TableField) : tablonun kolonunun adı.
(Tablespacename) : index'in oluşturulacağı yerin tablespace adı.
Create index Personel_Departman_Inx on personel (Departman);

Eğer primary key verilmemişse onun yerine

Create unique index Personel_Unq_inx on personel (Adi, Soyadi, BabaAdi);

Create Sequence:

Sequence denen objeler sistemde belli bir sıra veya uniqe'lik takip etmesi gereken işlemler için kullanılan bir objedir.

Create Sequence (SequenceName) Start with (StartValue) Increment by (Increment) Min Value (MinValue) Max Value (MaxValue) Cycle;

(SequenceName): Sequence objesinin adı
(StartValue): Başlangıç Değeri
(Increment): Arttırım değeri
(MinValue): En küçük değeri
(MaxValue): En fazla alabileceği değer
Cycle : Eğer max değere ulaşırsa oradan min değere inip tekrar arttırım değeri kadar yükselterek devam etmesini sağlar.

Basitçe bir sequence yaratmak için create sequence (sequencename) yeterlidir. Minimum değeri çok küçük bir rakam. Max çok büyük bir rakam arttırım değeri 1 başlangıç değeri de 0 olarak alınır. Oluşan sequence'in tipi Long Integer'dır. Bir sequence'den değer okumak için (sequence).nextval ifadesi kullanılır. Bu bir rakam döndürür. o anki değeri okumak istiyorsak (sequence).currentval kullanılır.

Örnek:

Create sequence personel_Id_sequence;

Create trigger :

Trigger yaratmak için kullanılır.

Create trigger (TriggerName) [ before | after ] [ Insert | Update | Delete ] on (TableName)

[For Each Row]

Begin

:

End;

Begin satırı ile End satırı arasında yapılacak işlemlerin PL/SQL dilinde komutları yazılır. Eğer Insert trigger'ı ise New ile yeni girilen kayıttaki bilgiler alınır. UPDATE ise NEW ile yeni OLD ile eski bilgiler alınır. Eğer Delete ise sadece OLD ile eski bilgiler alınabilir. (TableName) hangi tabloya bu trigger'in konacağıdır. (TriggerName) trigger'ın adıdır. For Each Row komutu bu trigger'in bütün satırlar için ayrı ayrı çalıştırılması gerektiğini gösterir.

Örnek:

Create Trigger Personel_Id_trigger before insert on personel

For each row

Begin

:new.Id:=Personel_Id_Sqn.nextval;

end;

Create Procedure ve Create Function:

Stored Procedure oluşturmak için kullanılır. Bu tipteki objelerin amacı veri tabanı ortamında komutların işletilerek işlemlerin hızlandırılması veya daha sağlıklı bir şekilde çözülmesidir. Örneğin sayfalarca komut yazarak yaptığınız işleri client tarafında basite indirgeyerek gereksiz Lock'lardan kurtulmak için strored procedure tipi objeler kullanılır. trigger'da olduğu gibi dil olarak PL/SQL kullanılır. Eğer geriye bir değer döndürülmek isteniyorsa Function kullanılabilir.


Create procedure (ProcedureName) ([IN|OUT|INOUT] (Param1) (ParamType1), [IN|OUT|INOUT] (Param2) (ParamType2) ....)
is

Begin
:
End;

yine begin ve end arasında PL/SQL ile yazılmış komutlar bulunmalıdır.
(ProcedureName): procedur'ün adıdır.
(IN/OUT/INOUT): Parametrenin procedure giren mi yoksa procedur'den çıkan bir değermi olduğunu gösterir.Eğer herhangi bir şey girilmemişse IN olarak kabul edilir.
(Param1,2): Giren parametrelerin isimleri
(ParamType1): gönderilen parametrenin tipini belirtir.


Örnek :

-- Aşağıdaki procedür verilen isimde kaç kişi olduğunu tespit etmek için kullanılır.
Create Function IsimSay (Isim Varchar)
is
Say Integer;
Begin
Select count(*) into say from personel where ad=isim;
Return Say;
End;

Nispeten biraz pascal diline benzemesine rağmen oldukça basit komutlardan oluşur. Bir prosedürün çağrılması ise şu şekilde olur.

(Call ? = IsimSay(?))

Yukarıdaki ifade VB 4.0 ile beraber gelen RDO objesinden stored procedure çağırmak için kullanılır. Eğer oracle ile beraber gelen Sql*Plus programından strored procedure veya function çağrılmak istenirse

Var Sonuc Integer
Execute :Sonuc:=IsimSay('Ahmet');
Print Sonuc

Böylece stored procedure ile işlem gerçekleştirilmiş olur.Eğer stored procedure veriler üzerinde işlem yapmıyorsa yani DDL komutu içermiyorsa o zaman stored procedure şu şekilde de çağrılabilir.

Select IsimSay('Ahmet') from Dual;

Dual oracle joker olarak kullanılan bir ifadedir. Herhangi bir kayıt döndürmez. Ancak belirtilen şekilde çağrıldığında procedure çalıştırılıp sonuç döndürülür.

Bunun dışında delphi'de stored procedure çalıştırmak için hazır objeler mevcuttur.

VB 5.0 ise stored procedure'leri listeleyip sizin bunları programınızın bir parçası gibi görmenizi sağlayan objeleri getirmiştir. Ayrıca RDO üzerinden üstte verildiği üzere fonksiyonu yazdığınızda parametreleri rdo üzerinden tanımlayarak sonucu alabilirsiniz. Bu işlem için RDO'nun helplerine bakabilirsiniz.

PL/SQL komutları esas olarak DML ve DDL komutlarının biraz daha farklılaştırılmasıyla ve ek komutlar ve hata kontrolleri eklenmesi ile oluşturulmuştur. Basit şekilde pascal'a benzemekle beraber oldukça basittir.


Ekleyen:Ümit SERT
Kaynak:(Alıntıdır)
Aradığınız Dokümanı Bulamadıysanız, Farklı Araştırmalar Yapmak İstiyorsanız Site İçi Arama Yapabilirsiniz!

Ödev ve Araştırmalarınız için www.arsivbelge.com Sitesinde Kaynak Arayın:

Ödev ve Araştırmalarınız için Arama Yapın:
     Benzer Dokümanları İnceleyin
Datacenter Nedir?(5361)

Exchange Server(5360)

Sql (Structured Query Language) Hakkında Bilgi(5354)

DNS Hakkında(5354)

PHP Veritabı İşlemleri ve Örnekleri(5352)

          Tanıtım Yazıları
      
Türkçe İtalyanca ve Almanca Cümle Çevirisi İçin Birimçevir Sitesi

Esenyurt, Beylikdüzü ve Kartal Bölgelerinde Satılık Daire İlanları

Belge Çevirisi

Siz de Tanıtım Yazısı Yayınlamak İçin Tıklayın

Diğer Dökümanlarımızı görmek için: www.arsivbelge.com tıklayın.          

Siz de Yorum Yapmak İstiyorsanız Sayfanın Altındaki Formu Kullanarak Yorum Yazabilirsiniz!

Toplam Yorum Sayısı: 1

Tüm Yorumlar Aşağıda Listelendi!

AHMET ŞAYIK - 14.04.2015, 10:29
 

ÇOK İYİ BİR SORU SÜPERRRR


Yorum Yaz          
Öncelikle Yandaki İşlemin Sonucunu Yazın: İşlemin Sonucunu Kutucuğa Yazınız!
Ad Soyad:
          
Yorumunuz site yönetimi tarafından onaylandıktan sonra yayınlanacaktır!