26 Mart 2017 Pazar

Servlet'te DoGet () ve DoPost () Kullanımı


doGet ve doPost arasındaki fark nedir?


- doGet () ve doPost (), servlet sınıfları tarafından işlenen HTTP istekleridir.

- doGet () işlevinde, parametreler URL'ye eklenir ve başlık bilgisi ile birlikte gönderilir.

- Bu, doPost () durumunda gerçekleşmez.

- DoPost'ta () parametreler ayrı olarak gönderilir.

- Aşağıdaki örnek, doGet () ve doPost () işlevlerini daha iyi anlamamıza yardımcı olacaktır:

Web.xml kodumuz :


<?xml version="1.0" encoding="UTF-8"?>
<web-app>
  <display-name>Servlet_doGet_doPost</display-name>  
   <servlet>
        <servlet-name>Login</servlet-name>
        <servlet-class>servletdoGetdoPost.Login</servlet-class>
   </servlet>
   <servlet-mapping>
       <servlet-name> Login </servlet-name>
       <url-pattern> /login </url-pattern>
   </servlet-mapping>    
</web-app>

login.html kodumuz:


<!DOCTYPE html>
<html>
    <head>        
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    <body>     
        <form action="login" method="get">
            <h3>doGet Methodu Kullan </h3>
            <h4>Bilgilerinizi Griniz.</h4>
            <h4> Adınız:  <input type ="text" name="username"/></h4>
            <h4> Şifreniz: <input type ="password"  name="pwd"/></h4>
            <input type="submit" value ="Get"/>
            <input type="reset"/>
         </form>
         <form action="login" method="post">
            <h3>doGet Methodu Kullan </h3>
            <h4>Bilgilerinizi Griniz.</h4>
            <h4> Adınız:  <input type ="text" name="username1"/></h4>
            <h4> Şifreniz: <input type ="password"  name="pwd1"/></h4>
            <input type="submit" value ="Post"/>
            <input type="reset"/>
         </form>
    </body>
</html>




Login.java Kodumuz:

package servletdoGetdoPost;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Login extends HttpServlet {

   
private static final long serialVersionUID = 1L;
@Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
            throws ServletException, IOException {
        response.setContentType("text/html; charset=UTF-8");
        String username = request.getParameter("username");
        String pwd = request.getParameter("pwd");

        PrintWriter pr = response.getWriter();

        pr.print("<html><head>");
        pr.print("<title>Servlet Ekran</title>");
        pr.print("</head>");
        pr.print("<body>");
        pr.print("<h2>Get() Methodu bilgileri</h2>");
        pr.print("<h2>Girilen kullanıcı bilgileri</h2>");
        pr.print("<h3> username:  "+username+"</h3>");
        pr.print("<h3> pasword:     "+pwd+"</h3>");
        pr.print("</body></html>");
       

    }
    @Override
    protected void doPost(HttpServletRequest request,HttpServletResponse response)
            throws ServletException,IOException{
        response.setContentType("text/html; charset=UTF-8");
        String username1 = request.getParameter("username1");
        String pwd1 = request.getParameter("pwd1");

        PrintWriter pr = response.getWriter();

        pr.print("<html><head>");
        pr.print("<title>Servlet Ekran</title>");
        pr.print("</head>");
        pr.print("<body>");
        pr.print("<h2>Post() Methodu bilgileri</h2>");
        pr.print("<h2>Girilen kullanıcı bilgileri</h2>");
        pr.print("<h3> username:  "+username1+"</h3>");
        pr.print("<h3> pasword:     "+pwd1+"</h3>");
        pr.print("</body></html>");
    }

}

doGet metodunun kullanımı sonucunda girmiş olduğumuz kullanıcı adı ve şifresi adres çubuğunda görünmüş oldu. Bu pek hoş bir durum olmadı. Tabi böyle şifreleme ve  giriş çıkış işlemlerinden çok arama işlemlerinden kullanılabilri. örnek vermek gerekirse google aradığımız bir şeyin adres çubuğundada görünmesi gibi.















doPost metodu ile girilen bilgilerin adres çubuğunda görünmesinin önüne geçilmiştir.








24 Mart 2017 Cuma

Java JDBC işlemleri



Veri Listeleme

