SQL (Structured Query Language), veritabanı yönetim sistemlerinde (DBMS) kullanılan bir programlama dilidir. SQL, veritabanı yönetimi için kullanılan DDL (Data Definition Language) ve DML (Data Manipulation Language) olmak üzere iki temel komut kümesine sahiptir.
DDL ve DML Nedir ?
DDL (Data Definition Language), veritabanı tasarımını ve yapısını tanımlayan komutlardır. DDL komutları, veritabanı nesneleri (tablo, görünüm, indeks vb.) oluşturmak, değiştirmek veya silmek için kullanılır. DDL komutları, veritabanının yapısal bölümünü tanımlayan komutlardır ve verileri etkilemezler. DDL komutlarının en sık kullanılanları şunlardır:
- CREATE: Yeni bir veritabanı nesnesi (tablo, görünüm, indeks vb.) oluşturmak için kullanılır.
- ALTER: Mevcut bir veritabanı nesnesini değiştirmek için kullanılır.
- DROP: Mevcut bir veritabanı nesnesini silmek için kullanılır.
- TRUNCATE: Tablodaki tüm verileri silmek için kullanılır.
DML (Data Manipulation Language), verileri sorgulama, ekleme, güncelleme veya silme işlemleri için kullanılan komutlardır. DML komutları, veritabanındaki verileri etkileyen komutlardır. DML komutları, verilerin işlendiği kısmı tanımlayan komutlardır ve veritabanının yapısını etkilemezler. DML komutlarının en sık kullanılanları şunlardır:
- SELECT: Veritabanından verileri sorgulamak için kullanılır.
- INSERT: Veritabanına yeni veriler eklemek için kullanılır.
- UPDATE: Veritabanındaki var olan verileri güncellemek için kullanılır.
- DELETE: Veritabanındaki verileri silmek için kullanılır.
DDL ve DML komutları arasındaki fark şudur: DDL komutları, veritabanının yapısal kısmını tanımlayan ve değiştiren komutlardır. DML komutları ise veritabanının işlemsel kısmını tanımlayan ve verileri sorgulama, ekleme, güncelleme veya silme işlemleri için kullanılan komutlardır. İki komut kümesi birbirinden bağımsızdır ve her biri farklı amaçlar için kullanılır.
Örneğin, bir veritabanı tasarımı yaparken, öncelikle DDL komutları kullanarak tabloları, indeksleri ve diğer veritabanı nesnelerini oluştururuz. Daha sonra, DML komutları kullanarak tablolara veri ekler, günceller veya silersiniz.
DML KOMUTLARI
SELECT
Select * from Tbl_Personel
Select * from Tbl_Personel where PersonelMeslek='Öğretmen'
Select Personelad,personelsoyad from Tbl_Personel
Where Kullanımı
Select personelad from Tbl_Personel where personelsehir='Ankara' and personeldurum='0'
Select personelad from Tbl_Personel where personelsehir='Ankara' or personeldurum='1'
- String ifadeler sorguya yazılırken SQL de ‘ ’ işareti kullanılır. ” ” da hata verir. Sayısal aramalarda tırnak kullanılmasa da olur.
Select personelad from Tbl_Personel where personelmaas>='3200'
Sorguda NOT Kullanımı
Select personelad from Tbl_Personel where personelsehir != 'Ankara'
Select personelad from Tbl_Personel where NOT personelsehir = 'Ankara'
- Her iki şekilde de kullanılır.
Select as kullanımı
Select Name as ProductName, Price as Fiyat From Products
- Products tablosundan Name ve price alanlarını getir.Name yerine ProductName yazarak Price yerine Fiyat yazarak getir.
INSERT
Insert into tablo_adı (sütunları) values (parametreler)
- Sütunlar kısmında NotNUll olarak tanımladığımız alanları kesinlikle verip veri girişi yapmamız lazım.
Insert into Products(Name,Price,Stock,CategoryId) values('HP',7500,12,2)
Delete
Delete from tbl_personel where personelid=@p1
Update
UPDATE Customers SET Name=’Sadık’ , JobId=2 WHERE Id=1
Update Products SET Name='Samsung S7',Price=8600 Where Id=1
Update Products SET Price = Price+10 (Tüm ürünlere 10 TL zam.)
Hazır SQL Fonksiyonları
COUNT (TOPLAM KAYIT SAYISI)
Select Count(*) From Tbl_Personel
Select Count(*) From Tbl_Personel Where Personeldurum=1
Select Count(distinct(Name)) From Products
- Distinct : Tekrarsız sayma yapmak için.
Not : Eğer kolonda null değer varsa Count methodu onu saymaz.
AVG (ORTALAM)
Select Avg(personelmaas) From Tbl_Personel
SUM(TOPLAM)
Select Sum(personelmaas) From Tbl_Personel
Select Sum(Price * Stock) From Poducts
- Stok miktarınıda dikkate alarak toplama yapar.
Min-Max
Select Min(personelmaas) From Tbl_Personel
Select Max(personelmaas) From Tbl_Personel
Group By (Gruplandırma)
select PersonelSehir,count(*) from tbl_personel group by personelsehir
Mesleklerim ortalama maaşı
select Personelmeslek,avg(personelmaas) from tbl_personel group by personelmeslek
Where Operatörler
Between (Arasında)
- Aralıklı sorgulama yapmak için kullanılır.
Select * From Tbl_Personel Where Price Between 1500 And 4500
Select * From Tbl_Personel Where Id Between 1 And 5
Not operatörü ile de kullanılır.
Select * From Tbl_Personel Where Price Not Between 1500 And 4500
Select * From Tbl_Personel Where Id Not Between 1 And 5
In (De Kileri Getir)
- Bu operatör ile bir kolon içinde yer alan verilerin istediğimiz veriler olup olmadığını karşılaştırma yaparak kontrol etmesini sağlarız.
Select * From Products Where Category IN (‘Telefon’ , ‘Bilgisayar’)
Select * From Personel Where Id IN (1 , 2)
Not operatörü ile de kullanılır.
Select * From Products Where Category Not IN (‘Telefon’ , ‘Bilgisayar’)
Like (İçeriyor mu ?)
- Verimizde istediğimiz karekter geçiyor mu ? Bunun için LIKE kullanılır.
‘%Samsung% ’ : Başında ve sonunda ne olduğu önemli değil. İçinde ‘Samsung’ kelimesi olanı seç demek.
‘Samsung% ’ : Sonunda ne olduğu önemli değil. Başında ‘Samsung’ kelimesi olanları getir.
‘%Samsung ’ : Başında ne olduğu önemli değil sonunda ‘Samsung’ kelimesi olanları getir.
‘_a% ’ : İlk karakteri önemli değil 2. harfi a olanları getir.
‘%a_ ’ : Son karakteri önemli değil sondan 1. harfi a olanları getir.
‘S_m% ’ : 2. Karakteri önemli değil. 1. harfi ‘S’ 2. harfi ‘m’ olanları getir.
- NOT : Büyük küçük harf duyarlılığı yok.
Select * from Products Where Name LIKE ‘%Samsung% ’
Select * from Products Where Name LIKE ‘Samsung% ’
Select * from Products Where Name LIKE ‘%Samsung ’
Select * from Products Where Name LIKE ‘_a% ’
Select * from Products Where Name LIKE ‘%a_ ’
Select * from Products Where Name LIKE ‘S_m% ’
NOT ile de kullanılabilirler
Select * from Products Where Name NOT LIKE ‘Samsung% ’
Select * from Products Where Name NOT LIKE ‘%Samsung ’
Select * from Products Where Name NOT LIKE ‘_a% ’
2 Operatörle Birlikte Kullanım
Select * from Products Where Name LIKE ‘%Samsung% ’ AND Price<6000
Select * From Products Where Price Between 1500 And 4500 AND Name LIKE ‘%Samsung% ’
Select * From Products Where Category Not IN (‘Telefon’ , ‘Bilgisayar’) AND Price<6000
Order By (Koşullu Sıralama)
Select * from Products Order By Price
- Default olarak azdan çoğa sıralar. Artan sıralama.
Select * from Products Order By Price Desc
- Azalana göre sıralar.
Select * from Products Order By Price Asc
- Artan sıralama yapar.
Select * from Products Order By Price Asc Limit 1
Select * from Products Order By Price Desc Limit 1
- Limit 1 ile gelen sıralanmış verinin sadece ilk verisi gelir.
SQL String Methodlar
SQL sorgularında string fonksiyonları da mevcuttur. SQL tabanlı databaselerde SQL sorgu dili ortak olsada bu fonksiyonların kullanımında databaselere göre değişiklikler olabilir.
Buradan ihtiyacına göre seçip kullanabilirsin.
Group By
- Group by komutu tablodaki verileri istenilen bir veya birden çok alana göre gruplandırmak için kullanır.
Select Category , Count(*) as Adet From Products Group By Category
Select Category , Avg(Price) as Adet From Products Group By Category Where Price > 1000
Select Category , Sum(Price) as Adet From Products Group By Category
Select Category , Count(*) as Adet From Products Group By Category Having Count(*) > 1
- Grubu ilgilendiren filtreleme işlemlerinde Having anahtar kelimesi kullanılır.
Select City , Count(*) as Miktar From Customers Group By City
Inner Join Kullanımı
select * from orders inner join customers on orders.customer_id=customers.id
- Koşul için where yerine on kullanılır.
- Biraz daha anlaşılır ve kullanışlı hali aşağıdaki gibi olur.
Select orders.id,customers.first_name,orders.order_date from orders inner join customers on orders.customer_id=customers.id
- Tablodaki tüm kolonları almak yerine ihtiyaç duyduklarımızı aldık.
select o.id, c.first_name, o.order_date from orders o inner join customers c on orders.customer_id=customers.id
- Orders ve customers anahtar kelimelerini o ve c olacak şekilde kısalttık.
select orders.id as orderId,products.product_name,customers.first_name,orders.order_date from orders
inner join customers on orders.customer_id=customers.id
inner join order_details on orders.id=order_details.order_id
inner join products on order_details.product_id=products.id
- İkiden fazla tablo birleşimi
Left Join
select customers.first_name,orders.id as orderId from customers
left join orders on customers.id=orders.customer_id
where orders.id is null
order by first_name
- Solundaki tablodan gelen bütün verileri alırken sağındaki tablodan sadece kesişen verileri alır. Sisteme kayıtlı olan ama hiç sipariş vermemiş kullanıcıları filtrelemek için kullanılabilir. Yukarıdaki örnek bunu temsil etmektedir.
Right Join
- Left join kullanımının tam tersidir.
Yorumlar
Henüz yorum yapılmamış. İlk yorumu siz yapın!