SQL Server Notları ve Örnekleri

CourierC

Kıdemli Üye
16 Ağu 2010
2,655
0
C:\Windows
SQL Notları ve Örnekleri


–Çalışacağımız veri tabanını belirtmek için
USE Veritabanı_Adı

–Person adında veri tabanı oluşturma
CREATE DATABASE person

–Personel adında tablo oluştur tablo sütunları PERSONEL_ID,AD,SOYAD
CREATE TABLE PERSONEL
(
PERSONEL_ID İNT,
AD varchar(10),
SOYAD varchar(10)
)

–PERSONEL tablosuna BABA_AD sütunu ekle veri girişini zorunlu tut.
ALTER TABLE PERSONEL
ADD BABA_AD varchar(20) NOT NULL

–AD sütunun alabileceği karakter sayısını 15 yap, veri girişini zorunlu tut.
ALTER TABLE PERSONEL
ALTER COLUMN AD varchar(15) NOT NULL

–PERSONEL TABLOSUNU SİLME
DROP TABLE PERSONEL

–PERSONEL tablosundaki tüm alanları seçme
SELECT * FROM PERSONEL

–PERSONEL tablosundaki PERSONEL_ID ve AD alanlarını seçme
SELECT PERSONEL_ID, AD FROM PERSONEL

–PERSONEL tablosundaki AD ve SOYAD alanlarını birleştirme
SELECT AD+’ ‘+SOYAD FROM PERSONEL

–rehber tablosundaki ad ali olan tüm kayıtlar
SELECT * FROM rehber WHERE AD=’Ali’

–Artan sıralama ASC, Azalan sıralama DESC
SELECT * FROM rehber WHERE ad=”Tuncay” ORDER BY ad ASC

–Yeni kayıt girme
INSERT INTO PERSONEL(AD,SOYAD)
VALUES(‘Mustafa’,’KUM’)

–Soyadı KUM olanların adını Mustafa yap
UPDATE PERSONEL SET AD=’Mustafa’ WHERE SOYAD=’KUM’

–Soyadı KUM olan tüm kayıtları sil
DELETE FROM PERSONEL WHERE SOYAD=’KUM’

–Değişken tanımlama
DECLARE @ogr_no VarChar(10)
DECLARE @tckimlik_no int

–Tablo türünde değişken tanımlama
DECLARE @değişken_adı TABLE

–Değişkene değer atama yöntemleri
SET @değişken_adi=değer
SELECT @değişken_adı=değer
INSERT INTO @tablo_değişken SELECT adi,soyadi FROM person –(Tablo değişkenler değer atama)

–AD değişkeninin içeriğini PRINT ile gösterme
USE Deneme
GO
DECLARE @ad VARCHAR(10)
SELECT @ad=’Mustafa’
GO
PRINT @ad
GO

–Bir yığının sonunu belli etmek için GO komutu kullanılır.

–Notu 56 dan küçük olan öğrencileri listeleme
SELECT * FROM tablo2 WHERE nt2<=56

–Adı Mustafa olmayan kayıtları listeleme
SELECT * FRPM PERSONEL WHERE AD’Ali’

–tablo1′deki adı Er ile başlayan kayıtları listeleme
SELECT * FROM tablo1 WHERE ad LIKE ‘%Er%’

–Doğum tarihi 1970 den önce olan ve maaşı 700-1200 arasında olan personeli listeleme
SELECT * FROM person WHERE dogum tarihi=700 AND Maas={01/01/1970} AND cinsiyet=Erkek
OR dogum_tarih>={01/01/1975} AND cinsiyet=Kadın

–Person tablosunda Adı Mustafa olmayanları listeleme
SELECT * FROM Person WHERE NOT AD=’Mustafa’

–Ogr_Notlar Tablosunda not ortalamasını hesaplama
SELECT (nt1+nt2+nt3)/3 FROM Ogr_Notlar

–Şimdiki tarih ve saat değerini gösterme
SELECT GETDATE()

–İki tarih arasındaki gün sayısını bulma
SELECT DATEDIFF(dd,’04,04,1974′,’02,10,2007′)

–ASCII kodu verilen harfi görüntüleme
SELECT CHAR(65) –A Harfini verir
SELECT ASCII(A) –65 Rakamını verir(int tipinde)

–Bir metin içindeki metin parçasını istenilen konumdan itibaren arama CHARINDEX()
SELECT CHARINDEX(‘bu’,@soyad,1)

–Metnin baş taraftan itibaren istenilen sayıdaki harfini alma
SELECT LEFT (@ad,2)