package com.burhan;
import java.net.ConnectException;
import java.sql.*;
public class sample1 {
static final String JDBC_Driver="com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost:3306/ilkmysql";

// database kimlik bilgileri
static final String USER="root";
static final String PASSWORD ="root";

public static void main(String[] args) throws ClassNotFoundException {

Connection conn=null;
Statement stmt=null;
try {
//2. aşama jdbc driver kayıt
Class.forName("com.mysql.jdbc.Driver");

// 3. aşama veri tabanına bağlan.
System.out.println("veri tabanına baglan.");
conn=DriverManager.getConnection(DB_URL,USER,PASSWORD);
// 4. aşama  sorgu oluştur
System.out.println("sorgu olustur.");
stmt=conn.createStatement();
String sql;
sql ="select *from filmler ";
ResultSet rs=stmt.executeQuery(sql);

//5. aşama resulset dönen değerleri aç

while(rs.next())
{
int filmid= rs.getInt("filmid");
String adi= rs.getString("adi");
int sene=rs.getInt("sene");


System.out.println("Filmin İd="+filmid);
System.out.println("Filmin Adi="+adi);
System.out.println("yapım yılı="+sene);
}
rs.close();
stmt.close();
conn.close();

}
catch (SQLException se)
{
se.printStackTrace();
}
//kapanması gereken kaynaklar için finaly blogu
finally
{
try 
{
if(stmt!=null)
stmt.close();
}
catch (SQLException se2) {
// burda bişey yapmıyoruz
}
try 
{
if(conn!=null)
conn.close();
}
catch (SQLException se2) {
se2.printStackTrace();
}
}
System.out.println("güle güle..");
}

}



Veri ekleme

package com.burhan;
import java.sql.*;
public class ekleme {

// JDBC sürücü adı ve veritabanı URL'si
 static final String JDBC_Driver="com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost:3306/ilkmysql";

// database kimlik bilgileri
static final String USER="root";
static final String PASSWORD ="root";

public static void main(String[] args) throws ClassNotFoundException {

Connection conn=null;
Statement stmt=null;
try {
//2. aşama jdbc driver kayıt
Class.forName("com.mysql.jdbc.Driver");

// 3. aşama veri tabanına bağlan.
System.out.println("veri tabanına baglan.");
conn=DriverManager.getConnection(DB_URL,USER,PASSWORD);
     
  // 4. aşama  sorgu oluştur ve veri değerlerini girin.
     System.out.println("Kayıtları tabloya ekleme ...");
     stmt = conn.createStatement();
     
     String sql = "INSERT INTO filmler VALUES (15, 'KARASİMSEK',2005)";
     stmt.executeUpdate(sql);
     sql = "INSERT INTO Registration VALUES (16, 'KARA MURAT', 1975)";
     stmt.executeUpdate(sql);
     sql = "INSERT INTO Registration VALUES (17, 'ELFİDA', 2000)";
     stmt.executeUpdate(sql);       
    
  }catch(SQLException se){
     
     se.printStackTrace();
  }catch(Exception e){
     
     e.printStackTrace();
  }finally{
    
     try{
        if(stmt!=null)
           conn.close();
     }catch(SQLException se){
     }
     try{
        if(conn!=null)
           conn.close();
     }catch(SQLException se){
        se.printStackTrace();
     }
  }
 
}
  }





Veri Silme 

package com.burhan;
import java.sql.*;


public class silme {
  static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";  
  static final String DB_URL = "jdbc:mysql://localhost:3306/ilkmysql";

// database kimlik bilgileri
  static final String USER = "root";
  static final String PASSWORD = "root";
  
  public static void main(String[] args) {
  Connection conn = null;
  Statement stmt = null;
  try{
//2. aşama jdbc driver kayıt
     Class.forName("com.mysql.jdbc.Driver");

  // 3. aşama veri tabanına bağlan.
     System.out.println("veri tabanına baglan.");
     conn = DriverManager.getConnection(DB_URL, USER, PASSWORD);
     System.out.println("Bağlı veritabanı başarıyla bağlandı ...");
     
  // 4. aşama  sorgu oluştur  
     stmt = conn.createStatement();
     String sql = "DELETE FROM filmler WHERE filmid = 15";
     stmt.executeUpdate(sql);

     System.out.println("Kayıt Silindi");
     sql = "SELECT filmid, adi, sene FROM filmler";
     ResultSet rs = stmt.executeQuery(sql);
     
   //5. aşama resulset dönen değerleri aç
     while(rs.next()){
        
           int filmid= rs.getInt("filmid");
String adi= rs.getString("adi");
int sene=rs.getInt("sene");
System.out.println("Filmin İd="+filmid);
System.out.println("Filmin Adi="+adi);
System.out.println("yapım yılı="+sene);
     }
     rs.close();
  }catch(SQLException se){
     
     se.printStackTrace();
  }catch(Exception e){
     
     e.printStackTrace();
  }
  finally{
//kapanması gereken kaynaklar için finaly blogu
     try{
        if(stmt!=null)
           conn.close();
     }catch(SQLException se){
     }
  // burda bişey yapmıyoruz
     try{
        if(conn!=null)
           conn.close();
     }catch(SQLException se){
        se.printStackTrace();
     }
  }
 
}
}


