🙂 İNSANLARIN EN HAYIRLISI INSANLARA FAYDALI OLANDIR 🙂

Burak Kemal KOYUNCU / MSSQL / SQL SORGULAR KOMUTLAR

1-) MSSQL - SQL SORGULAR KOMUTLAR

 

14.10.2015

create database test--veri tabanı oluşturur

 

use test—test veri tabanini kullan aşağıdaki sorgular için

 

create table ogrenci(ogr_no int not null,ogr_adi varchar(20) not null,ogr_soyad varchar(50))--tablo oluşturur

 

alter table ogrenci add ogr_ulke varchar(50)--ogrenci tablosuna ogr_ulke adında sutun oluşturur

 

alter table ogrenci alter column ogr_soyad varchar(100) null--daha onceden ogr_soyad varchar(50) idi onu

varchar(100) yaptık

 

alter table ogrenci drop column ogr_ulke--ogr_ulke adındaki sutunu siler

 

insert into ogrenci (ogr_no,ogr_adi,ogr_soyad,ogr_adress)

values ('5132','ramazan','haber','merhmesd asdas')—sütunlara ekleme yapar

 

update ogrenci set ogr_adress='gaziantep' where ogr_no='213'--ogr_no=213 olanın adresini gazientep yap

 

delete  from ogrenci where ogr_no='07'--ogr_no=07 olan satırı sil

 

delete from ogrenci--ogrenci tablosundaki verileri komple satırı sil

 

 drop table ogrenci--table komple yok olur

 

  21.10.2015

select SOYAD,AD from KISILER--kişiler tablosundan sadece soyad ve ad alanını getirir

select * from KISILER--kişiler tablosunun hepsini getirir

select distinct * from kisiler--tekrar eden kayıtları tek bir tane yapar

select distinct (soyad) from kisiler--kisiler tablosunda tekrar eden soyadları yalnızca 1 tane getırır

select distinct (SEHIR) from kisiler--kisiler tablosunda tekrar eden SEHIR yalnızca 1 tane getırır

select * from KISILER where SEHIR='Ankara'--kişiler tablosundaki sehiri ankara olanı getir

select * from YAZARLAR where DOGUM_YILI>1800 and DOGUM_YILI<1900 --2 tarih arasını alır

select * from uyeler where ISIM='Deniz' and CINSIYET='K'--ismi deniz ve cinsiyeti kız olan gelsin

select * from uyeler where ISIM='Deniz' or CINSIYET='K'--ismi deniz veya cinsiyeti kız olanlari getir

select * from uyeler where CINSIYET='E' and (SOYISIM='Aydın' or  SOYISIM='Zafer')--parantez ile kullanımı

select * from UYELER order by ISIM asc--alfabetik sıraya gore sıralar

select * from UYELER order by ISIM desc--alfabetik sondan geriye doğru sıralar

select top 3 * from UYELER--ilk 3 kayıtı getirir

select * from UYELER where SOYISIM like 'Z%'--soyad'ı Z ile başlayanlar

select * from UYELER where SOYISIM like '%s'--soyismi s ile bitenler

select * from UYELER where SOYISIM like '%er%'--soyisminde er olanlar

select * from UYELER where SOYISIM like '%[eç]%'--soyisminde e veya ç olanlar

select * from UYELER where SOYISIM not like '%[eç]%'--soyisminde e veya ç olmayanlar

 

 

Selçuk Üniversitesi/Bilgisayar Mühendisliği

Veritabanı-1 Laboratuvar dersi /Ödev-1 21.10.2015

Aşağıdaki soruların cevabını veren sorgu cümlelerini yazınız ve sorgu sonucunu ekran görüntüsü alarak ilgili sorgunun altına yapıştırınız.

  1. Geçerli e-postaya sahip üye listesini veren sorguyu yazınız.

 

select * from UYELER where E_POSTA like '%@%'

  1. Soyadı Z ile veya A ile başlayan erkek üyelerin listesini veren sorguyu yazınız.