–Metnin uzunluğunu veren fonksiyon
SELECT LEN(@Soyad)

–Öğrencinin not ortalamasına göre 85 üzerinde olanlara PEKİYİ , 85 den küçük olanlara İYİ yazdıran kod
DECLARE @enbuyuk int
SELECT @enbuyuk=MAX(ort) FROM tablo2
IF (@enbuyuk>=84)
BEGIN
PRINT ‘DURUMUNUZ PEKİYİ’
END
ELSE IF (@enbuyuk65

–Numaraya göre her öğrencinin almış olduğu notları listeleme
SELECT ogrno,AVG(ort) FROM tablo2 GROUP BY ogrno

–Numara ve Bölüm adına göre ögrenci not ortalamalarını listeleme
SELECT ogrno,bolum,MAX(ort) FROM tablo2 GROUP BY ogrno,bolum

–En yüksek not ortalamasını bulma
SELECT MAX(not_ortalama) FROM Ogr_Notlar

–En düşük not ortalamasını bulma
SELECT MİN(not_ortalama) FROM Ogr_Notlar

–Adı Mustafa, soyadı Kum olan kişinin maaşına % 20 zam yapma
declare @no int
select @no = sicil_no from personel
where adi = ‘Mustafa’ and soyadi = ‘Kum’
UPDATE maaslar SET maas = maas * 0.20 + maas where sicil_no = @no

–Maası en yüksek olan personelin adresini halkalı-istanbul olarak değiştirme
declare @enyuksek int
declare @sicil_no int
SELECT @enyuksek = max(maas) from maaslar
SELECT @sicil_no = sicil_no from maaslar WHERE maas = @enyuksek
UPDATE personel SET adres = ‘halkalı-istanbul’ where sicil_no = @sicil_no

–hangi veri tabanı üzerinde işlem yapılacağı belirtilir
USE Person

–Personel adında tablo oluşturma, sütunlar;Personel_ID, AD, SOYAD
CREATE TABLE PERSONEL(PERSONEL_ID int, AD varchar(10), SOYAD varchar(10))

–Personel Yakın Adlı Tablo Oluştur, Sütunları:pERSONEL_ID, YAKIN_ID, YAKIN_AD, YAKIN_SOYAD
CREATE TABLE PERSONELYAKIN(PERSONEL_ID INT, YAKIN_ID INT, YAKIN_AD varchar(10), YAKIN_SOYAD varchar(10))

–rehber adında tablo oluşturma
create table rehber(ad varchar(20), soyad varchar(20),telefon varchar(11))

–Personel tablosuna BABA_AD adlı sütun ekleme
ALTER TABLE PERSONEL
ADD BABA_AD varchar(20) NOT null — veri girişi zorunlu
–rehber tablosuna adres ekleme
ALTER TABLE rehber add adres varchar(50)

– AD sütununun karakter sayısı 15 olarak değiştirildi, veri girişi zorunlu yapıldı
ALTER TABLE PERSONEL
ALTER COLUMN AD varchar(15) not null

–Personel Tablosunu silme
DROP TABLE PERSONEL

–Personel tablosundaku tüm alanları seçme
select * from PERSONEL

–Personel tablosundaki PERSONEL_ID, AD alanlarını seçme
select PERSONEL_ID, AD from PERSONEL

–Personel tablosundaki AD,SOYAD alanlarını tek sütun gibi gösterme
select AD+’ ‘+SOYAD from PERSONEL

–rehber tablosundaki ad bilgilerinin elde edilmesini sağlar
select ad from rehber

–mustafa adındaki tüm kayıtları göster
select * from rehber where ad=’mustafa’

–ad alanına göre artan seçme ad aynı ise soyada göre artan
select * from rehber order by ad,soyad

–Personel tablosuna yeni kayıt ekleme
insert into PERSONEL(PERSONEL_ID,AD,SOYAD,BABA_AD)
values(11,’azmi’,’akbaş’,’ZİYA’)

–Soyadı Akbaş olan kayıtların adını nizmi yapma(güncelleme)
update PERSONEL SET AD=’nazmi’ where SOYAD=’AKBAŞ’

–soyadı akbaş olanları silme
delete from PERSONEL where SOYAD=’akbaş’

–mustafanın telefon numarasını 0536 yap
update rehber set telefon =’0536′ where ad=’mustafa’





–Personel tablosunda ada göre artan sıralama
select * from PERSONEL order by AD ASC
–Personel tablosunda ada göre azalan sıralama
select * from PERSONEL order by AD DESC

–Değişken tanımlama
declare @ogr_no varchar(10)
declare @tckimlik_no int

–Tek declare ile birden fazla degişken tanımlama
declare @ogr_no varchar(10), @tc_kimlik int

–tablo türünde değişken tanımlama
declare @dagişken_adi table

–Set ile değişkene değer atama
set @degisken_adi = deger

–select ile değer atama
select @degisken_adi =deger

–Tablo degişkenlere insert into ile degir atama
insert into @tablo_degisken select adi,soyadi from person

–Print
use deneme
go
declare @ad varchar(10)
select @ad=’mustafa’
GO
print @ad
go

–adı ali olmayanları listeleme
select * from personel where’ali’

–tablo 2 de notu 56 dan küçük olanlar
select * from tablo2 where nt2>=56

–baş harfi er olanlar
select * from tablo1 where ad LIKE%er%

–dogum tarihi 1970 önce maaşı 700-1200 arasında
select * from person
where dogum_tarihgi=700 and maas<=1200

–adı ali olmayanları listeler
select * from sınıf
where not ad=’ali’

–or oparatörü
select * from ogrenci where bolum=’bilgisayar’ or bolum=’elektrik’

–not ortalaması hesaplar
select(n1+n2+n3)/3 from ogr_notlar

–nt1 sütunun not toplamını hesaplama
select sum(nt1) from ogr_notlar

–maası 500 olan personel maasları toplamı
select sum(maas) from person where maas55
GO

–EXEC Komutu
EXEC UNotlar
Stored Procedure çalıştırır.

–Ortalamaya göre sonuç veren Stored Procedure
CREATE PROCEDURE UHesapla
@ort int
AS
IF @ort>44 PRINT ‘Başarılı’
IF @ort<45 PRINT ‘Başarısız’
GO

–Adlarının İçinde “a” harfi geçen ögrenvcileri gösteren Stored Procedure
CREATE PROCEDURE Ogr_Ara (@ara VARCHAR(10)=NULL )
AS
IF @ara IS NOT NULL
SELECT * FROM Sinif
WHERE Ad LIKE ‘%’+@ara+’%’
GO

–İki sayıyı Stored Procedure ile toplama
CREATE PROC UTopla(
@s1 int,
@s2 int,
@tpl int OUTPUT
)
AS
SELECT @tpl=@s1+@s2
GO
DECLARE @sayi1 int
DECLARE @sayi2 int
DECLARE @toplam int
SELECT @sayi1=9
SELECT @sayi2=8
SELECT @toplam=NULL
EXEC UTopla @sayi1,@sayi2,@toplam OUTPUT

–Stored Procedure Uygulama örneği
–Çalışma saati ve saat ücreti verildiğinde alacağı günlük yevmiye tutarını gösteren Stored procedure
CREATE PROC UYevmiyeHesap(
@CSaat smallint,
@SUcret int,
@Yevmiye float Output
)
–Çalışma saati 8 saat ve 8 saaten az ise alacagı yevmiye çalışma saati ve saat ücreti çarpımı ile bulunacaktır
AS
IF (@CSaat8)
BEGIN
SELECT @Yevmiye=(@CSaat*@SUcret)+((@CSaat*@SUcret)*0.05)
END
GO

–16 ve 17 yaşındaki öğrencileri IN deyimi ile listeleme
SELECT Ad,Soyad,Yas
From Sinif
WHERE yas IN(16,17)

–16 yaşında olmayan öğrencileri IN deyimi ile listeleme
SELECT Ad,Soyad,Yas
From Sinif
WHERE yas NOT IN(16)

–Yaşı 18 olan ögrenciyi bulma (iç içe Select)
SELECT Ad,Soyad,Yas
FROM Sinif
WHERE Yas = ( SELECT Yas
FROM Sinif
WHERE Yas=18
)

–Ad, Soyad ve ortalama yaşı veren sorgu (iç içe Select)
SELECT Ad,Soyad,Yas,Ortalama=(
SELECT AVG(Yas)
FROM Sinif
)
FROM Sinif

–Yaşı 18 den küçük olanları listeleme (İç içe Select)
SELECT Ad,Soyad,Yas
FROM Sinif
WHERE Yas IN(
SELECT Yas FROM Sinif Where Yas 16

–Yaşları aynı olan öğrencileri listeleme (Türetilmiş Tablolar)
SELECT * FROM Sinif
SELECT MAX(grup.adet)
FROM(SELECT YAS, COUNT (*) as adet
FROM Sinif
GROUP BY yas
)grup

– PERSONEL ve PERSONEL YAKIN Tablolarını kullanarak PERSONEL tablosundaki personellerden en az bir yakını olanları bulma
SELECT PERSONEL_ID, PERSONEL_AD, PERSONEL_SOYAD
FROM PERSONEL
WHERE EXISTS (
SELECT *
FROM PERSONELYAKIN
WHERE PERSONELYAKIN.YAKIN_ID=PERSONEL.PERSONEL_ID
)

–Hiç yakını olamayan personeli listeleme
SELECT PERSONEL_ID,PERSONEL_AD,PERSONEL_SOYAD
FROM PERSONEL
WHERE NOT EXISTS (
SELECT *
FROM PERSONELYAKIN
WHERE PERSONELYAKIN.YAKIN_ID=PERSONEL.PERSONEL_ID
)

–Kitap_ID alanları eşleşecek şekilde Kitap_Ad ve Kitap_Yayınevi alanları için INNER JOIN yöntemini uygulama
SELECT Kitap_Ad, Kitap_Yayınevi
From tablo_Kitap INNER JOIN tablo_KitapBilgi
ON tablo_Kitap.Kitap_Id=tablo_KitapBilgi.Kitap_Id

–Birinci Tablodaki kayıtlara göre ikinci tablodaki ilişkili kayıtları gösterecek OUTER JOIN yöntemi
SELECT tablo_Kitap.*, tablo_KitapBilgi.*
FROM tablo _Kitap LEFT OUTER JOIN tablo_KitapBilgi
On tablo_Kitap.Kitap_Id= tablo_KitapBilgi.Kitap_Id

–Sayfa sayısı 450 ve 550 olan kitapları listeleyen sorgu
SELECT *
FROM tablo_Kitap
WHERE Kitap_Sayfa IN(450,550)
–Sayfa sayısı 310 ve 330 olmayan kitapları listeleyen sorgu
SELECT *
FROM tablo_Kitap
WHERE Kitap_Sayfa NOT IN(310,330)

–tablo_Kitap tablosundan kitap_Id,Kitap_Ad ve Kitap_Yazar alanlarını seçerek sayfa sayısı 450 den büyük olanları gösteren iç içe sorgu
SELECT Kitap_Id,Kitap_Ad,Kitap_Yazar
FROM tablo_Kitap
WHERE Kitap_Sayfa IN(
SELECT Kitap_sayfa
FROM tablo_Kitap
WHERE(Kitap_Sayfa>450)
)

–tablo_Kitap tablosunda Kitap_Id’si 130′dan büyük olanları listeleyen türetilmiş tablo sorgusu
SELECT Sayfa.*
FROM(
SELECT Kitap_Id,Kitap_Sayfa
FROM tablo_Kitap
)
Sayfa(Kitap_Id,Kitap_Sayfa)
Where Sayf****itap_Id>130

–Kitap Bilgisi Olmayan Kitapları Listeleyen sorgu (not exists kullanımı)
SELECT Kitap_Id,Kitap_Ad,Kitap_Yazar
FROM tablo_Kitap
WHERE NOT EXITS(
SELECT *
FROM tablo_KitapBilgi
WHERE tablo_Kitapbilgi.Kitap_Id=tablo_Kitap.Kitap_Id
)

–Fiyatı 20 Lira altına %10, üstünde olan kitaplara %5 zam yapan imleç programlayınız (imleç)
DECLARE @fiyat int
DECLARE @fiyatlar CURSOR
SET @fiyatlar=CURSOR FOR
SELECT Kitap_Fiyat FROM Kitaplar
OPEN @fiyatlar
FETCH NEXT FROM @fiyatlar INTO @fiyat
SELECT Kitap_Fiyat From Kitaplar
WHILE(@@FETCH_STATUS=0)
BEGIN
IF @fiyat<20
UPDATE Kitaplar SET Kitap_Fiyat=(@fiyat+(@fiyat*0.1))
WHERE CURRENT OF @fiyatlar
ELSE
UPDATE Kitaplar SET Kitap_Fiyat=(@fiyat+(@fiyat* .05))
WHERE CURRENT OF @fiyatlar
FETCH NEXT FROM @fiyatlar INTO @fiyat
END
SELECT Kitap_Fiyat FROM Kitaplar
–İmleci kapatma
CLOSE @fiyatlar
DEALLOCATE @fiyatlar
 

Mustafa Kum

Yeni üye
4 Tem 2013
1
0
Bu notları nerden buldun :D
Bunlar benim lise de hazırladığım notlar, isimler bile aynı Mustafa Kum :D :D Azmi, Tuncay herşey noktasına kadar aynı :D
Neyse teşekkür ettim benim hazırladığım notları paylaştığın için ;)
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.