Görüldüğü gibi İd numarası 15 olan karaşimşek filmimiz silindi.




Veri Güncelleme 


package com.burhan;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.*;


public class update {
  static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";  
   static final String DB_URL = "jdbc:mysql://localhost:3306/ilkmysql";

// database kimlik bilgileri
   static final String USER = "root";
   static final String PASSWORD = "root";
   
   public static void main(String[] args) {
   Connection conn = null;
   Statement stmt = null;
   try{
 //2. aşama jdbc driver kayıt
      Class.forName("com.mysql.jdbc.Driver");

   // 3. aşama veri tabanına bağlan.
      System.out.println("veri tabanına baglan.");
      conn = DriverManager.getConnection(DB_URL, USER, PASSWORD);
      System.out.println("Bağlı veritabanı başarıyla bağlandı ...");
     
     
     //4. aşama  sorgu oluştur
    
     stmt = conn.createStatement();
     String sql = "UPDATE filmler SET adi = 'dirilis_ertugryu'  WHERE filmid=13";
     stmt.executeUpdate(sql);

     sql = "SELECT filmid, adi, sene FROM filmler";
     ResultSet rs = stmt.executeQuery(sql);

     while(rs.next()){
      int filmid= rs.getInt("filmid");
String adi= rs.getString("adi");
int sene=rs.getInt("sene");
System.out.println("Filmin İd="+filmid);
System.out.println("Filmin Adi="+adi);
System.out.println("yapım yılı="+sene);
     }
     rs.close();
  }catch(SQLException se){
     
     se.printStackTrace();
  }catch(Exception e){
     
     e.printStackTrace();
  }finally{
     
      try{
         if(stmt!=null)
           conn.close();
     }catch(SQLException se){
     }
     try{
        if(conn!=null)
           conn.close();
     }catch(SQLException se){
        se.printStackTrace();
     }
  }
  
}
}

İd numarısı 13 olan Dirilis adlı filmimizin yeni adını güncelleme ile Diriliş Ertuğrul olarak değiştirdik.













23 Mart 2017 Perşembe

JSF' de Properties Dosyası kullanımı



Properties dosyasını kullanabilmemiz için bizim faces-config.xml  dosyasını ihtiyacımız vardır. Java Server Faces altından bulunan config  dosyasını projemize ekliyoruz.


Properties dosyamızı kullana bilmemiz için faces-config.xml içerisine  application tagları arasındaki yapıyı ekliyoruz.

  <application>
        <resource-bundle>
            <base-name>propertiesdosyasi</base-name>   --> Buraya Dosyamızın adını 
            <var>properdosya</var>      --> Buraya  ise xhtml sayfasından nasıl 
        </resource-bundle>                         çağıracağımızı yazıyoruz.
    </application>

Tabi unutmadan propertiesdosyasi.properties dosyamızı Source Packages altında oluşturalım. Değişken diyebileceğimiz burhan yapısı tanımladım ve bu yapı "Bu bir JSF uygulamasıdır." diye bir metin tutuyor. Bu değişkenimizle .xhtml sayfamıza bu metni aktarabiliyoruz.



xhtml sayfasından çağırma şekline değinecek olursak  Properties  dosyamızın var  ismi  ve çağırmak istediğiniz değişken ismini aralarına nokta koyarak kullanabiliriz. Attaki resimde daha anlaşılabilir diye umuyorum.

,

Ekran çıktımız da bu şekildir.Görüldüğü gibi oldukça basit bir kullanımı vardir.











C# Windows Form Application Güvenlik Sorgulu Giriş Paneli


Bu makalemizde C# form application üzerinde gerçekleştireceğimiz projeler için
 kullanıcı giriş paneli yapmayı tanıtacağız. Giriş panelinde güvenlik sorgusu
 oluşturma ve kullanmanın da yolu izah edilecektir. Kullanımı ve kodlaması oldukça kolaydır. 

