Skip to content

-- Notlar tamamen Escan Dönmez e aittir izinsiz kullanmayınız

License

Notifications You must be signed in to change notification settings

Escan-DNMZ/Sql-syntax

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 

Repository files navigation

Sql-syntax

Notlar tamamen Escan Dönmez e aittir izinsiz kullanmayınız

Relationships

1-One to Many
2-One to One
3-Many to Many

One to Many

Products                  |    Category
                          |
id  Name    Price  catid  |    id  name
1  rolex     2000  1      |     1  saat
2  mi 6       500         |     2  telefon
3  samsung s6 5000 2      |
 
-- Not: rolex bir saat olduğu için catid sayesinde onu saat ketgorisine alabildim yani category verisindeki saat yapısına onu bağladım temel olarak rolex artık bir saat yani 1 ürünü çoklu kategoriye bağladık

Many to Many

Products                  |    ProductCategory       |   Category
                          |                          |
id  Name    Price         |   productid categoryid   |    id  name
1  rolex     2000         |   1         1            |     1  saat
2  casio       500        |   1         3            |     2  telefon
3  samsung s6 5000        |   2         1            |     3  elektronik

-- Not: artık saat ve telefon bi yandan elektronik parçalarda yani samsung hem telefon hemde elektronik olarak geçiyor

One to One

Products                |    Product_Details
                        |
id  Name    Price       |    id  color  kg
1  rolex     2000       |     1  red    150gr
2  mi 6       500       |     2  black  100gr
3  samsung s6 5000      |     3  black  350gr
 
-- Notlar tamamen Escan Dönmez e aittir izinsiz kullanmayınız

Temel sql sorguları

Select - kayıt seçme

select * --bütün kolonlar bize gelsin diyoruz

select * from shopapp.products --burda sadece shopp daki products kolonunu alır

select Name from shopapp.products --products daki sadece name kolonunu seçtik

select Name as ProductName, price as fiyat from ShopApp.Product
-- üst tarafda Name kolonun un adını ProductName olarak değşitirdik ve price adını
-- fiyat olarak değiştirdik as kodu burda bize isim değiştirmede yaradı
-- Notlar tamamen Escan Dönmez e aittir izinsiz kullanmayınız

Where - Kayıt filtreleme

select * from ShopApp.Prdocut where Id = 1 -- bu bir sorgulamadır yani burda 
-- sadece Id 1 i almak istediğimizi belirttik

select * from ShopApp.Product Where Price > 2000 And 4000 -- fiyat 2000 den büyük
-- 2000 ve 4000 arası sayıları göster

select * from ShopApp.Product Where Name = 'samsung s6' --istersek sadece tek bir
-- alanı isteyebiliriz

-- Notlar tamamen Escan Dönmez e aittir izinsiz kullanmayınız

Where - Operatörleri

select * from ShopApp.Product Where Price Between 2000 and 4000
-- 2000 4000 arası bütün kayıtları getirir

select * from ShopApp.Product Where Category IN ('telefon','bilgisayar')
--bütün telefon ve bilgisayarları sıralar

select * from ShopApp.Product Where Name LIKE '%Samsung%'
-- verideki sadece içinde samsung adı geçen tüm verileri gösterir sonunda
-- s6 veya s7. olması farketmez hepsini getirir

-- Notlar tamamen Escan Dönmez e aittir izinsiz kullanmayınız

Order - Kayıt Sıralama

select * from ShopApp.Product order by Price --fiyata göre en düşükden en büyüğe
-- sıralar

select * from ShopApp.Product order by name DESC --azalandan artana sıralar

select * from ShopApp.Product order by Price ASC -- artandan azalana sıralar 

-- Notlar tamamen Escan Dönmez e aittir izinsiz kullanmayınız

Sql Fonksiyonları

-- min(), max(), count(), avg(), sum()

select min(price) from ShopApp.Product --minumum fiyat bilgisini bize. getirir 

select max(price) from ShopApp.Product --maximum fiyat biligisni bize getirir

select count(*) from ShopApp.Product --bize toplam kaç ürün olduğunu gösterir

select avg(price) from ShopApp.Product --bütün ürünlerin ortalamasını verdi

select sum(price) from ShopApp.Product --bütün ürünlerin toplamını verdi

-- Notlar tamamen Escan Dönmez e aittir izinsiz kullanmayınız
-- String fonksiyonlar

select length(name) from ShopApp.Product --name deki isimlerin karakterlerini gös
--terir

select right('escan',3) -- sağdan ücüncü karakteri alır

select lower(name) from ShopApp.Product --bütün karakterleri küçük yapar

select upper(name) from ShopApp.Product --bütün karakterleri büyütür

select name replace(name,' ','-') from ShopApp.Product --bütün boşlukları - yapar

select trim(name) from ShopApp.Product -- name deki boşlukları siler