select * from UYELER where (SOYISIM like 'Z%' or SOYISIM like 'A%') and CINSIYET='E'

  1. Yaşı 30dan küçük bayan personellerin listesini veren sorguyu yazınız.

select * from PERSONEL where YAS<30 and CINSIYET='K'

  1. Türk personelleri maaş bilgileri ile listeleyiniz (maaş sırası büyükten küçüğe).

select * from PERSONEL where ULKE='Türkiye' order by MAAS desc

 

 

  1. Soyadında oğlu ifadesi geçemeyen üyeleri listeleyiniz.

select * from UYELER where SOYISIM not  like '%oglu%'

 

04.11.2015

select * from PERSONEL where YAS in (20,22,23,35)--yaşı 20 22 23 ve 35 olani ekrana getir=or

select * from PERSONEL where YAS=22 or YAS=20 or YAS=23 or YAS=35--yukardakinin aynısı

select * from PERSONEL where SOYISIM in ('Efe','can')--soyadi efe ve can olani ekrana getir=in

select * from PERSONEL where SOYISIM not in ('Efe','can')--soyadi efe ve can olmayani ekrana getir=not in

select * from PERSONEL where YAS not in (20,22,23,35)--yaşı 20 22 23 ve 35 olmayani ekrana getir aşşağıdakinin aynısı = and

select * from PERSONEL where YAS<>22 and YAS<>20 and YAS<>23 and YAS<>35--yukardakinin aynısı= not in

select ISIM,SOYISIM,YAS,CINSIYET from PERSONEL where YAS BETWEEN 20 and 30--yaşı 20 ile 30 arasındakileri getir

select ISIM as adi,SOYISIM as soyadi,YAS,CINSIYET as cinsiyet from PERSONEL--as komutu sütün ismini değiştirir

select AVG(MAAS) as ORTALAMA from PERSONEL--maaşın ortalamasini alir ortalama diye sütünün ismini değiştiri ekrana yazar

select MAAS from PERSONEL--personel tablosundaki maaşın hepsini ekrana yazar

select * from PERSONEL where ULKE='Türkiye'—ülkesi türkiye olanları getirir

select AVG(MAAS) as ortalama from PERSONEL—ortalamasini alir

select AVG(MAAS) as ortalama , ULKE from PERSONEL where ULKE='Türkiye'  Group by ULKE--türkiyedekileri ortalamasini alır ve türkiyeye gore gruplar

select yas from PERSONEL-- sadece yas ekrana getirir

select MAX(YAS) as ustat from PERSONEL--en buyuk yasi bulur sutun ismi ustat olarak ekrana yazar

select min(YAS) as ustat from PERSONEL--en kucuk yasi ekrana yazar

select sum(MAAS) as ustat from PERSONEL--maasin hepsini toplar ekrana yazar

select COUNT(MAAS) from PERSONEL--toplam maas kayıt sayısını verir index

select  COUNT(distinct ULKE) from PERSONEL--kaç farkli ülke varsa onun sayisini dondurur

select ULKE,AVG(MAAS) ort from PERSONEL where CINSIYET='E' group by ULKE having AVG(MAAS)>3000--having demek avg ye şart koy yani 3000 den buyuklerıni bana göster diyorum

 

 

Aşağıdaki soruların cevabını veren sorgu cümlelerini yazınız ve sorgu sonucunu ekran görüntüsü alarak ilgili sorgunun altına yapıştırınız.

  1. Üye adında ‘-ER' geçen ilk beş üyeyi veren sorguyu yazınız.

select top 5 * from UYELER where UYE_ADI  like '%er%'

 

  1. Türkiye'de yaşayan en yaşlı ve en genç personeller kaç yaşındadır sorgulayınız.

select MAX(YAS) as enyasli  from PERSONEL where ULKE='Türkiye'--en yaþli yasi ekrana yazar

 

select min(YAS) as engenc  from PERSONEL where ULKE='Türkiye'--en genc yasi ekrana yazar

  1. Amerika, Almanya ya da Fransa'da yaşayan personellerin yaş ortalamasını ülkeler bazında veren sorguyu yazınız.