Kullanacağımız değişkenler:

  • Label (4 Adet)
  • TextBox( 3 Adet)
  • Button(1 Adet)


Panelimizi designer görünümü alttaki gibidir. Siz istediğiniz düzende şekillendirebilirsiniz.


Giriş yapabilmek için giriş bilgilerini öncelikle database yani veri tabanınıza kaydetmeniz ve bu veritabanını uygulamanıza bağlamanız gerekmektedir. yani giriş için verileri ver tabanından çekeceğiz. bir veya birden çok kişi giriş yapabilir.


Öncelikle veri tabanımızı oluşturuyoruz. Giriş bilgileri için bize bir tablo yeterli gelecektir.Ben uygulamamda MS SQL serveri kullandım. 

create database deneme
use deneme
create table kullanicilar(
kId int primary key identity(1,1),
k_adi nvarchar(max),
sifre nvarchar(max),
kadi nvarchar(max),
ksoyadi nvarchar(max)
)

Sql kodlarımızla veritabanını ve tablomuzu oluşturduğumuza göre şimdi uygulamamıza geçebiliriz demeden önce unutmadan veritabanımıza kullanıcı eklemeyi unutmuyoruz. :) 


using System;
using System.Collections.Generic;
using  System.ComponentModel;
using System.Data;
using System.Drawing;
using  System.Linq;
using System.Text;
using  System.Windows.Forms;
using System.Data.SqlClient;

namespace online
{
    public partial class Form01 : Form
    {      
        public Form01()
        {            
            InitializeComponent();
        }
        public static string isim;
        public static string soyisim;
        bool kontrol = false;
        SqlConnection bag = new SqlConnection ("Data Source=DESKTOP-BTFMRHO;Initial Catalog=deneme;Integrated Security=True");
        public string yetki;
        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                //getir();
                bag.Open();
                SqlCommand komut = new SqlCommand ("select * from kullanicilar where k_adi='" + textBox1.Text + "'and sifre ='" + textBox2.Text + "'", bag);
                SqlDataReader dr = komut.ExecuteReader();        
                while (dr.Read())
                {
                    yetki = dr["yetki"].ToString();
                    kontrol = true;                  
                }
                bag.Close();
                if (kontrol == true && guvenlikToplam.ToString() == textBox3.Text )
                {
                 
                    Form1 frm1 = new Form1();
                   
                   frm1.ShowDialog();
                    this.Hide();
                }
                else
                    MessageBox.Show("kullanıcı girişi hatalı");
            }
            catch (Exception ex) {
                MessageBox.Show(ex.Message);
            }
       
        }
           
        private void Form01_Load(object sender, EventArgs e)
        {
            guvenlikTanimla();
            label4.Text = "= " + guvenlik1 + " + " + guvenlik2;
        }
        int guvenlik1 = 0, guvenlik2 = 0, guvenlikToplam = 0;

/*
Rasgele sayi üretmek için  Random  adı altında rnd nesnesi oluşturuyoruz. guvenlik1  ve guvenlik2  değişkenlerine atatnan rasgele sayıları toplayıp guvenlikToplam değişkenine atıyoruz.
*/

        void guvenlikTanimla()
        {
            Random rnd = new Random();
            guvenlik1 = rnd.Next(0, 10);
            guvenlik2 = rnd.Next(0, 10);
            guvenlikToplam = guvenlik1 + guvenlik2;
        }      
    }
         
}




Takıldığınız veya merak ettiğiniz bir noktada sorularınızı beklemekteyiz. İyi kullanımlar dileriz.


22 Mart 2017 Çarşamba

GlassFish Server 4.1.1 sunucusu Netbeans İDE' de neden başlatılamıyor ?




Netbeans 8.2 ve Glassfish 4.1.1 kullanıyorum. GlassFish 4.1.1'ı komut satırından manuel olarak başlatabiliyorum, ancak netbeans'taki projeyi çalıştırdığımda "Starting GlassFish Server" yazıyor. 10 dakikadan fazla oldu ama hiçbir şey olmuyor.



İnternette biraz araştırma sonucu sorunumu çözmeyi başardım.

Netbeans'in  kurulu olduğu dizinine gidin  --> netbeans/etc/netbeans.conf. Dosyayı bir metin düzenleyici kullanarak açıp ve düzenliyoruz. netbeans.conf  dosyasında    *"Netbeans_default_options =" ​​*  kısmı bulun ve seçeneklerin sonuna   "--local en"  ekleyin .