-- Notlar tamamen Escan Dönmez e aittir izinsiz kullanmayınız

Group By

Screen Shot 2021-08-19 at 10 29 36

select distinct Category from shopapp.product -- tekrarlayan alanlar bize tek
-- alanda gelir

select category from shopapp.product group by category
-- aslında distinct la. aynı görevi görüyor aralarında pek bir fark yok

-- Notlar tamamen Escan Dönmez e aittir izinsiz kullanmayınız

Insert - Kayıt ekleme

select * from shopapp.product
INSERT INTO shopapp.product (Name,Price,ImageUrl,Category,Description)
VALUES ("samsung s10",2000,"1.jpg","telefon","süper telefon s7 gibi patlamıyor");
-- burda ilk önce tüm kolonları yazdırdık sonra Insert ile yeni bir alan ekledik
-- Values bölümünde üstteki ile aynı hizada değerleri girdik
-- Not: NN yani not null seçili alanları boş bırakamazsınız
 -- Notlar tamamen Escan Dönmez e aittir izinsiz kullanmayınız

Update - kayıt güncelleme

UPDATE shopapp.product
SET Name = 'samsung s7'
WHERE id = 1
-- Eğer where komutu ile id 1 i seçmez iseniz namedeki herşeyi samsung s7 yapar

SET SQL_SAFE_UPDATES = 0;
UPDATE shopapp.product
SET Price = Price + 1000
-- veritabanındaki tüm price lara 1000 ekler kodun.  başında çalıştırdığımız kod
-- aslında bir güvenlik önlemi normalde bu set kodunu yazmasaydık program bize
-- hata vericekdi çünkü böyle büyük bir değişikliği yanlışlıkla yapmak gerçekden
-- üzücü olurdu oyüzden en başta bu güvenlik önleyiciyi kapattık ve kodu yolladık

-- Notlar tamamen Escan Dönmez e aittir izinsiz kullanmayınız

Delete - kayıt silme

DELETE FROM shopapp.product --bütün veri tabanını siler

DELETE FROM shopapp.product WHERE Id = 1

DELETE FROM shopapp.product WHERE Price > 2000

DELETE FROM shopapp.product WHERE description is NUll --içi boş olan descripton
-- silinir

--gördüğünüz gibi kullanımı aşırı basit

-- Notlar tamamen Escan Dönmez e aittir izinsiz kullanmayınız

Sql veritabanı yönetimi

Diagram

Screen Shot 2021-08-19 at 10 29 59

Öncelikle modelleri öğrenelim mysql tarafında ev butonuna tıklayın ardından ikinci sıradaki model iconuna tıklayın

Screen Shot 2021-08-19 at 10 30 33

Model yazısındaki + işaretine tıklayıp bir model oluşturun

Screen Shot 2021-08-19 at 10 31 16

Ardından Add Diagram yazan yere tıklayın.

Screen Shot 2021-08-19 at 10 31 48

tablo işaretine bastık dan sonra boş bir yere tıklayın tebrikler ilk table oluşturdunuz.

Fiziksel bağlantıların yapılması

Screen Shot 2021-08-19 at 10 32 25

Burdaki 1:1 = One to One bunu dersin başında anlatmıştık bu çizgiler bunları temsil ediyor iki. tane table olsun biri film diğeri director bir director birden çok filmde bulunabilir buyüzden one to many çizgisini kullanacağız

Farkettiyseniz aynı One to one dan iki adet var bunlardan biri çizgili biri çizgisiz bunun anlamı ise bir film için yönetmen olması gerekiyorsa burdaki ilişki tipi düz çizgi olmalı bunu isterseniz internetten daha detaylı öğrenebilirsiniz

Screen Shot 2021-08-19 at 10 32 47

Veri tabanı şeması - Forward Engineer

En üst de bulunan "Database" tuşuna bastığımıza önümüze iki adet seçenek çıkıyor "reverse engineer" ve "Forward engineer" elimizde bir model yoksa reverse seçmelisiniz fakat biz önceki notumuzda bir model oluşturmuştuk o yüzden forward diyoruz connection bilgilerini tamamlıyoruz ileri diyoruz ileri diyoruz tekrar ileri diyoruz ve diagram ile yaptığımız tüm işlemlerin kodlarını bize gösteriyor sonra birdaha ileri diyoruz ve kendi localhostumuza geldiğimizde yaptığımız şema ve diagram gelmiş bulunuyor -- Notlar tamamen Escan Dönmez e aittir izinsiz kullanmayınız

Var olan Veri tabanı ile - Reverse Engineer

Model alanına geliyoruz ve en sondaki yani 3. ok iconuna tıklıyoruz ve en baştakine tıklıyoruz ileri diyoruz ileri diyoruz ve bize databaselerimi gösteriyor burda hangisini seçmek isterseniz önceki derslerimizde kullandığımız shopapp i seçiyorum ben tekrar ileri diyoruz ileri diyoruz ve modelimiz oluşturuluyor ve artık shopapp adında bir modelimiz var -- Notlar tamamen Escan Dönmez e aittir izinsiz kullanmayınız