select AVG(yas) ORTALAMA, ULKE from PERSONEL where ULKE in ('ABD','Almanya','Fransa') group by ULKE

  1. Hayatta olan ve 1910 tarihinde vefat eden yazarları listeleyen sorguyu yazınız.

select * from YAZARLAR where OLUM_YILI=1910 or  OLUM_YILI is null

 

 

 

 

 

 

11.11.2015

 

select * from YAYINEVLERI--PK

select * from KITAPLAR--FK

select * from KITAPLAR,YAYINEVLERI --kartezyan çarpım yapar yani tabloyu birleştirir

select * from KITAPLAR,YAYINEVLERI where KITAPLAR.YV_NO=YAYINEVLERI.NO--kitaplarin.yv_no eşit olan yayinevleri.no olanlari getir

select * from KITAPLAR inner join YAYINEVLERI on KITAPLAR.YV_NO=YAYINEVLERI.NO-- yukaridaki sorguyla aynı sonucu verır

select * from KITAPLAR as kitap,YAYINEVLERI as yayin where kitap.YV_NO=yayin.NO--yukaridakinin aynisi sadece sutun ismini degistik

select kitap.NO,kitap.ISIM,yayin.ISIM from KITAPLAR as kitap,YAYINEVLERI as yayin where kitap.YV_NO=yayin.NO--yukardakinin aynisi * i degistirdik

select * from KITAPLAR,YAYINEVLERI where KITAPLAR.YV_NO<>YAYINEVLERI.NO--ayni olmayanlari getirir

select * from KITAPLAR as kitap,YAYINEVLERI as yayin where kitap.YV_NO=yayin.NO--basla1

union all—iki sorguyu birliştirir aynı olanlarıda getirir

select * from KITAPLAR as kitap,YAYINEVLERI as yayin where kitap.YV_NO=yayin.NO--bitir1 2 tabloyu birlestirdik komple

select * from KITAPLAR as kitap,YAYINEVLERI as yayin where kitap.YV_NO=yayin.NO--basla2

union-- iki sorguyu birleştiri tek tablo şeklinde gösterir aynı olanları yazmaz

select * from KITAPLAR as kitap,YAYINEVLERI as yayin where kitap.YV_NO=yayin.NO--bitir2 2 tabloyu birlestirir ayni olanlari yazmaz

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

18.11.2015

select  CASE cinsiyet when  'K' then 'KIZ'  else  'ERKEK' end from uyeler--"K" yazanları "kız" yap digerlerini "'ERKEK' " yaz

select isim,soyisim,  CASE cinsiyet when  'K' then 'KIZ'  else  ‘erkek' end as cinsiyet,cinsiyet  from uyeler--

declare @ay int--int degerinde değişken tanımlarız

set @ay=1--değişkene deger atadık

select case @ay when 1 then 'ocak' when 2 then 'subat' else 'gecersiz ay ' end --eger degisken 1 ise ocak yaz 2 ise subat

Selçuk Üniversitesi/Bilgisayar Mühendisliği

Veritabanı-1 Laboratuvar dersi /Ödev-3 18.11.2015

Ödev scriptini herhnagi bir database çalıştırarak aşağıdaki tabloları oluşturunuz.

Musteri ve KonusmaKaydi diye iki tablomuz var. Her müşterinin konuşma kayıtları KonusmaKaydi tablosunda konuşma yönüne göre tutuluyor. Her konuşma için konuşma kaydı tablosuna yeni bir kayıt giriliyor. Konuşma yönü şehir içi, şehirlerarası, GSM gibi değişiklik göstermekte.

Tüm müşterilerin yapmış olduğu konuşmaları toplam şehir içi, toplam şehirlerarası ve toplam GSM konuşması olarak listeleyen sorguyu yazınız. (Sorgu sonucunuzda aşağıdaki başlıklar gibi olmalıdır.)  Sorgu sonucunuzun ekran görünüşünü sorgunun altına yapıştırınız.