Kod dizimi aşağıdaki gibidir.

netbeans_default_options="-J-client -J-Xss2m -J-Xms32m -J-XX:PermSize=32m -J-Dapple.laf.useScreenMenuBar=true -J-Dapple.awt.graphics.UseQuartz=true -J-Dsun.java2d.noddraw=true -J-Dsun.java2d.dpiaware=true -J-Dsun.zip.disableMemoryMapping=true --locale en"

21 Mart 2017 Salı

SQL Çalışma Zamanı

Yapacağımız sorgular için yarışma adında bir database oluşturuyoruz ve bu database il, Uye, Soruturu, Soru ve İstatistik tablolarından oluşuyor. Birincil ve ikincil anahtarlarımız doğru bir şekilde oluştursak sorgu sırasında hata alma şansımız azalır. Buna dikkat etmek gerekir.


Create Database Yarisma 
use Yarisma  

Create Table İl 
(
İlPNo int Primary Key,
İlAdi varchar(30),

)
Create Table Uye
(
UNo int Primary Key identity (1,1),
UAdi varchar(30)NOT NULL,
UASoyadi varchar(30)NOT NULL,
UBTrh datetime Null,
İlPNo int foreign key references İl(İlPNo),
USifre varchar(30)NOT NULL DEFAULT('123abc'),
GirSay int Default(0),
Sonpuan int
)
Create Table SoruTur
(
STNo int Primary Key identity (1,1),
StAdi varchar(30)NOT NULL,

)

Create Table Soru
(
SNo int Primary Key identity (1,1),
SBaslik varchar(30)NOT NULL,
C1 varchar(2),
C2 varchar(2),
C3 varchar(2),
C4 varchar(2),
C5 varchar(2),
STNo int foreign key references SoruTur(STNo),
SPuan int NOT NULL,
UNo int foreign key references Uye(UNo),

)
Create Table İstatistik
(
UNo int foreign key references Uye(UNo),
AldTrh datetime,
ToplamPuan int,

)
-------------------------------------------------------------------------------

Alter İfadesini Kullanmak


--Tabloya yeni bir sutun ekleme için kullanılır.

alter table Uye add UAdres varchar(30)

-- Tabloda bulunan bir sutunun değişken türünü değiştirir.

alter table uye alter column uadresi int


-- Tabloda buluna bir sutunu siler
alter table Uye drop column UAdres
-------------------------------------------------------------------------------

Drop İfadesini Kullanmak

--Nesne, tablo veya veri tabanını siler.
Drop Database Okul
Drop Table Öğrenci

Truncate Table ogrenci(tablonun tüm içeriğini siler.)
Delete Table ogrenci(istenilen kayıtları siler)
delete from Uye where UNo=10 gibi...
------------------------------------------------------------------------------

DML (Veri İşleme Dili)


1)SELECT İfadesi



 select * from Uye --> Uye tablosunu listeler.
 select UAdi,UASoyadi from Uye  --> Uye tablosunda UAdi,UASoyadi  sütunları listelenir.

a)WHERE ifadesi (koşul ifadesi)

select * from Uye where İlPNo<9  -->İlPNo'su  9 dan küçük olan Uyler listelenir.

b)AND,OR ifadesi

 select * from Uye where İlPNo<9 and USifre>=15    -->  İlPNo' su 9'dan küçük ve USifre 15'e eşit veya büyük olanlar listelenir.
 select * from Uye where İlPNo<9 or USifre>=15     -- herhangi bir koşul sağlanırsa listelenir

c) IN, NOT IN ifadesi

-- Fazla şartın bulundugu sorgularda kullanılarak or yapısından kurtulabiliriz.
select  uadi,usoyadi,ilpno from uye where ilpno IN(1,3,4) --> Burada sadece ilpno'su 1,3,4 olan uyelerin uadi,usoyadi,ilpno bilgileri listelenir.

 select * from İl where  İlPNo NOT IN(1,2,3,4) --> İlPNo 1,2,3,4 olmayan uyelerin tüm bilgileri listelenir.

d) LİKE ifadesi

