SQL UPDATE KOMUTU
KOMUTLARIMIZIN ANLATIMI BİTİNCE BİR SÜRÜ ÖRNEK ÇÖZECEĞİZ İYİ
ÇALIŞMALAR.
SİSTEM ÇAĞRILARI PROSES VE İPLİK YÖNETİM ÇAĞRILARI -4-
4-YÜRÜTME ÇAĞRILARI
Yürütme işlemleri exec() grubu çağrıları ile gerçekleşir.<unistd> kütüphanesi gerekir.
ÖRNEK
execl() sistem çağrısını kullanarak aynı dizideki kodu verilen merhaba.cpp programının çalıştırılabilir hali olan merhaba isimli dosyayı çalıştıracak kod parçasını yazalım.
#include <iostream>
using namespace std;
int main()
{
cout<<"Merhaba..."<<endl;
}
#include <iostream>
#include <unistd.h>
using namespace std;
int main()
{
execl("merhaba","meraba",NULL);
}
5-KONTROL GRUBU ÇAĞRILARI
brk(void *veri_bolum_bitisi) ve setsid() çağrıları prosesler için özellik ayarlama çağrılarıdır.(<unistd.h>)
Proseslerin bellekleri 3 kısımdan oluşur.Bunlar işlemcinin temel bellek kesimleriyle aynı mantıkta bölümlü bir yapıdadır.
İlk kısım ---Program kodunun olduğu kod kesimi
İkinci kısım---Verilerin ve değişkenlerin yer aldığı veri kesimi
Üçüncü kısım---Yığının yer aldığı yığın kesimidir.
*******************************************************************************
ÖRNEK
setsid() sistem çağrısını kullanarak kendi SID sini belirleyen bir çocuk prosesin C++ kodunu yazalım.
#include <iostream>
#include <unistd.h>
int main (int argc,const char *argc[])
{
pid_t pid,sid;
pid=fork(); //Forklayarak ana prosesten ayrılıyoruz.
if(pid>0)
{
cout<<"Ana proses çıkar..."<<endl;
return 0; //ana prosesi sonlandırdık
}
sid=setsid(); //Kendi SID imizi oluşturup yetim proses olmaktan kurtuluyoruz.
sleep(5);
cout<<"BITIS..."<<endl;
return 0;
}
Yürütme işlemleri exec() grubu çağrıları ile gerçekleşir.<unistd> kütüphanesi gerekir.
ÖRNEK
execl() sistem çağrısını kullanarak aynı dizideki kodu verilen merhaba.cpp programının çalıştırılabilir hali olan merhaba isimli dosyayı çalıştıracak kod parçasını yazalım.
#include <iostream>
using namespace std;
int main()
{
cout<<"Merhaba..."<<endl;
}
#include <iostream>
#include <unistd.h>
using namespace std;
int main()
{
execl("merhaba","meraba",NULL);
}
5-KONTROL GRUBU ÇAĞRILARI
brk(void *veri_bolum_bitisi) ve setsid() çağrıları prosesler için özellik ayarlama çağrılarıdır.(<unistd.h>)
Proseslerin bellekleri 3 kısımdan oluşur.Bunlar işlemcinin temel bellek kesimleriyle aynı mantıkta bölümlü bir yapıdadır.
İlk kısım ---Program kodunun olduğu kod kesimi
İkinci kısım---Verilerin ve değişkenlerin yer aldığı veri kesimi
Üçüncü kısım---Yığının yer aldığı yığın kesimidir.
*******************************************************************************
ÖRNEK
setsid() sistem çağrısını kullanarak kendi SID sini belirleyen bir çocuk prosesin C++ kodunu yazalım.
#include <iostream>
#include <unistd.h>
int main (int argc,const char *argc[])
{
pid_t pid,sid;
pid=fork(); //Forklayarak ana prosesten ayrılıyoruz.
if(pid>0)
{
cout<<"Ana proses çıkar..."<<endl;
return 0; //ana prosesi sonlandırdık
}
sid=setsid(); //Kendi SID imizi oluşturup yetim proses olmaktan kurtuluyoruz.
sleep(5);
cout<<"BITIS..."<<endl;
return 0;
}
SİSTEM ÇAĞRILARI PROSES VE İPLİK YÖNETİM ÇAĞRILARI -3-
exit(int statu) sistem çağrısı çalışan bir prosesin bitiminde kullanılır.Kütüphanesi <stdlib.h> tır.
Çıkış durumunu gösteren statu parametresi aynı zamanda waitpid() sistem çağrısına parametre olarak döner.
statu parametresinin düşük değerlikli baytı 0 ise normal sonlanma 0 dan farklı bir değer ise hata ile sonlanma anlamına gelir.Yüksek değerlikli ise çocuk prosesin çıkış durumudur.
ÖRNEK
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
cout<<"CALISAN PRO..."<<endl;
exıt(EXIT_SUCCESS);
cout<<"Bu kod çalışmadı...";
}
pthread_join(pthread_t iplik,void **deger) çağrısı ,ilk parametrede belirtilen ipliğin sonlanmasını beklemek için kullanılmaktadır.<pthread.h> başlık dosyasında tanımlıdır.
ÖRNEK
#include <iostream>
#include <pthread.h>
using namespace std;
void *iplikislemi(){
cout<<"IPLIK"<<endl;
}
int main()
{
pthread_t iplik;
pthread_create(&iplik,NULL,iplikislemi,NULL);
cout<<"ipliğin sonlanmasın bekle !!! "<<endl;
cout<<"Iplik sonlandı..."<<endl;
}
pthread_exit(void *ptr) ise ipliğin sonlandırma çağrısıdır.,<pthread.h> başlık dosyasında tanımlıdr.
ÖRNEK :
Bir iplik oluşturup bu ipliğin pthread_exit() sistem çağrısıyla sonlandığı iplik ve ana program kodlarını yazalım.
#include <pthread.h>
#include<iostream>
using namespace std;
void *iplik_islem()
{
cout<<"Iplik islemi"<<endl;
pthread_exit(0);
}
int main()
{
pthread_t iplik;
pthread_create(&iplik,NULL,iplik_islemi,NULL);
pthread_join(iplik,NULL);
}
Çıkış durumunu gösteren statu parametresi aynı zamanda waitpid() sistem çağrısına parametre olarak döner.
statu parametresinin düşük değerlikli baytı 0 ise normal sonlanma 0 dan farklı bir değer ise hata ile sonlanma anlamına gelir.Yüksek değerlikli ise çocuk prosesin çıkış durumudur.
ÖRNEK
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
cout<<"CALISAN PRO..."<<endl;
exıt(EXIT_SUCCESS);
cout<<"Bu kod çalışmadı...";
}
pthread_join(pthread_t iplik,void **deger) çağrısı ,ilk parametrede belirtilen ipliğin sonlanmasını beklemek için kullanılmaktadır.<pthread.h> başlık dosyasında tanımlıdır.
ÖRNEK
#include <iostream>
#include <pthread.h>
using namespace std;
void *iplikislemi(){
cout<<"IPLIK"<<endl;
}
int main()
{
pthread_t iplik;
pthread_create(&iplik,NULL,iplikislemi,NULL);
cout<<"ipliğin sonlanmasın bekle !!! "<<endl;
cout<<"Iplik sonlandı..."<<endl;
}
pthread_exit(void *ptr) ise ipliğin sonlandırma çağrısıdır.,<pthread.h> başlık dosyasında tanımlıdr.
ÖRNEK :
Bir iplik oluşturup bu ipliğin pthread_exit() sistem çağrısıyla sonlandığı iplik ve ana program kodlarını yazalım.
#include <pthread.h>
#include<iostream>
using namespace std;
void *iplik_islem()
{
cout<<"Iplik islemi"<<endl;
pthread_exit(0);
}
int main()
{
pthread_t iplik;
pthread_create(&iplik,NULL,iplik_islemi,NULL);
pthread_join(iplik,NULL);
}
SİSTEM ÇAĞRILARI PROSES VE İPLİK YÖNETİM ÇAĞRILARI -2-
3-BEKLEME VE SONLANMA ÇAĞRILARI
Proseslerin bekleme ve sonlanma çağrıları : wait(),waitpid() ve exit() tir
İpliklerde ise pthread_join ve pthread_exit kullanılır.
wait(int *statu) ve waitpid(pid_t pid,int *statu,int secenekler) çağrıları için <sys/types.h> ve <sys/wait.h> kütüphaneleri gerekiyor.
waitpid() çağrısı kullanılarak istenen bir çocuk prosese özel veya çok çocuklu bir yapı için herhangi bir çocuk prosesin bitişi beklenebilir.
Eğer özel bir proses beklenecekse o prosesin proses tanımlayıcı numarası(pid) ilk parametre olarak girilir.Herhangi bir çocuk prosesin sonlanması beklenecekse -1 değeri girilir.
Proses sonlandığında waitpid() in ikinci parametresi olan ve adres değeri alan statü değişkeni sonlanan çocuk prosesin çıkış değerini alır.
waitpid() çağrısının son parametresi olan özellikler ise 0 veya OR larla değerler alabilir.
WNOHAN,WUNTRACED,WCONTINUED...
ÖRNEK
Bir anne ve çocuk proses oluşturup anne prosesin çocuk prosesin sonlanmasını wait çağrısı ile beklediği programı yazalım.
#include <iostream>
#include <sys/types.h>
#include <sys/wait.h>
using namespace std;
int main()
{
pid_t pid; //Fork çağrımızda geri dönüş değeri için
int statu; //Çocuk prosesin sonlanma değerinin alınması için
pid=fork(); //Çocuk prosesi oluşturduk.
if(pid==0)
cout<<"Merhaba la ben çocuk proses nasılsın"<<endl;
else{
cout<<"Selam ben anne proses"<<endl;
wait(&statu); //Prosesin bitmesini bekliyoruz.
}
}
ÖRNEK 2
Bir anne ve çocuk proses oluşturup anne prosesin çocuk prosesin çocuk prosesin sonlanmasını waitpid() çağrısı ile beklediği programı yazalım
#include <iostream>
#include <sys/types.h>
#include <sys/wait.h>
using namespace std;
int main()
{
pid_t pid , pid_w ; //fork() ve waitpid() çağrıları için
int statu;
pid=fork();
if(pid==0)
cout<<"Ben Çocuk..."<<getpid()<<endl;
else
{
cout<<"Ben anne proses , çocuğumu beklicem tmm mı"<<endl;
pid_w=waitpid(pid,&statu,0);
//Çocuğun sonlanmasını bekliyor
cout<<"Sonlanan..."<<pid_w<<endl; //Sonlanan prosesin PID si yazdırılıyor
}
}
Proseslerin bekleme ve sonlanma çağrıları : wait(),waitpid() ve exit() tir
İpliklerde ise pthread_join ve pthread_exit kullanılır.
wait(int *statu) ve waitpid(pid_t pid,int *statu,int secenekler) çağrıları için <sys/types.h> ve <sys/wait.h> kütüphaneleri gerekiyor.
waitpid() çağrısı kullanılarak istenen bir çocuk prosese özel veya çok çocuklu bir yapı için herhangi bir çocuk prosesin bitişi beklenebilir.
Eğer özel bir proses beklenecekse o prosesin proses tanımlayıcı numarası(pid) ilk parametre olarak girilir.Herhangi bir çocuk prosesin sonlanması beklenecekse -1 değeri girilir.
Proses sonlandığında waitpid() in ikinci parametresi olan ve adres değeri alan statü değişkeni sonlanan çocuk prosesin çıkış değerini alır.
waitpid() çağrısının son parametresi olan özellikler ise 0 veya OR larla değerler alabilir.
WNOHAN,WUNTRACED,WCONTINUED...
ÖRNEK
Bir anne ve çocuk proses oluşturup anne prosesin çocuk prosesin sonlanmasını wait çağrısı ile beklediği programı yazalım.
#include <iostream>
#include <sys/types.h>
#include <sys/wait.h>
using namespace std;
int main()
{
pid_t pid; //Fork çağrımızda geri dönüş değeri için
int statu; //Çocuk prosesin sonlanma değerinin alınması için
pid=fork(); //Çocuk prosesi oluşturduk.
if(pid==0)
cout<<"Merhaba la ben çocuk proses nasılsın"<<endl;
else{
cout<<"Selam ben anne proses"<<endl;
wait(&statu); //Prosesin bitmesini bekliyoruz.
}
}
ÖRNEK 2
Bir anne ve çocuk proses oluşturup anne prosesin çocuk prosesin çocuk prosesin sonlanmasını waitpid() çağrısı ile beklediği programı yazalım
#include <iostream>
#include <sys/types.h>
#include <sys/wait.h>
using namespace std;
int main()
{
pid_t pid , pid_w ; //fork() ve waitpid() çağrıları için
int statu;
pid=fork();
if(pid==0)
cout<<"Ben Çocuk..."<<getpid()<<endl;
else
{
cout<<"Ben anne proses , çocuğumu beklicem tmm mı"<<endl;
pid_w=waitpid(pid,&statu,0);
//Çocuğun sonlanmasını bekliyor
cout<<"Sonlanan..."<<pid_w<<endl; //Sonlanan prosesin PID si yazdırılıyor
}
}
PROCESSLER İLE THREADLER ARASINDAKİ FARKLAR
1-Threadler, onu oluşturan işlemin adres alanını paylaşır; processler kendi adres alanlarına sahiptir.
2-Threadler, işlemin veri bölümüne doğrudan erişime sahiptir; Processler üst işlemin veri bölümünün kendi kopyaları vardır.
3-Threadler, süreçlerinin diğer konuları ile doğrudan iletişim kurabilir; Processler kardeş süreçlerle
iletişim kurmak için süreçlerarası iletişim kullanmalıdır.
4-Threadler neredeyse hiç yük taşımıyor; Processler hatırı sayılır bir yükü var.
5-Threadler kolayca oluşturulur; Yeni süreçler üst Processin çoğaltılmasını gerektirir.
6-Threadler, aynı işlemdeki iş parçacıkları üzerinde önemli denetime sahip olabilir; Processler yalnızca çocuk süreçleri üzerinde kontrol sahibi olabilirler.
7-Ana threadler değişiklikler (iptal, öncelik değişikliği, vb.) Işlemin diğer threadlerinin davranışını etkileyebilir; Üst processteki değişiklikler alt processleri etkilemez.
http://stackoverflow.com/questions/200469/what-is-the-difference-between-a-process-and-a-thread Sitesinden çevrilmiştir
http://stackoverflow.com/questions/200469/what-is-the-difference-between-a-process-and-a-thread Sitesinden çevrilmiştir
SİSTEM ÇAĞRILARI PROSES VE İPLİK YÖNETİM ÇAĞRILARI -1-
Bu çağrılar proses ve iplik oluşturma , bekleme ,sonlandırma , yürütme,ayarlama,bilgi alma ve hata ayıklamayı sağlayan çağrılardır.
Yeni proses oluşturma --->fork()
Yeni iplik oluşturma --->pthread_create(...)
İplik bekleme çağrısı--->pthread_join(...)
Proses bekleme çağrısı --->wait()
Proses sonlandırma çağrısı --->exit(int statu)
Prosesin ID --->getpid()
Anne prosesinin ID si --->getppid()
Kullanıcı ID si--->getuid()
1-YENİ PROSES OLUŞTURMA ÇAĞRILARI
fork() sistem çağrısı yeni bir proses oluşturur ,kullanılabilmesi için <sys/types.h> ve <unistd.h>
başlık dosyaları program koduna eklenmelidir.Oluşan proses çocuk proses oluşturan ise annedir.
Bu çağrı kullanıldığını anne prosesin birebir kopyası olan bir çocuk proses oluşur.
Anne prosesteki tüm değişkenleri ve kod çocuk prosese kopyalanır her ikisi fork() çağrısından sonraki işlemi yapmaya çalışır.
Fakat ikisinin farklı islemler yapabilmesi için hangi prosesin anne hangi prosesin çocuk olduğu bilinmelidir.
fork() çağrısı çocuk prosese 0 ,anne prosese ise çocuk prosesin tanımlayıcı numarasıyla döner.
#include <iostream>
#include <sys/types.h>
#include <unistd.h>
using namespace std;
int main()
{
pid_t pid; //Dönüş tipimiz
pid=fork(); //Yeni proses oluşturuluyor.
if(pid==0)
cout<<"Ben Cocuk"<<pid<<endl;
else
cout<<"Ben Anne"<<<pid<endl;
}
2-YENİ İPLİK OLUŞTURMA ÇAĞRISI
pthread_create(pthread_t sınırlanan iplik,const pthread_attr_t sınırlanan ozellik,void*(*fonksiyon)(void*),void *restrict arg) çağrısı, yeni iplik oluşturmak için kullanılır.
Bu çağrı <pthread.h> kütüphanesi ile kullanılır.
İlk parametresi pthread_t tipinde bir iplik değişkeni
İkinci parametresi özellikleri ve NULL
Üçüncü parametre ipliğin çalıştıracağı fonksiyonu belirten işaretçidir.
Son parametre ise bu ipliğe gönderilecek parametrelerdir.
Derleme aşamasında lpthread opsiyonu belirtilmelidir.
Yukarıdaki proses örneğine iplik ekleyen C++ programını yazalım
#include <iostream>
#include <pthread.h>
using namespace std;
//İpliğimizin 3.parametresi burada çalıştırmak istediğimizi foksiyonumuzu yazıyoruz
//Asal sayı hesabı olabilir,üslü sayısılarda işlemler olabilir,o sizin keyfinize kalmış artık :)
void *iplik_islemleri(void *i)
{
cout<<"Merhaba ben işaretçi fonksiyonunuzum"<<(int) i<<endl;
}
int main()
{
int iplik_no,i=1;
pthread_t iplik; //İplik bilgilerimizi tutacak.
iplik_no=phtread_create(&iplik,NULL,iplik_islemleri(*i),(void*)i); //İpliğimizi oluşturuldu
pthread_join(iplik,NULL);
//İpliğimiz sonlanana kadar bekliyor
}
Yeni proses oluşturma --->fork()
Yeni iplik oluşturma --->pthread_create(...)
İplik bekleme çağrısı--->pthread_join(...)
Proses bekleme çağrısı --->wait()
Proses sonlandırma çağrısı --->exit(int statu)
Prosesin ID --->getpid()
Anne prosesinin ID si --->getppid()
Kullanıcı ID si--->getuid()
1-YENİ PROSES OLUŞTURMA ÇAĞRILARI
fork() sistem çağrısı yeni bir proses oluşturur ,kullanılabilmesi için <sys/types.h> ve <unistd.h>
başlık dosyaları program koduna eklenmelidir.Oluşan proses çocuk proses oluşturan ise annedir.
Bu çağrı kullanıldığını anne prosesin birebir kopyası olan bir çocuk proses oluşur.
Anne prosesteki tüm değişkenleri ve kod çocuk prosese kopyalanır her ikisi fork() çağrısından sonraki işlemi yapmaya çalışır.
Fakat ikisinin farklı islemler yapabilmesi için hangi prosesin anne hangi prosesin çocuk olduğu bilinmelidir.
fork() çağrısı çocuk prosese 0 ,anne prosese ise çocuk prosesin tanımlayıcı numarasıyla döner.
#include <iostream>
#include <sys/types.h>
#include <unistd.h>
using namespace std;
int main()
{
pid_t pid; //Dönüş tipimiz
pid=fork(); //Yeni proses oluşturuluyor.
if(pid==0)
cout<<"Ben Cocuk"<<pid<<endl;
else
cout<<"Ben Anne"<<<pid<endl;
}
2-YENİ İPLİK OLUŞTURMA ÇAĞRISI
pthread_create(pthread_t sınırlanan iplik,const pthread_attr_t sınırlanan ozellik,void*(*fonksiyon)(void*),void *restrict arg) çağrısı, yeni iplik oluşturmak için kullanılır.
Bu çağrı <pthread.h> kütüphanesi ile kullanılır.
İlk parametresi pthread_t tipinde bir iplik değişkeni
İkinci parametresi özellikleri ve NULL
Üçüncü parametre ipliğin çalıştıracağı fonksiyonu belirten işaretçidir.
Son parametre ise bu ipliğe gönderilecek parametrelerdir.
Derleme aşamasında lpthread opsiyonu belirtilmelidir.
Yukarıdaki proses örneğine iplik ekleyen C++ programını yazalım
#include <iostream>
#include <pthread.h>
using namespace std;
//İpliğimizin 3.parametresi burada çalıştırmak istediğimizi foksiyonumuzu yazıyoruz
//Asal sayı hesabı olabilir,üslü sayısılarda işlemler olabilir,o sizin keyfinize kalmış artık :)
void *iplik_islemleri(void *i)
{
cout<<"Merhaba ben işaretçi fonksiyonunuzum"<<(int) i<<endl;
}
int main()
{
int iplik_no,i=1;
pthread_t iplik; //İplik bilgilerimizi tutacak.
iplik_no=phtread_create(&iplik,NULL,iplik_islemleri(*i),(void*)i); //İpliğimizi oluşturuldu
pthread_join(iplik,NULL);
//İpliğimiz sonlanana kadar bekliyor
}
İŞLETİM SİSTEMLERİ SİSTEM ÇAĞRILARI 1
Kullanıcı programları ile işletim sistemleri arasındaki arayüz işletim sistemleri tarafından desteklenen genişletilmiş komut setiyle sağlanır.Bu komut setine SİSTEM ÇAĞRILARI denir.
İşletim sistemlerinde komutların yürütüldüğü iki farklı uzay bulunur.Bunlardan ilki KULLANICI UZAYI,diğeri ise ÇEKİRDEK UZAYIDIR.
Sistem çağrıları veya bu çağrılara ulaşan komutlar dışındaki tüm komutlar kullanıcı uzayında yürütülür.
Kullanıcı,kullanıcı modunda bir komut işleyeceği zaman bu çekirdek modunda sistem çağrısıyla yapılır.
Sistem çağrısı yapan yazılım işletim sisteminin çekirdeğine yürütmek üzere çağrıda bulunur.
Sistem çağrısının yürütülmesinin ardından kullanıcı uzayına geri dönülür.
.
Çekirdekte bu yürütme işlemine tuzak(TRAP) adı verilir.
İşletim sistemine göre sistem çağrılarının yazım stilleri,kullanımları ve parametreleri değişebilir fakat özellikleri aynıdır.
Günümüzde UNIX,Linux,MINIX,Solaris ve BSD POSIX standardını destekleyen işletim sistemleridir
UYGULAMA--->SİSTEM ÇAĞRISI YAP
--->(SİSTEM ÇAĞRISI(ÇEKİRDEK UZAYINDA)) --->SİSTEM ÇAĞRISINDAN DÖNÜŞ
DİĞERLERİ KULLANICI UZAYINA AİTTİR.
Sistem Çağrılarının Sınıflandırılması
-PROSES VE İPLİK YÖNETİMİ
-SİNYALLEŞME
-DOSYA VE DİZİN YÖNTEMİ
-GÜVENLİK VE ZAMAN YÖNETİMİ
İşletim sistemlerinde komutların yürütüldüğü iki farklı uzay bulunur.Bunlardan ilki KULLANICI UZAYI,diğeri ise ÇEKİRDEK UZAYIDIR.
Sistem çağrıları veya bu çağrılara ulaşan komutlar dışındaki tüm komutlar kullanıcı uzayında yürütülür.
Kullanıcı,kullanıcı modunda bir komut işleyeceği zaman bu çekirdek modunda sistem çağrısıyla yapılır.
Sistem çağrısı yapan yazılım işletim sisteminin çekirdeğine yürütmek üzere çağrıda bulunur.
Sistem çağrısının yürütülmesinin ardından kullanıcı uzayına geri dönülür.
.
Çekirdekte bu yürütme işlemine tuzak(TRAP) adı verilir.
İşletim sistemine göre sistem çağrılarının yazım stilleri,kullanımları ve parametreleri değişebilir fakat özellikleri aynıdır.
Günümüzde UNIX,Linux,MINIX,Solaris ve BSD POSIX standardını destekleyen işletim sistemleridir
UYGULAMA--->SİSTEM ÇAĞRISI YAP
--->(SİSTEM ÇAĞRISI(ÇEKİRDEK UZAYINDA)) --->SİSTEM ÇAĞRISINDAN DÖNÜŞ
DİĞERLERİ KULLANICI UZAYINA AİTTİR.
Sistem Çağrılarının Sınıflandırılması
-PROSES VE İPLİK YÖNETİMİ
-SİNYALLEŞME
-DOSYA VE DİZİN YÖNTEMİ
-GÜVENLİK VE ZAMAN YÖNETİMİ
SQL İNSERT (EKLEME) KOMUTU
Verilen alanlardan herhangi birini doldurmak istemiyorsak,örneğin kitabın yazarını bilmiyoruz,onun yerine NULL değerini atayabiliriz.
SQL OPERATÖRLER (AND,İN,OR,LİKE)
AND OPERATÖRÜMÜZ
OR OPERATÖRÜMÜZ (veyalar arttırılabilir örneğin buna ek olarak or KitapFiyat>40 ta eklenirse
görüntülenecek veri sütunlarımız değişir.)
İN OPERATÖRÜMÜZ
BİR ÖRNEK DAHA...
SQL WHERE KOMUTU
Her zamanki gibi SQL1 veri tabanımızda kitaplik adında bir tablo oluşturup o tabloyu doldurduk.
Sonra select komutu ile tablomuzdaki verileri çağırdık en sonunda da where komutumuz ile işlemler yaptık.
İYİ ÇALIŞMALAR
Kaydol:
Kayıtlar (Atom)
Spring Boot Uygulamasını Heroku üzerinde Deploy Etme
Bu yazımızda sizlere spring boot ile yazılmış basit bir Rest api'nin heroku üzerinde nasıl deploy edebileceğimizi göstereceğim. Önce ...
-
Bu yazımda hobi olarak ilgilendiğim bug bounty'i anlatmaya çalışacağım. Daha sonra bu konu üzerinde kendimizi geliştirmek için neler yap...
-
Flip-Flop doğruluk tabloları girişlerin durumuna bağlı olarak çıkışların ne olması gerektiğini anlatan tablolardır. Kısaca bir doğruluk tabl...