Konuyu Oyla:
  • Derecelendirme: 5/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Pratik MySQL Kullanım Örnekleri
#11
Merhaba

Güzel paylaşımlarınız için teşekkür ederim.
Cevapla
#12
(27-08-2016, Saat: 11:51)vkamadan Adlı Kullanıcıdan Alıntı: Bu makalede belki de pek bilinmeyen ancak hayatı kolaylaştıran bazı kullanım şekillerine örnek vermek istiyorum.

ON DUPLICATE KEY UPDATE 
Bu deyim INSERT INTO ile birlikte kullanılır, amacı INSERT edilen kaydın ilgili tabloda DUPLICATE KEY hatasına sebep olması durumunda yani aynı KEY değerine sahip bir kayda denk gelmesi durumunda INSERT işlemi yerine mevcut kaydı güncellemesidir.

Örneğin parametreleri dikey olarak tuttuğumuz bir tablomuz olsun , programımızda parametreleri kaydedip güncellerken önce ilgili parametre var mı yoksa insert varsa update kontrolü yapmak yerine tek komutta işi bitirebilirsiniz.

Örnek tablomuz ;

CREATE TABLE `pbs_param` (
 `param_name` varchar(20) NOT NULL DEFAULT '',
 `value` text,
 PRIMARY KEY (`param_name`)
);

Görüldüğü gibi tablomuzda "param_name" PK olarak tanımlı ,  aşağıda ki SQL ile tablomuza "varsayilan_dil" isimli bir parametreyi ekleyeceğiz varsa da güncelleyeceğiz.

INSERT INTO pbs_param (param_name,value) VALUES ("varsayilan_dil" , "tr") ON DUPLICATE KEY UPDATE value="tr" ;

bu cümle "varsayilan_dil" isimli bir parametre yoksa ;

INSERT INTO pbs_param (param_name,value) VALUES ("varsayilan_dil" , "tr") ;

eğer "varsayilan_dil" isimli bir parametre varsa da aşağıdaki gibi çalışma sağlayacaktır.

UPDATE pbs_param SET value="tr" WHERE param_name="varsayilan_dil";

ON DUPLICATE KEY UPDATE den sonra güncellemek istediğiniz alanları virgül ile ayırarak artırabilirsiniz.


WITH ROLLUP
İstatistiksel bir yapıdır, sonuç setimize dikey olarak ara toplam ve genel toplam ekler.

Örnek tablomuz ;

create table t(d date, id int, hrs int);

Örnek verilerimiz ;

insert into t values  
('2013-10-1',1,5), ('2013-10-1',2,6), ('2013-10-1',3,2), ('2013-10-1',3,5),  
('2013-10-2',1,1), ('2013-10-2',1,2), ('2013-10-2',2,3), ('2013-10-2',2,4),  
('2013-10-3',1,2), ('2013-10-3',1,2), ('2013-10-3',1,2);  

Kullanım ;

select d ,id,sum(hrs) as saat
from t  
group by d,id  
with rollup;

Kullanım sonucunda aşağı daki görüntüyle karşılaşılır ;

mysql_makale1.png

Daha anlaşılır bir görüntü sağlamak için "id" sahalarının NULL geldiği satırlara "GÜN TOPLAMI"  , "d" sahasının NULL geldiği satırada "GENEL TOPLAM" diyebiliriz.

select d ,
IF(IFNULL(d,"")="" , "GENEL TOPLAM" , if(IFNULL(id,0)=0,"GÜN TOPLAMI",id)) as id,sum(hrs) as saat
from t  
group by d,id  
with rollup;

mysql_makale2.png

Teşekkürler hocam iş mülakatlarında genelde bu tarz ön bilgi soruları soruyorlar biraz sıkıntılı bir durum fakat yardımcı olmuşsunuz... Youtube vs alanlarda eğitim vermeyi düşündünüz mü?
Cevapla
#13
(01-08-2022, Saat: 15:11)merhas10 Adlı Kullanıcıdan Alıntı:
(27-08-2016, Saat: 11:51)vkamadan Adlı Kullanıcıdan Alıntı: Bu makalede belki de pek bilinmeyen ancak hayatı kolaylaştıran bazı kullanım şekillerine örnek vermek istiyorum.