-- Kayıt arama esnasında kullanılır.
select * from Uye where UAdi LIKE('____M')  -->    Beşinci harfi M olan üyeleri listeler
select * from Uye where UAdi LIKE('____a_')  -->   Beşinci harfi A olan uyeleri listeler.
select * from Uye where UAdi LIKE('%M')       -->    Son harfi m olan
select * from Uye where UAdi LIKE('M%')       -->    Baş Harfi M olan ueleri listeler
select * from Uye where UAdi LIKE('%M%')    -->    İçerisinden M harfi geçen uyeleri listeler
select * from Uye where UAdi LIKE('B____')    -->   Beş harfli Baş harfi B olan üyeleri listeler.
-------------------------------------------------------------------------------------------------------

2) INSERT İfadesi


-- Tablolara yeni veri girmek için kullanılır.


 insert into il values(20,'denizli') --> il tablosuna pilaka no su 20 olan denizli ilini  ekledik. Parantez içerisini tabloda kullanılan sutun kadar doldurabiliriz.
 insert into il values(11,'Bilecik')
Select * from il --> eklendiğini görmek için il tablosunu listeliyoruz.


--------------------------------------------------------------------------------------------

3)UPDATE ifadesi  


-- Tabloda bulunun kayıtları değiştirmek güncellemek için kullanılır.

 update  il set iladi='ankara' where ilpno=6 --> plakası 6 olan şehrin ismini ankara yapıYoruz. set terimiyle değiştirmek istedİğimiz sÜtun üzerindE işlem yapıyoruz.

------------------------------------------------------------------------------------------------------------


4)DELETE ifadesi

--Tablonun içerisindeki kayıtların tamamını veya belirli koşula uyanları siler.


delete from Soru where SNo=10  --> SNo' su 10 olan soruyu siler.
delet from Uye where UNO=5     --> UNO 'su 5 olan üyeyi siler.
------------------------------------------------------------------------------------------------------------


DCL (Veri Kontrol Dili)


1) GRANT ifadesi

--Kullanıcıya çeşitli izinler vermek için kullanılır.

 grant all on yarisma to user1                    -->  user1 kullanıcısına tüm izinleri verir.
 grant create table on yarisma to user2      -->  user2 kullanıcısına tablo oluşturma izni verir.

2)DENY ifadesi

-- Kulanıcının veritabanı ve veritabanındaki nesleler üzeindeki çeşitli işlemleri yapmasını engellemek için kullanılır.
 deny all on yarisma to user1 -->  user1 kullanıcısının tüm izinlerini kapatır.
 deny create table on yarisma to user1 -->  user1 kullanıcısından tablo oluşturma yetkisini elinden alırız.
 deny insert, delete, update,select on yarisma to user1 --> insert, delete, update ve select işlemlerini user1 kullanamaz.

 3)REVOKE ifadesi


-- Engellenen tüm ifadeleri kaldırır.
 revoke all from public
 revoke select on yarisma from public -- secim için engellenen yetkileri kaldırır.


-----------------------------------------------------------------------------------------------------------------

TEK TABLO İÇİNDE SORGULAMALAR


1) DISTINCT 

--Tekrarlanan satır ve sütünları engeller

Select distinct UAdi From Uye

SORGU SONUCUNU SIRALAMA

--2 ORDER BY>>>> tabloda kayıtların sıralanmasını sağlar.


Select UNo From Uye order by UNo asc --> asc üyeleri UNo 'suna göre küçükten büyüğe sıralar.

Select UNo From Uye order by UNo desc --> desc üyeleri UNo 'suna göre büyükten küçüğe sıralar.


BETWEEN, AND yapısı

--Birden fazla şartı sıralar

Select *from Uye where UAdi LIKE 'B%' or UNo between 5 and 7 -- Baş harfi Bile başlayan veya UNo 'su 5 ile 7 arasında olan üyeleri listeleriz.

AS ifadesi 

-- Sütüna takma isim vermek için veya ismini değiştirmek için

Select UAdi AS "üyeadı" from Uye --> UAdi  sütununun adını as ifadesiyle üyeadi olarak değiştirdik.


----- Sütünlar üzerinde aritmetiksel işlemler--------


Select SPuan, Spuan+10 as "name" from Soru --> Burada soru tablosunun SPuan sütununu ve  SPuan 'a 10 ekleyerek as ifadesiyle sütunun ismini name yaparak listeledik.

--------------Sütunların birleştirilmesi--------------


Select UNo, (UAdi  +' '+ UASoyadi) as "adsoyad" from Uye -->UNo ile birlikte adsoyad İsimli yeni oluşturulan sütunun altında UAdi ve UASoyadi birleştirerek  Uye tablosunun istenilen sütunları listelenmiştir.