Ad Soyad SehirIçi SehirlerArasi GSM

CEVAP-)

Yön=1 şehir içi,,,yön=2 şehirler arası,,,,yön=3 GSM

select   ad,soyad,sum(case when Yon =then Saniye else 0 end)toplam_sehir_ici

 ,sum(case when Yon =then Saniye else 0 end)toplam_sehirler_arasi

 ,sum(case when Yon =then Saniye else 0 end)toplam_GSM from KonusmaKaydi,Musteri

 where  Musteri.Musterikey=KonusmaKaydi.Musterikey Group by ad,soyad

 

 

 

 

 

25.11.2015

select ASCII('d')--karakter gireriz onun aski karşılıgını dondurur=100

select CHAR(100)--asci sayi gireriz onun karakter karşılığını verir=d

select CHARINDEX('E','DilEk')--E karakterinin indisi kaçtır 4'dür... burada başlangıcı 1 kabul eder yani D yi

select LEFT('ramazan',3)--soldan 3 karakter al sonuc='ram' dır

select right('ramazan',3)--sağdan 3 karakter al sonuc='zan' dır

select LEN('ramazan haber')--toplam karakter sayısını uzunlugunu verir boşluklarda dahil

select LOWER('RAMAZAN')--karakterleri kucuge çevirir

select UPPER('ramazan')--karakterleri buyuge çevirir

select LTRIM(' ramazan')--soldaki boşluğu siler

select RTRIM('ramazan ')--sağdaki boşluğu siler

 

select LEN(LTRIM(' ramazan'))-- normalde boşluğuda sayar len komutu 8 dondurur fakat ltrim yaparak boşlugu sildik 7 dondurdu

 

select REPLACE('RAMAZAN','RA','TA')--ramazanın içinde RA yi arar onu TA olarak değiştir sonucumuz = TAMAZAN olur

 

select REPLICATE('ramazan ',5)-- 5 tane ramazan yazar

select REVERSE('RAMAZAN')--ramazanı tersten yazar sonuc=NAZAMAR

select 'RAMAZAN'+SPACE(2)+'HABER'-- space(2)=2 tane boşluk koyar

select SUBSTRING('RAMAZAN',2,3)--  2 den itibaren 2 dahil 3 karakter al ekrana yaz sonuc='AMA'

select SUBSTRING('RAMAZAN',4,5)--  4 den itibaren 4 dahil 5 karakter  al ekrana yaz sonuc='AZAN'

 

select STUFF('RAMAZAN',2,4,'HABER')--2 den başla 4 karakteri sil ve sildiğin yere 'HABER' yaz sonuc=RHABERAN

 

declare @isim varchar(10)

set @isim='RAMAZAN'

select STUFF(@isim,2,LEN(@isim)-1,'HABER')-- sonuc=RHABER döner yukarıdakinin aynısı

 

select GETDATE()--şimdiki tarihi verir

 

select DAY(GETDATE())--verilen tarihin günün döndürür burada bugunun tarihini gonderdık gun olarak 25 werecek

 

select month(GETDATE())--verilen tarihin ayını döndürür

select YEAR(GETDATE())--verilen tarihin yılını döndürür

select DATEDIFF(day,'2015-10-25',getdate())-- iki tarih arasındaki gün farkını dondurur

select DATEDIFF(MONTH,'2015-10-25','2015-11-25')-- iki tarih arasındaki ay farkını dondurur

select DATEDIFF(YEAR,'2012-10-25',getdate())-- iki tarih arasındaki yıl farkını dondurur

select DATEADD (DAY,3,GETDATE())-- bugunun tarihine 3 gün ekle

select DATEPART(DAY,GETDATE())--bugunun gununu dondurur

 

 

 

 

 

 

 

 

 

 

16.12.2015

create view view56(ad,soyad) as select isim,soyisim from personel_vize--sanal tablo oluşturur views klasorunun altındadır

soru-1)personel tablosundaki ulkeler ıcın ortalama maaşı hesapla ve ortalama maaşın ustunde
alan kişileri getir cevap aşşagıdaki kod