Veri tabanındaki bilgilerin saklanması - generate scripts

üst tarafdan server ardından data export ve ordan istediğiniz database i seçiyorsunuz ve alt tarafdan Dump data only i seçiyoruz ki sadece dataları exportlayalım sağ üstten advanced options gelip en aşağıdaki complete -insert onaylıyoruz ve start export dediğimizde tüm scriptler indirilmiş oldu -- Notlar tamamen Escan Dönmez e aittir izinsiz kullanmayınız

Hazır veri tabanı kullanma - northwind

https://github.com/dalers/mywind Öncelikle database e buradan ulaşabilirsiniz

northwind.sql ve northwind-data.sql i sağ üstten Raw diyip çıkan sayfadan control+s diyerek kaydedin

ardından workbench e girip file open sql scripts e tıklayın bunu çalıştırdığınızda bütün tablolar geliyor -- Notlar tamamen Escan Dönmez e aittir izinsiz kullanmayınız

Birden fazla tabloda kayıt seçme

Screen Shot 2021-08-19 at 10 33 26

Inner join

select * from orders inner join customers --burda oreders ile customers ı 
-- inner joinledik
on order.customer_id = customers.id --burdada bir sorgu yaptık order daki 
-- customer_id ile customers daki id nin inner joinlerini aldık
-- Notlar tamamen Escan Dönmez e aittir izinsiz kullanmayınız

left join

select * from customers
left join orders --customers.id deki sadece kesişen bilgiler gelirken
on order.customer_id = customers.id --customer_id deki tüm bilgiler gelir
-- Notlar tamamen Escan Dönmez e aittir izinsiz kullanmayınız

right join

select * from orders right join employees
on employees.id = employee_id
-- Notlar tamamen Escan Dönmez e aittir izinsiz kullanmayınız

ikiden fazla tablo birleşimi

select * from orders inner join customers 

on order.customer_id = customers.id 

inner join order_details on order_details.order_id = order.id --order_details ın
-- order_id si ile order ın id sini birleştirdik önceden de customer_id ile 
-- customer ın id sini birleştirmiştik yani 2 adet birleştirme yapmış olduk
-- Notlar tamamen Escan Dönmez e aittir izinsiz kullanmayınız

Trigger (Sql tetikleme)

Bir Database imiz olsun CoreBlogDbText adında içerisinde Tbl1 ve Tbl2 adında iki adet tablomuz olsun Tbl1 de Id ve CategoryName olsun Tbl2 de ise Toplam adında int bir kolon Category arttıkca bizim toplamımızada +1 sayı ekliyicek bunu şu kodlar ile sağlayabilirsiniz

Create Trigger TestArttir
On Tbl1  //Nerde çalışıcak
After Insert //Insert edildikden sonra
As
Update Tbl2 Set Toplam=Toplam+1 //Tbl2 deki toplamın değerine bir ekle

Trigger Paremetreli kullanım (Sql)

Bu sefer Tbl1 tablomuza Puan adında bir kolon daha ekliyelim ve Tbl3 adında bir tablo daha oluşturalım içerisine Id,Yorum,Puan ve Kategori adında 4 adet kolon girelim sonrasında Tbl1 deki Kategori ile Tbl3 deki kategoriyi ilişkili hale getiriyoruz ardından Tbl3 e değerler giriyoruz

Id         Yorum        Puan       Kategori
1          Yorum1       7          1
2          Yorum2       3          3
3          Yorum3       8          3
4          Yorum4       2          2

Biz buradaki Puanları Tbl1 tablosundaki Puan lara eklemesini istiyoruz null bir değeri arttıramıyacağımızdan dolayı tüm puanları 0 olarak ayarlıyorum ve trigger ı aşağıdaki gibi ekliyoruz.

Create Trigger PuanArttir
On Tbl3
After Insert
As
Declare @p int, //Değişken tanımlıyoruz - Puan
Declare @k int //Kategori
Select @p=puan/*Tbl3 deki puan*/,@k=Kategori from inserted
Update Tbl1 Set Puan = Puan+@p Where Id = @k /*Eğer kategori uyuyorsa
Tbl1 deki Puana Tbl3 deki Puanı kadar ekle*/

//Anlamayanlar için
Id         Yorum        Puan       Kategori
1          Yorum1       7          1
2          Yorum2       3          3
3          Yorum3       8          3
4          Yorum4       2          2

/* eğer biz Yorum 5 yazıp 9 puan 3. kategori yaparsak artık
Tbl1 deki 3. kategorinin Puanı 3+8+9 yani 20 olur tüm kategori 3 e ait
Yorumların puanını ekler*/

Releases

No releases published

Packages

No packages published