Koşula bağlı sorgulamalarda where ve order by kullanılacaksa önce where yazılmalı


Select *from Uye where UNo>=3 order by UNo --> UNo' su 3'e eşit ve büyük olanları küçükten büyüğe sıralar.

------------FONKSİYONLAR-----------


1) SUBSTRİNG()  Fonksiyonu

-- Veri kümesi içindeki bilgilerin başlangıç olarak belirtilen pozisyondan başlayarak belirtilen karakter sayısı kadar alınmasını sağlar.

select uno, substring(uadi,2,4) as "yeniad" from uye --> yeniad sütunu altında uadi yani üye adının 2. harfinden 4. harfine kadar olan karakterleri listeler.



2 )LOWER(), UPPER() Fonksiyonları 

 Lower verilerin değeri küçük harfe, upper ise büyük harfe çevirir.

Select UPPER(İlAdi) from İl --> Listelenen il adlarının bütün karakterleri Büyük harf olur.
Select lower(İlAdi) from İl -->Listelenen il adlarının bütün karakterleri küçük harf olur.

3) TRIM() , RTRIM() , LTRIM() Fonksiyonları

-- Boşlukları kaldırır.

select ltrim(uadi) as uadi, usoyadi from uye --> uye adının solundaki yani başındaki boşlukları siler.
select rtrim(uadi) as uadi, usoyadi from uye --> uye adının sağındaki yani sonundaki boşlukları siler.


4 LEN() , LENGTH() Fonksiyonları

-- Karakter sayısını bulma
select uadi,len(uadi) as "karakter sayısı" from uye --> Üye adlarının karakter sayılarını "karakter sayısı" sütunu altında listeler.


5) REPLACE() Fonksiyonları

--Yer değiştirmek için kullanılır.

select uadi,usoyadi, replace(uadi,'sezer','osman') as "lakap" from uye --> sezer ismi osman ismiyle değitirilecek.


6) REVERSE() Fonksiyonları

--Tersten yazdırma işlemleri için kullanılır.
select uadi,reverse(upper (uadi)) from uye --> uadi' nın karakterlerini büyük harfe çevirip tersten yazdırdık.

7) ABS()  Fonksiyonu

Mutlak değer alma işlemi
Select ABS(-1.25) as "mutlak_değer_karşılığı" --> "mutlak_değer_karşılığı" isimli sütunun altında 1.25 yani sayının mutlak değeri verilecektir.


8) FLOOR(), CEILING(),ROUND() Fonksiyonları

-- Aşağı-Yukarı ve en yakın değere yuvarlama işlemlerini yaparlar.
Select FLOOR(1.256) --> Aşağıya yuvarlar. Yani yeni değer 1 olur.
Select CEILING(1.256)-->Yukarıya yuvarlar. Yani yeni değer  2 olur.
Select round(1.26,1) -->  Verilen sayısal ifadeyi yuvarlamak için kullanılır. Yuvarlama işlemi 5 ten küçük değerler için aşağı, 5 ve 5 ten büyük değerler için yukarı yönlü yuvarlama olur. Sonuç olarak yeni değer 1.30 olur.

9) POWER() Fonksiyonu

--Üst alma işlemlerini yapmak için kullanılır.
select power(2,3) --> yani 2 üstü 3 = 8 sonucunu döndürür.

10) SQRT() Fonksiyonu

Karekök almak için kullanılan fonksiyondur.

Select sqrt(4) --> 2 sonucunu döndürür.

11) SUM() Fonksiyonu

Toplam bulma fonksiyonu olarak kullanılır.

select sum(Spuan) from soru -- Soru tablosundaki listelenen Spuan'ların toplamını  döndürür.


12) AVG() Fonksiyonu

Ortalama değer hesaplama fonksiyonu olarak kullanılır.

Select round(AVG(Spuan),1) from Soru -->  ortalaması alınan Spuan'ların yuvarlama işleminden sonra listele.

13) Max(),Min() Fonksiyonları

Select MAX(Spuan) from Soru -->En yüksek Spuan listeler.
Select MIN(Spuan) from Soru -->En düşük Spuan'ı listeler.


14) Count() Fonksiyonu

-- Satır sayısını bulur.
Select count(Spuan) from soru --> Alt alta kaç satır olduğunu dönderir.

15) GETDATE 

--Güncel saat bilgisini verir.