ON DUPLICATE KEY UPDATE 
Bu deyim INSERT INTO ile birlikte kullanılır, amacı INSERT edilen kaydın ilgili tabloda DUPLICATE KEY hatasına sebep olması durumunda yani aynı KEY değerine sahip bir kayda denk gelmesi durumunda INSERT işlemi yerine mevcut kaydı güncellemesidir.

Örneğin parametreleri dikey olarak tuttuğumuz bir tablomuz olsun , programımızda parametreleri kaydedip güncellerken önce ilgili parametre var mı yoksa insert varsa update kontrolü yapmak yerine tek komutta işi bitirebilirsiniz.

Örnek tablomuz ;

CREATE TABLE `pbs_param` (
 `param_name` varchar(20) NOT NULL DEFAULT '',
 `value` text,
 PRIMARY KEY (`param_name`)
);

Görüldüğü gibi tablomuzda "param_name" PK olarak tanımlı ,  aşağıda ki SQL ile tablomuza "varsayilan_dil" isimli bir parametreyi ekleyeceğiz varsa da güncelleyeceğiz.

INSERT INTO pbs_param (param_name,value) VALUES ("varsayilan_dil" , "tr") ON DUPLICATE KEY UPDATE value="tr" ;

bu cümle "varsayilan_dil" isimli bir parametre yoksa ;

INSERT INTO pbs_param (param_name,value) VALUES ("varsayilan_dil" , "tr") ;

eğer "varsayilan_dil" isimli bir parametre varsa da aşağıdaki gibi çalışma sağlayacaktır.

UPDATE pbs_param SET value="tr" WHERE param_name="varsayilan_dil";

ON DUPLICATE KEY UPDATE den sonra güncellemek istediğiniz alanları virgül ile ayırarak artırabilirsiniz.


WITH ROLLUP
İstatistiksel bir yapıdır, sonuç setimize dikey olarak ara toplam ve genel toplam ekler.

Örnek tablomuz ;

create table t(d date, id int, hrs int);

Örnek verilerimiz ;

insert into t values  
('2013-10-1',1,5), ('2013-10-1',2,6), ('2013-10-1',3,2), ('2013-10-1',3,5),  
('2013-10-2',1,1), ('2013-10-2',1,2), ('2013-10-2',2,3), ('2013-10-2',2,4),  
('2013-10-3',1,2), ('2013-10-3',1,2), ('2013-10-3',1,2);  

Kullanım ;

select d ,id,sum(hrs) as saat
from t  
group by d,id  
with rollup;

Kullanım sonucunda aşağı daki görüntüyle karşılaşılır ;

mysql_makale1.png

Daha anlaşılır bir görüntü sağlamak için "id" sahalarının NULL geldiği satırlara "GÜN TOPLAMI"  , "d" sahasının NULL geldiği satırada "GENEL TOPLAM" diyebiliriz.

select d ,
IF(IFNULL(d,"")="" , "GENEL TOPLAM" , if(IFNULL(id,0)=0,"GÜN TOPLAMI",id)) as id,sum(hrs) as saat
from t  
group by d,id  
with rollup;

mysql_makale2.png

Teşekkürler hocam iş mülakatlarında genelde bu tarz ön bilgi soruları soruyorlar biraz sıkıntılı bir durum fakat yardımcı olmuşsunuz... Youtube vs alanlarda eğitim vermeyi düşündünüz mü?

Merhaba , 
Zaman ve enerji eksikliğinden dolayı sadece düşünce aşamasında kaldı maalesef.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  MySql ip bağlantısı akuyumcu63 5 160 10-08-2022, Saat: 16:36
Son Yorum: akuyumcu63
Question Mysql İç İçe Yapılar YILDIRIMBEY 7 381 01-07-2022, Saat: 02:33
Son Yorum: mustafaozpinar
  SQL Count() için Kullanım Şekli SercanTEK 17 1.053 29-03-2022, Saat: 08:54
Son Yorum: sabanakman
  Mysql tablo yedekleme powerghost 9 861 04-07-2021, Saat: 12:44
Son Yorum: Halil Han BADEM
  aplication error mysql suleymangul0 3 746 19-03-2021, Saat: 11:07
Son Yorum: suleymangul0



Konuyu Okuyanlar: 1 Ziyaretçi