create view view5 (ulke,ulke_ort_maas) as select ulke ,avg(MAAS) from personel_vize group by ulke


select * from personel_vize,view5 where   personel_vize.maas>view5.ulke_ort_maas and personel_vize.ulke=view5.ulke

 

                                                               vize soruları ve cevapları

1-)adı "e" ile başlayan veya soyadında "s" harfi bulunan ve maasının 2 katı 3500 den buyuk veya esıt olan personellerın adı ve soyadını a-z sıralı olarak lısteleyen sorguyu yazınız

SELECT ISIM,SOYISIM,MAAS, MESLEK FROM PERSONEL

WHERE ISIM LIKE 'e%' OR SOYISIM LIKE '%s%' AND (2*MAAS)>=3500 ORDER BY ISIM,SOYISIM  ASC

SELECT ISIM,SOYISIM,MAAS, MESLEK FROM PERSONEL

WHERE ISIM LIKE 'e%' OR SOYISIM LIKE '%s%' AND (2*MAAS)>=3500 ORDER BY ISIM asc,SOYISIM

2-)personel tablosunda memurların maasına %20 zam yapan sorguyu yazınız

UPDATE PERSONEL SET MAAS=MAAS*1.20 WHERE MESLEK='memur'

SELECT ISIM,SOYISIM,MAAS from PERSONEL

3-)personellerin isim,soyisim,kent ve ulke bilgilerini tek bir kolonda (personel_detay) assıgıdaki formatta sorgulayınız..bosluk sayısı 2 dır

S.ellen  ülke=ABD  kent:new york

SELECT LEFT(SOYISIM,1)+'.'+ISIM+SPACE(2)+'ÜLKE:'+ULKE+SPACE(2)+ 'KENT:'+KENT AS PERSONEL_DETAY_BILGI FROM PERSONEL

SELECT STUFF(SOYISIM,2,LEN(SOYISIM)-1, '.' +ISIM ) +SPACE(2)+'ÜLKE:'+ULKE+SPACE(2)+'KENT:'+KENT AS PERSONEL_DETAY_BILGI FROM PERSONEL

 

SELECT substring(SOYISIM,1,1)+'.' +ISIM  +SPACE(2)+'ÜLKE:'+ULKE+SPACE(2)+'KENT:'+KENT AS PERSONEL_DETAY_BILGI FROM PERSONEL

4-)personel tablosunda bulunan mesleklerı ve her bır meslege mensup kişi sayısını veren sorguyu yazınız

SELECT MESLEK, COUNT(MESLEK)MENSUPSAYISI FROM PERSONEL GROUP BY MESLEK

5-)personellerin isimlerini ,soyisimlerini ve maaş seviyelerini düşükten yüksege dogru sıralayan sql sorgusunu yazınız.(personel maasını 1800 den kucuk ıse dusuk,1800 ile 3000 arasında ise orta ve 3000 den yuksek ise yuksek olarak maas sevıyelerını listelemeli)

SELECT ISIM,SOYISIM,  

CASE  WHEN MAAS < 1800 THEN 'DÜSÜK'

WHEN MAAS BETWEEN   1800 AND 3000 THEN 'ORTA'

WHEN MAAS > 3000 THEN 'YÜKSEK'

      END AS MAAS_SEVIYESI

FROM PERSONEL ORDER BY MAAS_SEVIYESI

7-)not in demek and demek o yuzden 7.sorunun cevabı sıfırdır

SELECT ISIM,SOYISIM FROM PERSONEL WHERE SOYISIM is not  null or SOYISIM  not in ('Cesanne')

SELECT ISIM,SOYISIM FROM PERSONEL WHERE SOYISIM  in (null,'cesanne')

23.12.2015

1-)persoNEL TABLOSUNDAKİ PER_NO YU GONDERELIM BİZE YAŞINI DONDURSUN      (FUNCTİON)
CREATE FUNCTION

FN_PERNO

(

@perno int

)

RETURNS int

AS

BEGIN--başla

 

declare @sonuc int