select GETDATE()
select DATEPART(YEAR,GETDATE())
select DATEPART(DAY,GETDATE())
select DATEPART(HOUR,GETDATE())
select DATEPART(MINUTE,GETDATE())


1)  GROUP BY

GRUPLANDIRMA İŞLEMİNDE KULLANILAN FONKSİYONLAR


a) AVG() 

--Ortalamaya göre gruplandırma.

select  UNo,AVG(SPuan) as ort from Soru where UNo>=3 Group By UNo order by UNo desc

b) Count() 

Grupların içerdikleri satır sayısını verir.

select  UNo,Count(SPuan) as satirsayisi from Soru Group By UNo

select  UAdi,Count(UAdi) as satirsayisi from Uye Group By UAdi

c) Max() 

Gruptaki sütünün maxını bulur.

select  UNo ,MAX(SPuan) as maxı from Soru Group By UNo

d) Min()

Gruptaki sütünün minimumunu bulur.

select  UNo ,MIN(SPuan) as mini from Soru Group By UNo


---------Birden fazla sütuna göre gruplandırma---------

select  SBaslik,UNo ,MAX(SPuan) as maxı,MIN(SPuan) as mini from Soru Group By UNo,SBaslik

Gruplandırma koşul ifadeleri (Having )

HAVING Group By dan sonra order by dan önce kullanılır.

select  SBaslik ,(max(SPuan) -min(SPuan)) as Fark from Soru Group By SBaslik Having (max(SPuan) -MIN(SPuan))>5



------------------------Birden Fazla Tablo Üzerinde Sorgulama--------------------

A) Tablolara Takma İsim Kullanma

select distinct uyem.UAdi,sorum.SBaslik from uye uyem,soru sorum where uyem.UNo=sorum.UNo


select distinct  Uye.UNo,Soru.SNo,Soru.C1 from Uye ,Soru  where Uye.Uno=Soru.UNo and soru.C1='a'  and Uye.UNo in (select Uno from Soru)


Trigger Nedir?

Veritabanı tablolarında bazı olaylar meydana geldiğinde çalışan küçük kod parçalarına trigger denir. Bu olaylardan daha önce DML  konusunda bahsetmiştik. Listeleyecek olursak bu olaylar aşağıdakilerdir:

  • Insert 
  • Select
  • Update
Trigger oluşturmak:

CREATE TRIGGER trigger_adi
 ON tablo_adi
 AFTER veya INSTEAD OF (INSERT veya UPDATE veya DELETE)
 AS
 Sql ifadeler

Trigger enable/disable yapmak:

disable trigger trigger_adı On tablo_adı
enable trigger trigger_adı On tablo_adı


Delete Trigger

Burada kullanicilar tablosundaki silinen verilerimizi yeni bir tabloya yani silinenkullanicilar tablosuna trigger yardımıyla ekledik.

use deneme
create trigger tr_silinenkullanici on kullanicilar
After delete
As
Begin
Declare @ID int 
Declare @kadi nvarchar(50)
Declare @sifre nvarchar(50)
Declare @adi varchar(50)
Declare @soyad nvarchar(50)
Declare @yetki nvarchar(50)
Select @ID=kId from deleted
Select @kadi=k_adi from deleted
Select @sifre=sifre from deleted
Select @Adi=kadi from deleted
Select @soyad=ksoyadi from deleted
Select @yetki=yetki from deleted
Insert into silinenkullanicilar values(@ID,@kadi,@sifre,@adi,@soyad,@yetki)
End




Insert Trigger 


Tablo üzerindeki kayıt ya da kayıtlarda güncelleme olduğunda devreye girecek olan triggerdir. INSERT ve DELETE triggerden biraz farklıdır. Farkı ise UPDATE trigger devreye girdiğinde Inserted sahte tablosu asıl tablodaki kayıtlardan, düzenlenmiş kayıtların kopyasını, Deleted sahte tablosu ise kayıtların düzenleme işleminden önceki hallerini tutar.

satisyap  tablosuna veri eklediğimiz zaman yani insert ile ürün eklendiği zaman 
devreye girecek triggerımız stok tablosundaki verilerimizin sayısını azlatacaktır.


create trigger tr_stokazaltir on satisyap 
after insert
as 
begin
declare @urunId int 
declare @satinaladet int 
declare @satiurun int 
select @urunId=satisurun, @satinaladet=satisadet from inserted
update urunler set adet=adet-@satinaladet
where urunId=@urunId
end