| ||
| | #1 |
| Sql Giriş SQL GİRİŞ Yapısal Sorgulama Dili olan SQL, ilişkisel veritabanlarındaki bilgileri sorgulamak için standart kullanımı olan bir dildir. Standart bir dil olmasına karşılık, çeşitli veritabanlarında SQL kullanımları arasında farklılıklar vardır. SQL komutları ile, tablolara yeni kayıt girme, varolan kayıtları sorgulama (arama ve listeleme), varolan bilgileri değiştirme ve varolan kayıtları silme işlemleri yapılabilir. Sorgularımıza geçmeden önce bir kaç kavramdan bahsedelim. Veri tabanı (Database); Veri tabanı düzenli bilgiler topluluğudur. Kelimenin anlamı bilgisayar ortamında saklanan düzenli verilerle sınırlı olmamakla birlikte, daha çok bu anlamda kullanılmaktadır. Bilgisayar terminolojisinde, sistematik erişim imkanı olan, yönetilebilir, güncellenebilir , taşınabilir, birbirleri arasında tanımlı ilişkiler bulunabilen bilgiler kümesidir. Bir başka tanımı da, bir bilgisayarda sistematik şekilde saklanmış, programlarca istenebilecek veri yığınıdır. Tablo (Table); İçerisinde verilerin bulunduğu, satır,sütun mantığla oluşturulmuş hücrelere tablolar denir. Burada kolonlara vereceğimiz isimlerle bilgiye ulaşım sağlanır. Sql sorgularını Sql Server 2005 platformunda deneyeceğiz. Bunun için sistemimizde kurduğumuz Sql server 2005’i açalım. ![]() Sql Server Management Studio’yu tıklayarak açalım. Karşımıza login penceresi gelecektir. Connect butonuna basarak bağlantımızı sağlayalım. Sql Server platformunu açtıkdan sonra sağ üstte bulunan New Query butonuna basalım. Ekranda sorgu yazacağımız boş bir alan gelecektir. ![]() Sorgu alanına kodumuzu yazdıktan sonra klavyeden F5 tuşuna basarak sorgumuzu çalıştırabiliriz. Bunun dışından Sql Server platormunda Execute butonuna basarakta sorguları çalıştırabilirsiniz. ![]() DATABASE OLUŞTURMA CREATE DATABASE veritabani_adi Sorgusu ile database oluşturulur. Uygulama: CREATE DATABASE OkulProgrami Yazıp F5 tuşuna bastığımızda OkulProgrami adında bir veri tabanımız oluşacaktır. ![]() Artık OkulProgrami adında bir veri tabanımız oluşmuştur. Veri tabanımızı aktif olarak kullanabilmek için; USE Veritabani_adi Komutunu kullanmamıs gerekmektedir. USE OkulProgrami Yazdiktan sonra çalıştıralım artık işlemlerimiz OkulProgrami adındaki veritabani ile ilgili işlemleri yapabiliriz. Yazdığımız satırları yorum satırı haline getirmek için satır başına “ -- ” yazmamız yeterlidir. Birden fazla satırı aynı anda yorum satırı haline getirmek istersek “ /* */” ifadelerinin arasına yazmamız yeterlidir.--Create Database OkulProgrami Yukarıdaki satır çalışmayacaktır Veri tabanımızı oluşturduğumuza göre artık tablolarımızı oluşturabiliriz. Tablo oluşturmada önemli iki olay vardır. Birincisi kolon isimlerini verirken bazı kurallara uymamız gerekir, ikincisi ise o kolonun veri tipi (data type)’ıdır. Tablo oluşturmadan önce veri tiplerimizi tanıyalım. Veri Tipi Adı Açıklama Kapladığı Alan Bigint -9,223,372,036,854,775,808 ile 9,223,372,036,854,775,807 arasındaki tam sayıları tutar. 8 Bayt int -2,147,483,648 ile 2,147,483,647 arasındaki tam sayıları tutar.En çok kullanılan veri tiplerinden biridir. 4 Bayt Smallint -32,768 ile 32,767 arasındaki sayıları tutar. 2 Bayt Tinyint 0 – 255 arası sayıları tutar. 1 Bayt Decimal (p,s) Decimal ondalık veya tam butun sayıları tutar ama ondalık sayı için kullanılır. 12345 sayısını yazımını değiştirmek için Decimal (5,3) à 12,345 şeklinde olur. 2 – 17 bayt arası Numeric (p,s) İşlevsel olarak decimal’e benzer 2 – 17 Bayt arası Ø Aproximate Numeric Data Tipleri Float (n) -1.79E + 308 ile 1.79E + 308’e kadar kayan noktalı değerli sayısal veri 4 – 8 Bayt arası Real -3.40E + 38 ile 3.40E + 38’e kadar kayan noktalı değerli sayısal veri 4 Bayt Ø Monetary Data Tipleri Money -922 337 203 685 47,.5808 'den 922 337 203 685 477,5807 'ye kadar paraları tutabilir. 8 Bayt SmallMoney 214 748,3648 'den 214 748,3647 'kadar olan sayıları tutabilir 4 Bayt Ø Date and Time Data tipleri DateTime Ocak 1753 'ten 31 Aralık 9999 'a kadar olan tarih aralığıı tutabilir 8 Bayt SmallDateTime 1 Ocak 1900 'den 6 Haziran 2079 'a kadar olan tarih aralığını tutar. 4 Bayt Ø Character Data Tipleri Char (n) Enfazla 8000 karakter alabilir. Dolayısıyla maksimum 8000 bayt yer kaplar. Bu veri tipi içine girilecek olan karakter sayısı kesin belli olduğu zaman kullanılır. Unicode olmayan karakter veri. Nchar (n) Enfazla 4000 karakter alır. Unicode karakter veri Karakterin 2 katı kadar kaplar Varchar (n) Enfazla 8000 karakter içerir. 8000 bayta kadar yer tutabilir. Bu veri tipini girceğimiz değerin uzunluğu kesin belli olmadığında kullanabiliriz. Unicode olmayan karakter veri. Girilen verinin uzunluğu kadar Nvarchar Enfazla 4000 karakter alır. Unicode karakter veri Karakterin 2 katı kadar kaplar Text En fazla 2,147,483,647 karakter sayısı kadar alır. Ntext En fazla 1,073,741,823 647 karakter sayısı kadar alır Ø Binary Data Tipleri Binary (n) 8000 bayta kadar veri tutabilir. 4 Bayt Varbinary (max) 2 Gb 'a kadar veri tutabilir. Image 2 Gb 'a kadar veri tutabilir. .( image=varbinary(max) ) Ø Specialized Data Tipleri Bit 0 veya 1 tam sayı değeri alan değişkenlerdir. Yani geriye true veya false bi değer döndürür. 1 Bayt Sql_variant Bu gireceğimiz değerin çeşidini bilmediğimiz sütunlarda kullanabileceğimiz bir veri tipidir. Yani resim, string, sayı, table ne olduğunu bilmediğim şeyler yerine kullanabilirim. En Fazla 8000 Bayt Veritiplerimizide ifade ettikten sonra tablomuzu artık oluşturabiliriz. CREATE TABLE tablo_adi ( Kolon_adi veritipi, Kolon_adi veritipi, Kolon_adi veritipi, ........................ ) Şeklinde yazdığımızda tablomuzun oluşmasını sağlarız. Uygulama: CREATE TABLE tblBilgiler ( Adi varchar(30), Soyadi varchar(40), Numara int, ) Kodumuzu çalıştırdığımızda tblBilgiler adında tablomuz oluşmaktadır. Tablomuza birincil anahtar (primary key) koymadık. Peki birincil anahtar nedir önce onu anlatalım. Birincil Anahtar yani Primary Key tabloda bulunması gereken en önemli özelliklerin başında sayılır. Tabloda yer alan bilgiler içerisinde tekrarlanmaması gereken ve sadece bir kişiye ait olan bilgiler için kullanılır. Örneğin bir öğrencinin numarası her öğrenci için farklıdır sadece bir tane olur. Birincil anahtar kullanılmadığında tablo üzerinden bilgileri silme, güncelleme, ekleme durumlarında sorun yaşamanız mümkündür. Birincil anahtarlı tablo oluşturmak için; CREATE TABLE tablo_adi ( Sütun_tanımı PRIMARY KEY ) Yazılarak primary key tanımlanır. Uygulama: CREATE TABLE tblBilgiler ( ID int PRIMARY KEY, Adi varchar(30), Soyadi varchar(40), Numara int, ) Bu durumda ID kolonu birincil anahtar haline gelecektir. Şekil olarak düşünürsek veritabanlarda yanında anahtar şekilde görünür. Primary Key olan kolon boş geçilemez. ![]() Primary Key olan kolon’nun otomatik olarak artarak gitmesini istiyorsak. CREATE TABLE tablo_adi ( Sütun_tanımı nt not null IDENTITY(1,1) PRIMARY KEY ) Şeklide yazılarak otomatik olarak kolon atacaktır. Uygulama: CREATE TABLE tblBilgiler ( ID int not null IDENTITY(1,1) PRIMARY KEY, Adi varchar(30), Soyadi varchar(40), Numara int, ) Şeklide kodumuzu çalıştırdığımızda ID kolonumuz artık otomatik olarak 1 den başlayarak birer birer otomatik olarak artacaktır. Tablolarımızı oluşturduğumuza göre artık içerisine veri girişi yapabiliriz. INSERT Tablolarımıza kayıt eklemek için INSERT komutunu kullanırız. INSERT into tablo_adi values (değer1,değer2,....) Şeklinde yazaraka veya kolonları belirleyerek yazabiliriz. INSERT into tablo_adi (kolon1,kolon2,.....) values (değer1,değer2,....) Olarakta yapılabilir. UYGULAMA: INSERT into tblBilgiler values (‘Funda’,’Koyuncu’,2345) Şeklinde yazıp F5 tuşuna bastığımızda komut çalışacak ve kayıt eklenecektir. Burada ID otomatik değer dışardan yazılmaz. Yazdığımız değerler tabloyu oluşturken adi, soyadi, numara sıralamasına göre yerleşesektir. Burada sayısal olmayan değerler tek tırnak “ ‘ ” içinde yazılması gerekmektedir. Sayısal değer alan veritipleri ise tek tırnak kullanamayız. Kolonları belirterek kayıt girelim. INSERT into tblBilgiler (adi,soyadi,numara) values (‘Kadir’,’Korutürk’,2333) Bu şekilde de girerek adi kolonuna Kadir, soyadi kolonuna Korutürk, numara kolonunada 2333 değerleri eklenecektir. Tablomuza aşağıdaki satırları yazarak bir defada bilgileri girebiliriz. INSERT into tblBilgiler values ('Kadir','Korutürk',2333) INSERT into tblBilgiler values ('Funda','Koyuncu',2334) INSERT into tblBilgiler values ('Dilek','Çakýr',2356) INSERT into tblBilgiler values ('Cem','Bayraktaroðlu',5674) INSERT into tblBilgiler values ('Mehmet','Eðitmen',5478) INSERT into tblBilgiler values ('Elif','Atabay',5897) INSERT into tblBilgiler values ('Safiye','Karaca',2358) Bilgileri görmek için bu sorgudan sonra select * from tblBilgiler sorgusunu yazıp çalıştırınız. Bilgiler listelenecektir. ![]() UPDATE Girilmiş kayıtlarda bilgiyi güncellemek için kullanılır. UPDATE tablo_adi SET kolon_adi=yeni_deger WHERE kolon_Adi=Koşul_değeri Şeklide sorgumuzu yazarak bilgi güncelleyebiliriz. | |
| Hayat Kisa Degmez Bir Kiza !! Bazen arkada$lik bazen sevili olmakti a$k Bana gore a$k fedakarlikti Bazen susmayi bilmek bazende dogru $eyleri konu$makti A$in icinde engeller oyunlar firtinlar yoktu A$k birbirini yipratmak degildi cunku A$k sinirsizca sorgusuzca sonsuzca sevmekti blok sıteme gırıs : [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] | |
| | |
| | #2 |
| UYGULAMA: Burada Numarası 2334 numaralı Funda Koyuncu kaydını Ayşe Koyuncu olarak değiştirmek istediğimizde. UPDATE tblBilgiler SET Adi=’Ayşe’ WHERE numara=2334 Sorgusunu çalıştırdığımızda Funda ismi Ayşe olarak değişecektir. ![]() Birden fazla bilgi değismesi durumunda; UPDATE tblBilgiler SET Adi='Damla',Numara=4788 WHERE ID=3 Sorgusunda ID değeri 3 olan satırın Adi=Damla, Numara=4788 olacaktır. ![]() DELETE Girilen kayıtlardan istediğimiz bilgileri silmek için kullanılır. DELETE FROM tablo_adi WHERE kolon_adi=Koşul_değeri Şekliden sorgumuzu yazdığımızda koşula bağlı olan kayıt silinecektir. UYGULAMA: Bilgilerimizden adı cem olan bilgiyi silmek için; DELETE FROM tblBilgiler WHERE adi=’cem’ Yazıp çalıştırdıktan sonrsa cem isimli kaydımız silinmiş olacaktır. ![]() Tablonun tamamını silmek istiyorsanız DELETE FROM tablo_adi DELETE FROM tblBilgiler Sorgusunu yazıp çalıştırmanız yeterli olacaktır. Bu komut tablonun içindeki tüm bilgileri silecektir. SELECT (Seç) Tablolarımıza girilen bilgileri istediğimiz doğrultuda bilgileri getirmek için kullanırız. Select sorgusuna geçmeden önce aşağıdaki sorguyu çalıştırarak okulprogrami veri tabanına yeni bir tablo oluşturalım. use okulprogrami create table tblPersonel ( ID int not null IDENTITY(1,1) PRIMARY KEY, TCKimlik bigint, Adi varchar(20), Soyadi varchar(30), Sehir varchar(15), Gorevi varchar(15), Cinsiyeti varchar(5), Maasi smallint, ) İçerisine bilgi girişini yapalım. insert into tblPersonel values (23658565874,'Funda','Koyuncu','Adana','Satış','Bayan',1200) insert into tblPersonel values (54554565455,'Kadir','Korutürk','Ankara','Müdür','Erkek',2700) insert into tblPersonel values (89004868965,'Şenay','Türkmen','Ankara','Satış','Bayan',1300) insert into tblPersonel values (56754045633,'Elif','Atabay','Samsun','Satış','Bayan',1300) insert into tblPersonel values (78534224545,'Erdoğan','Berkgeldi','Ankara','Satış','Erkek',900) insert into tblPersonel values (35656455465,'Safiye','Karaca','Samsun','Satış','Bayan',1300) insert into tblPersonel values (12021584058,'Burcu','Karacaoğlan','Adana','Eğitmen','Bayan',1900) insert into tblPersonel values (24102360188,'Mehmet','Eğitmen','Ankara','Eğitmen','Erkek',2000) insert into tblPersonel values (89704650494,'Selçuk','Özdemir','Adana','Eğitmen','Erkek',2200) insert into tblPersonel values (65709848978,'Cem','Bayraktaroğlu','Samsun','Eğitmen','Erkek',1800) Bilgilerimizi girdikten sonra select * from tblPersonel sorgusuyla bilgilerimizi kontrol edelim. ![]() Şimdi select sorgusu ile bilgilerimizi çekebiliriz. Select parametresi; Select kolon_adlari from tablo_adi UYGULAMA Tblpersonel tablosunda ki tüm verilere ulaşmak için; Select * from tblPersonel Burada yer alan “ * “ işareti tüm kolonlar anlamına gelir. İstediğimiz kolonların gelmesini istiyorsak; Select Adi,Soyadi,Gorevi from tblPersonel ![]() KOŞULLU VERİLERİ GETİRME Sorgularımız belli bir kriteri dikkate alarak bilgilerin gelmesini istediğimizde WHERE cümlesi yeterli olacaktır. Select kolon_adi from tablo_adi Where kolon_adi=Koşul_ifadesi UYGULAMA: Tablomuzda bulunan bilgiler doğrultusunda Görevi, Satış olan kişileri listeyelim. Select * from tblPersonel where Gorevi=’Satış’ ![]() Liste sadece Görevi Satış olan kişileri görüntüleyecektir. Görevi hem Satış, hemde erkek olan kişileri görüntülemek istediğimizde AND cümleciği eklememiz yeterlidir. Select kolon_adi from tablo_adi Where kolon_adi=Koşul_ifadesi and kolon_adi=Koşul_ifadesi UYGULAMA: Select * from tblPersonel where Gorevi='Satış' and Cinsiyeti='Erkek' ![]() Bu durumda sadece Erdoğan kayıdı gelecektir. AND parametresi her iki koşulununda sağlanması durumunda gerekir. Burada Görevi satış olmanın ziyade, cinsiyetininde erkek olması gerekmektedir. Bu iki kurala uyan veri gelmiştir. OR parametresi kullanıldığında ise her iki koşul ayrı ayrı değerlendirilir ve sadece bir tanesinin doğru olması durumda bilgiler gelir. Select kolon_adi from tablo_adi Where kolon_adi=Koşul_ifadesi or kolon_adi=Koşul_ifadesi | |
| Hayat Kisa Degmez Bir Kiza !! Bazen arkada$lik bazen sevili olmakti a$k Bana gore a$k fedakarlikti Bazen susmayi bilmek bazende dogru $eyleri konu$makti A$in icinde engeller oyunlar firtinlar yoktu A$k birbirini yipratmak degildi cunku A$k sinirsizca sorgusuzca sonsuzca sevmekti blok sıteme gırıs : [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] | |
| | |
| | #3 |
| UYGULAMA: Select * from tblPersonel where Gorevi='Satış' or Cinsiyeti='Erkek' Bu sorgunun sonucunda Görevi, Satış olanlar gelecek, ayrıca Cinsiyeti erkek olanlarda gelecek. Burada Görevi, Satış olanlarda cinsiyeti kontrol etmyecektir. Cinsiyete bakarkende Görevlerine bakmayacaktır. ![]() LIKE SORGUSU Bilgiyi getirmede arasında geçen kelimeleri belirlediğimizde ve buna göre gelmesi durumunda LIKE kullanabiliriz. Select * from tablo_adi Where Kolon_adi Like Koşul_değeri UYGULAMA: Select * form tblPersonel where Adi LIKE ‘%a%’ Yazdığımızda Adi kolonunun değerlerinden içerisinde (başında,ortasında veya sonunda) “a” harfi olan kayıtların gelmesi sağlanacaktır. ![]() KAYITLARI SIRALAMAK Verilerimizin istediğimiz kolona göre sıralı gelmesini istediğimiz zaman ORDER BY komutunu select sorgumuza eklememiz yeterlidir. Select kolon_adi from tablo_adi where koşul_ifadesi ORDER BY kolon_adi [ASC] [DESC] UYGULAMA: Select * from tblPersonel ORDER BY adi ASC Sorgusunu yazdığımızda adi kolonuna göre artan sıralama yapacaktır. A’dan Z’ye kadar kolonun sıralandığı görünecektir. Select * from tblPersonel where cinsiyeti='Erkek' ORDER BY adi DESC Sorgusunu çalıştırdığımızda ise cinsiyeti kolonunda erkek olanlar gelecek. Gelirsen sıralamada azalan (Z’de A’ya) sıralama gerçekleşecektir. BETWEEN .... AND Bir aralık içerisinde yer alan kayıtları getirmek için kullanılır. Select kolon_adi from tablo_adi where koşul_ifadesi Between alt_sınır AND ust_sınır UYGULAMA: Burada maaşı 2000 ile 3000 arasında olanların bilgilerini göstermek istediğimizde Select * from tblpersonel where Maasi Between 2000 and 3000 Sorgusunu çalıştırdığımızda maasi kolonunda 2000 ile 3000 arasindaki kişiler gelir. ![]() TOP KOMUTU TOP ifadesi SQL Server’a ait bir deyim olup diğer sistemlerde genelde desteklenmemektedir. N kaydının üstten göstermek için kullanılır. Select TOP (N) kolon_adi from tablo_adi Şeklide kod yorumlanır. UYGULAMA: Tablomuza girilen üstten ilk 3 bilginin gelmesini istersek; Select Top 3 * from tblPersonel Kodumuzu yazdığımızda ilk üç kayıt gelecektir. Özellikle web sitelerinde gördüğümüz bir olay vardır. Son 10 makale gibi. Bunun için tersten 10 kayıdın gelmesi için ise; Select Top 3 * from tblPersonel Order by ID DESC Sorgumuzu çalıştırdığımızda sondan itibaren bilgilerimizi alabiliriz. Top komutunda kayıt sayısı yerine oran değerinden de bilgi getirebiliriz. %10 bilgi gelsin gibi. Bunun için PERCENT eklememiz yeterlidir Select Top 50 PERCENT * from tblPersonel Yazıp çalıştırdığımızda kayıtların %50 si gelecektir. NEWID (RASTGELE BİLGİ GETİRMEK) Özellikle alışveriş sitelerinde gördüğümüz bir durumdur. Rastgele 15 ürün gibi durumların SQL ile yapılmasını NEWID komutu ile yapabiliriz. Select TOP (N) kolon_adi from tablo_adi ORDER BY NEWID() UYGULAMA: Rastgele 8 kayıdın gelmesini sağlamak için; Select Top 8 * from tblPersonel Order by NEWID() d Sorguyu her seferinden çalıştırdığımızda sürekli olarak faklı 8 kayıdın geldiğini görebilirsiniz. IN ve NOT IN Verilerden birden fazla değer ifadeler getirmek için kullanırız. Select kolon_adi from tablo_adi where kolon_adi IN (koşul_değerleri) UYGULAMA: Tablomuzda maasi 1200, 1300, 2000 olan kişileri listelemek istediğimizde; Select * from tblPersonel Where maasi IN (1200,1300,2000) Sorgumuzu çalıştırdığımızda maasi 1200, 1300, 2000 olanlar gelecektir. ![]() Yukarıdaki değerler dışındaki verilerin gelmesini istersek NOT IN komutu yeterli olacaktır. Select * from tblPersonel Where maasi NOT IN (1200,1300,2000) Sorgumuzu çalıştırdığımıza maasi kolonunda 1200,1300,2000 değerileri dışındaki bilgiler gelecektir. Umarım T-Sql konusunda yardımcı olmuştur. Bir sonraki makalemde görüşmek üzere . | |
| Hayat Kisa Degmez Bir Kiza !! Bazen arkada$lik bazen sevili olmakti a$k Bana gore a$k fedakarlikti Bazen susmayi bilmek bazende dogru $eyleri konu$makti A$in icinde engeller oyunlar firtinlar yoktu A$k birbirini yipratmak degildi cunku A$k sinirsizca sorgusuzca sonsuzca sevmekti blok sıteme gırıs : [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] | |
| | |
![]() |
| Tags: giris, sql |
| Seçenekler | |
| Stil | |
| |