set @sonuc=(select yas from PERSONEL where PER_NO=@perno)

RETURN @sonuc

END--bitir

GO

SURGUDADA ŞÖYLE ÇALIŞTIRIRIZ

select dbo.FN_PERNO(1)--1 NUMARALI KİŞİNİN YAŞINI 20 OLARAK VERİR

2-)tablo donduren functıon

CREATE FUNCTION TB_FN

()--parametre almadi

RETURNS

@tbl table--tablo donecek

(ad varchar(50))

AS

BEGIN

insert into @tbl(ad) select ISIM from PERSONEL where YAS>20--yaşı 20 den buyuk olanları tabloya yaz ve dondur

 

 --values('RAMAZAN')

RETURN

END

GO

çağırmak için ise tabloyu

select * from dbo.TB_FN() şeklinde olucak

--donen degerden koşul yapmak istersen select * from dbo.TB_FN() where ad='Mehmet' şeklinde yapabilirsin

3-)while dongusu assagıda örnek string olarak 123 gırdım ekrana 1 sonra 2 sonra 3 yazan functıonu yaz

4-)case(İF) kullanımını ogren çok örnek yap

  FONKSYONU RESIMDE GORDUGUMUZ GIBI OLUSTURABILIRIZ

TABLO DONDUREN FONKSYONUDA RESIMDEKI GIBI…

 

 

30.12.2015

1-)PROSEDÜR YAZMAK AŞŞAĞIDAKİ GİBİ

CREATE proc deneme(@param varchar (20))--deneme adında metod olusturur ve 1 tane parametre alır

as begin--başla

select @param as isim

end--bitir

çağırma işlemi aşağıdadır.

exec deneme 'RAMAZAN'--exex ile deneme metoduna parametre gonderırız ve çağırırız

2-)Aşşağıdaki kodu çalıştırıp ne yaptığını anlamaya çalışalım

create proc proc_say

(

/*Parametreler */

@metin varchar (20)

)

as begin

declare @sayac int

declare @harf char

set @sayac=1

create table #temp

(sira int,harf char(1))

while(@sayac<=LEN(@metin))

begin

set @harf=(select SUBSTRING(@metin,@sayac,1))

insert into #temp(sira,harf) values(@sayac,@harf)

set @sayac=@sayac+1

end

select *from #temp

drop table #temp

end

çağırma işlemi aşşağıda

exec proc_say ‘ramazan'

3-)--Kullanıcı elma,armut,kiraz giricek bana virgulleri kaldıracak sonra tabloya eklicek

create function fn_metinparcala

(

@metin varchar(100),@ayrac char(1)

)

returns @sonuc table(isim varchar(20))

begin

declare @bas int,@bit int

set  @bas=1

set @bit=(select charindex(@ayrac,@metin))

 

while @bas<LEN(@metin)+1 begin

if @bit=0

set @bit=LEN(@metin)+1

insert into @sonuc(isim) values(SUBSTRING(@metin,@bas,@bit-@bas))

set @bas=@bit+1

set @bit=CHARINDEX(@ayrac,@metin,@bas)

end

return

end

çağırma işlemi aşşağıda

select * from dbo.fn_metinparcala('elma,armut,kiraz',',')

4-)break pointli çalıştırma dubug buttonuna bas ve f11 ile gez

 

06.01.2016

1-) MSSQL - sıfıra bolme hatasını yapan fonksyonu yaz

create function fn_bolme(--fonksyonu olusturma

@bolunen int,

@bolen int

)

returns float

as begin

declare @sonuc float

if @bolen <>0 begin

set @sonuc=@bolunen/@bolen end

else begin set @sonuc=@bolunen end

return @sonuc

end

çağırma işlemi aşağıdadır

select dbo.fn_bolme(1,0)--fonksyonu çağırma işlemi

2-)3 tane parametre alıcan kelime(12),uzunluk(4),karakter(X)

ekranada XX12 yazıcak bu fonksyonu ve prosuduru yaz

 2021 Ocak 31 Pazar
 439