1. Veri Tanımlama Dili (DDL - Create, Alter, Drop)

Soru: ‘okul’ adında bir veritabanı oluşturan sorguyu yazınız.

Create Database okul

Soru: ‘ogrenciler’ adında; id, isim, soyisim, doğum tarihi, telefon, email ve adres sütunlarından oluşan bir tablo oluşturun.

CREATE TABLE ogrenciler
(
ogrenci_id INT PRIMARY KEY,
isim VARCHAR(50) NOT NULL,
soyisim VARCHAR(50) NOT NULL,
dogum_tarihi DATE,
telefon VARCHAR(15),
email VARCHAR(100),
adres TEXT,
);

Soru: ‘ogrenciler’ tablosuna ‘bolum’ adında, 50 karakterlik bir kolon ekleyin.

Alter Table ogrenciler
Add bolum varchar(50)

Soru: ‘ogrenciler’ tablosundan ‘telefon’ kolonunu silin.

ALTER TABLE ogrenciler
DROP COLUMN telefon;

Soru: ‘ogrenciler’ tablosundaki ‘telefon’ kolonunun veri tipini VARCHAR(50) olarak değiştirin.

ALTER TABLE ogrenciler
Alter Column telefon VARCHAR(50);

Soru: ‘tbl_ogrenciler’ tablosundaki ‘dogum_tarihi’ kolonunun adını ‘dogum_gunu’ olarak değiştirin.

EXEC sp_rename 'tbl_ogrenciler.dogum_tarihi', 'dogum_gunu', 'COLUMN';

Soru: ‘tbl_ogrenciler’ tablosunun ismini ‘ogrenciler’ olarak değiştirin.

EXEC sp_rename 'tbl_ogrenciler', 'ogrenciler'

Soru: Oluşturulan bir veritabanını veya tabloyu silme komutları nelerdir?

DROP DATABASE veritabani_adi;
DROP TABLE tablo_adi;

2. Veri Düzenleme Dili (DML - Insert, Update, Delete)

Soru: Personeller tablosuna (id, ad, soyad, tarih, tel, email) yeni bir kayıt ekleyin.

insert into Personeller 
(Pers_id, pers_ad, pers_soyad, pers_dogumtarihi, pers_telefon, pers_email) 
Values (1, 'aslı', 'aslan', '03.25.2000','05555553','aslıaslan@gmail.com')

Soru: Personeller tablosundan adı ‘aslı’ olan kaydı silin.

Delete from Personeller where pers_ad='aslı'

Soru: Adı ‘veli’ olan personelin adını ‘cancan’ olarak güncelleyin.

Update Personeller 
Set pers_ad='cancan'
Where pers_ad='veli'

Soru: Ürün fiyatı 1000 TL’nin altında olanların fiyatını 1500 TL yapın.

Update tbl_urunler
set urun_fiyat=1500
Where urun_fiyat<1000

Soru: Ürün fiyatı 5000 olan ürünlerin fiyatını 500 TL artırın.

Update tbl_urunler
set urun_fiyat+=500
Where urun_fiyat=5000

3. Veri Sorgulama Dili (DQL - Select, Where, Like)

Soru: Müşteriler tablosundaki şehir verilerini tekrarsız listele.

Select distinct(Sehir) From Tbl_Musteriler

Soru: İstanbul’da yaşayan müşterileri listeleyelim.

Select * From Tbl_musteriler
Where sehir='İstanbul'

Soru: Ürün adı ‘B’ ile başlayan ürünleri listeleyelim.

Select * from tbl_urunler
Where urun_adi like 'b%'

Soru: Ürün adı ‘n’ harfi ile biten ürünleri listeleyelim.

Select * from tbl_urunler
Where urun_adi like '%n'

Soru: Adı içinde ‘a’ harfi geçmeyen ürünleri listeleyelim.

Select * from tbl_urunler
Where urun_adi not like '%a%'

Soru: Adana, Bursa veya Ankara’daki müşterileri In komutuyla getirin.

Select * From Tbl_Musteriler
Where Sehir In ('Adana', 'Bursa', 'Ankara')

4. Gruplandırma ve Sıralama (Group By, Having, Order By)

Soru: Şehirlere göre gruplandırma yapıp her şehirde kaç müşteri olduğunu bulalım.

Select sehir, count (*) AS 'Sayı' From Tbl_Musteriler
Group By Sehir

Soru: Ankara hariç diğer şehirleri gruplayan sorguyu yazalım.

Select sehir, Count(*) From Tbl_Musteriler
Group By Sehir Having Sehir!='ankara'

Soru: Kitapları stok sayısına göre büyükten küçüğe sıralayalım.

Select * from Tbl_Kitaplar Order By Stok Desc

5. Matematiksel ve Metinsel Fonksiyonlar

Soru: Ürünler tablosundaki toplam stok miktarını bulalım.

Select Sum(stok_miktari) As 'Toplam' from tbl_urunler

Soru: Ürünlerin ortalama stok sayısını hesaplayalım.

Select Avg(stok_miktari) From tbl_urunler

Soru: Ürün adlarını büyük harfe çevirerek listeleyelim.

Select Upper(urun_adi) from tbl_urunler

Soru: Personel isimlerini tersten yazdıran sorguyu yazınız.

Select reverse(ad) from tbl_personeller

Soru: 81 sayısının karekökünü hesaplayan sorguyu yazınız.

Select Sqrt(81)

6. Birleştirmeler (JOIN) ve Alt Sorgular

Soru: Personeller ve Departman tablolarını ortak ID üzerinden birleştirelim (Inner Join).

Select * from tbl_personeller
inner join tbl_departman
on tbl_personeller.departman_id=tbl_departman.departman_id

Soru: Departmanı ‘İnsan Kaynakları’ olan personelleri Alt Sorgu kullanarak listeleyelim.

Select * from tbl_personeller
Where departman_id=(Select departman_id From tbl_departman
where Departman_adi='İnsan Kaynakları')

7. T-SQL Yapıları (Değişkenler, IF-ELSE, WHILE)

Soru: Değişken tanımlayarak iki sayıyı toplayan T-SQL kodunu yazın.

Declare @sayi1 int, @sayi2 int, @sonuc int
Set @sayi1=16
Set @sayi2=57
Set @sonuc=@sayi1+@sayi2
Select @sonuc AS 'Toplam'

Soru: Ürün sayısı 16’dan büyükse ‘Fazla’, değilse ‘Az’ yazdıran IF-ELSE yapısını kurun.

If (select count (*) from tbl_urunler)>16
    Print 'Toplam Kayıt Sayısı 16 dan Fazla'
Else
    Print 'Toplam Kayıt Sayısı 16 dan Az'

Soru: 1’den 10’a kadar olan sayıları ekrana yazdıran WHILE döngüsünü yazın.

Declare @sayac int = 1
While (@sayac<=10)
Begin
    Print @sayac
    Set @sayac+=1
End

Soru: ‘SQL Öğreniyorum’ metnini harf harf alt alta yazdıran döngüyü yazın.

DECLARE @metin NVARCHAR(100) = 'SQL Öğreniyorum';
DECLARE @uzunluk INT = LEN(@metin);
DECLARE @i INT = 1;
WHILE (@i <= @uzunluk)
BEGIN
    PRINT SUBSTRING(@metin, @i, 1);
    SET @i += 1;
END;